fix(deps): bump react-aria versions (#4998)

* fix(deps): bump react-aria versions

* chore(changeset): add changeset

* chore(hooks): sync with RA's useButton

* fix(use-aria-button): support aria-current

* fix(docs): remove priority prop

* fix(toast): remove priority queue & animation

* fix(toast): remove deprecated logic

* fix(popover): avoid passing preventFocusOnPress to non heroui button

* fix: sync with UsePopover

* fix(popover): prevent submenus from closing on scroll

* fix(tests): test cases related to press refactoring
This commit is contained in:
աӄա 2025-03-08 23:20:38 +08:00 committed by GitHub
parent 9a95a71aef
commit 88f164116c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
69 changed files with 1608 additions and 1503 deletions

View File

@ -0,0 +1,55 @@
---
"@heroui/use-intersection-observer": patch
"@heroui/use-aria-accordion-item": patch
"@heroui/use-aria-modal-overlay": patch
"@heroui/use-aria-multiselect": patch
"@heroui/use-aria-accordion": patch
"@heroui/autocomplete": patch
"@heroui/number-input": patch
"@heroui/breadcrumbs": patch
"@heroui/date-picker": patch
"@heroui/date-input": patch
"@heroui/pagination": patch
"@heroui/use-aria-button": patch
"@heroui/accordion": patch
"@heroui/input-otp": patch
"@heroui/use-disclosure": patch
"@heroui/use-pagination": patch
"@heroui/aria-utils": patch
"@heroui/calendar": patch
"@heroui/checkbox": patch
"@heroui/dropdown": patch
"@heroui/progress": patch
"@heroui/use-aria-link": patch
"@heroui/use-draggable": patch
"@heroui/divider": patch
"@heroui/listbox": patch
"@heroui/popover": patch
"@heroui/snippet": patch
"@heroui/tooltip": patch
"@heroui/avatar": patch
"@heroui/button": patch
"@heroui/navbar": patch
"@heroui/select": patch
"@heroui/slider": patch
"@heroui/switch": patch
"@heroui/alert": patch
"@heroui/input": patch
"@heroui/modal": patch
"@heroui/radio": patch
"@heroui/table": patch
"@heroui/toast": patch
"@heroui/card": patch
"@heroui/chip": patch
"@heroui/form": patch
"@heroui/link": patch
"@heroui/menu": patch
"@heroui/tabs": patch
"@heroui/user": patch
"@heroui/system-rsc": patch
"@heroui/kbd": patch
"@heroui/system": patch
"@heroui/react": patch
---
bump RA versions

View File

@ -129,9 +129,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>
@ -177,9 +177,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>

View File

@ -144,9 +144,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>
@ -192,9 +192,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>
@ -214,9 +214,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>
@ -252,9 +252,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>

View File

@ -167,9 +167,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>
@ -215,9 +215,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>
@ -237,9 +237,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>
@ -262,9 +262,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>
@ -282,9 +282,9 @@ in multiple formats into `ZonedDateTime` objects.
<PackageManagers
commands={{
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.5",
npm: "npm install @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
yarn: "yarn add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
pnpm: "pnpm add @internationalized/date@3.7.0 @react-aria/i18n@3.12.6",
}}
/>

View File

@ -258,12 +258,6 @@ Toast has the following slots:
description: "The loading icon for toasts with promise prop - overrides the default loading icon",
default: "-"
},
{
attribute: "priority",
type: "number | undefined",
description: "Priority at which the toast will be displayed",
default: "undefined",
},
{
attribute: "hideIcon",
type: "boolean",

View File

@ -40,17 +40,17 @@
"@internationalized/date": "3.7.0",
"@mapbox/rehype-prism": "^0.6.0",
"@radix-ui/react-scroll-area": "^1.0.5",
"@react-aria/focus": "3.19.1",
"@react-aria/i18n": "3.12.5",
"@react-aria/interactions": "3.23.0",
"@react-aria/selection": "3.22.0",
"@react-aria/focus": "3.20.0",
"@react-aria/i18n": "3.12.6",
"@react-aria/interactions": "3.24.0",
"@react-aria/selection": "3.23.0",
"@react-aria/ssr": "3.9.7",
"@react-aria/utils": "3.27.0",
"@react-aria/virtualizer": "4.1.1",
"@react-aria/visually-hidden": "3.8.19",
"@react-stately/data": "3.12.1",
"@react-stately/layout": "4.1.1",
"@react-stately/tree": "3.8.7",
"@react-aria/utils": "3.28.0",
"@react-aria/virtualizer": "4.1.2",
"@react-aria/visually-hidden": "3.8.20",
"@react-stately/data": "3.12.2",
"@react-stately/layout": "4.2.0",
"@react-stately/tree": "3.8.8",
"@rehooks/local-storage": "^2.4.5",
"@stackblitz/sdk": "^1.11.0",
"@tanstack/react-virtual": "3.11.3",
@ -111,9 +111,9 @@
"@docusaurus/utils": "2.0.0-beta.3",
"@next/bundle-analyzer": "14.3.0-canary.43",
"@next/env": "14.3.0-canary.43",
"@react-types/calendar": "3.6.0",
"@react-types/datepicker": "3.10.0",
"@react-types/shared": "3.27.0",
"@react-types/calendar": "3.6.1",
"@react-types/datepicker": "3.11.0",
"@react-types/shared": "3.28.0",
"@tailwindcss/typography": "^0.5.9",
"@types/canvas-confetti": "^1.4.2",
"@types/marked": "^5.0.0",

View File

@ -55,13 +55,13 @@
"@heroui/divider": "workspace:*",
"@heroui/use-aria-accordion": "workspace:*",
"@heroui/dom-animation": "workspace:*",
"@react-aria/interactions": "3.23.0",
"@react-aria/focus": "3.19.1",
"@react-aria/utils": "3.27.0",
"@react-stately/tree": "3.8.7",
"@react-aria/button": "3.11.1",
"@react-aria/interactions": "3.24.0",
"@react-aria/focus": "3.20.0",
"@react-aria/utils": "3.28.0",
"@react-stately/tree": "3.8.8",
"@react-aria/button": "3.12.0",
"@react-types/accordion": "3.0.0-alpha.26",
"@react-types/shared": "3.27.0"
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -48,7 +48,7 @@
"@heroui/shared-icons": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@react-stately/utils": "3.10.5",
"@react-aria/utils": "3.27.0",
"@react-aria/utils": "3.28.0",
"@heroui/button": "workspace:*"
},
"devDependencies": {

View File

@ -54,15 +54,15 @@
"@heroui/spinner": "workspace:*",
"@heroui/use-aria-button": "workspace:*",
"@heroui/use-safe-layout-effect": "workspace:*",
"@react-aria/combobox": "3.11.1",
"@react-aria/focus": "3.19.1",
"@react-aria/i18n": "3.12.5",
"@react-aria/interactions": "3.23.0",
"@react-aria/utils": "3.27.0",
"@react-aria/visually-hidden": "3.8.19",
"@react-stately/combobox": "3.10.2",
"@react-types/combobox": "3.13.2",
"@react-types/shared": "3.27.0"
"@react-aria/combobox": "3.12.0",
"@react-aria/focus": "3.20.0",
"@react-aria/i18n": "3.12.6",
"@react-aria/interactions": "3.24.0",
"@react-aria/utils": "3.28.0",
"@react-aria/visually-hidden": "3.8.20",
"@react-stately/combobox": "3.10.3",
"@react-types/combobox": "3.13.3",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/avatar": "workspace:*",
@ -72,7 +72,7 @@
"@heroui/system": "workspace:*",
"@heroui/theme": "workspace:*",
"@heroui/use-infinite-scroll": "workspace:*",
"@react-stately/data": "3.12.1",
"@react-stately/data": "3.12.2",
"clean-package": "2.2.0",
"framer-motion": "11.9.0",
"react": "18.3.0",

View File

@ -43,9 +43,9 @@
"@heroui/shared-utils": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@heroui/use-image": "workspace:*",
"@react-aria/interactions": "3.23.0",
"@react-aria/focus": "3.19.1",
"@react-aria/utils": "3.27.0"
"@react-aria/interactions": "3.24.0",
"@react-aria/focus": "3.20.0",
"@react-aria/utils": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -43,11 +43,11 @@
"@heroui/react-utils": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/shared-icons": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/breadcrumbs": "3.5.20",
"@react-aria/utils": "3.27.0",
"@react-types/breadcrumbs": "3.7.10",
"@react-types/shared": "3.27.0"
"@react-aria/focus": "3.20.0",
"@react-aria/breadcrumbs": "3.5.21",
"@react-aria/utils": "3.28.0",
"@react-types/breadcrumbs": "3.7.11",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -46,12 +46,12 @@
"@heroui/use-aria-button": "workspace:*",
"@heroui/ripple": "workspace:*",
"@heroui/spinner": "workspace:*",
"@react-aria/button": "3.11.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/utils": "3.27.0",
"@react-aria/focus": "3.19.1",
"@react-types/shared": "3.27.0",
"@react-types/button": "3.10.2"
"@react-aria/button": "3.12.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/utils": "3.28.0",
"@react-aria/focus": "3.20.0",
"@react-types/shared": "3.28.0",
"@react-types/button": "3.11.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -2,7 +2,8 @@
import * as React from "react";
import {render, act, fireEvent} from "@testing-library/react";
import {CalendarDate} from "@internationalized/date";
import {keyCodes, triggerPress, type} from "@heroui/test-utils";
import {keyCodes, triggerPress, pointerMap, type} from "@heroui/test-utils";
import userEvent from "@testing-library/user-event";
import {RangeCalendar as RangeCalendarCalendarBase, RangeCalendarProps} from "../src";
@ -25,9 +26,13 @@ const RangeCalendar = React.forwardRef(
RangeCalendar.displayName = "RangeCalendar";
describe("RangeCalendar", () => {
let user;
beforeAll(() => {
user = userEvent.setup({delay: null, pointerMap});
jest.useFakeTimers();
});
afterEach(() => {
act(() => {
jest.runAllTimers();
@ -195,7 +200,7 @@ describe("RangeCalendar", () => {
let nextButton = getByTestId("next-button");
triggerPress(nextButton);
await user.click(nextButton);
selected = getAllByLabelText("selected", {exact: false}).filter(
(cell) => cell.getAttribute("aria-disabled") !== "true",
@ -232,7 +237,7 @@ describe("RangeCalendar", () => {
let prevButton = getByTestId("prev-button");
triggerPress(prevButton);
await user.click(prevButton);
expect(heading).toHaveTextContent("June 2019");
gridCells = getAllByRole("gridcell").filter(

View File

@ -49,17 +49,17 @@
"@heroui/button": "workspace:*",
"@heroui/dom-animation": "workspace:*",
"@internationalized/date": "3.7.0",
"@react-aria/calendar": "3.7.0",
"@react-aria/focus": "3.19.1",
"@react-aria/i18n": "3.12.5",
"@react-stately/calendar": "3.7.0",
"@react-types/button": "3.10.2",
"@react-aria/visually-hidden": "3.8.19",
"@react-aria/utils": "3.27.0",
"@react-aria/calendar": "3.7.1",
"@react-aria/focus": "3.20.0",
"@react-aria/i18n": "3.12.6",
"@react-stately/calendar": "3.7.1",
"@react-types/button": "3.11.0",
"@react-aria/visually-hidden": "3.8.20",
"@react-aria/utils": "3.28.0",
"@react-stately/utils": "3.10.5",
"@react-types/calendar": "3.6.0",
"@react-aria/interactions": "3.23.0",
"@react-types/shared": "3.27.0",
"@react-types/calendar": "3.6.1",
"@react-aria/interactions": "3.24.0",
"@react-types/shared": "3.28.0",
"scroll-into-view-if-needed": "3.0.10",
"@types/lodash.debounce": "^4.0.7"
},

View File

@ -45,11 +45,11 @@
"@heroui/react-utils": "workspace:*",
"@heroui/use-aria-button": "workspace:*",
"@heroui/ripple": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/utils": "3.27.0",
"@react-aria/interactions": "3.23.0",
"@react-aria/button": "3.11.1",
"@react-types/shared": "3.27.0"
"@react-aria/focus": "3.20.0",
"@react-aria/utils": "3.28.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/button": "3.12.0",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -45,15 +45,15 @@
"@heroui/shared-utils": "workspace:*",
"@heroui/use-callback-ref": "workspace:*",
"@heroui/use-safe-layout-effect": "workspace:*",
"@react-aria/checkbox": "3.15.1",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/utils": "3.27.0",
"@react-aria/visually-hidden": "3.8.19",
"@react-stately/checkbox": "3.6.11",
"@react-stately/toggle": "3.8.1",
"@react-types/checkbox": "3.9.1",
"@react-types/shared": "3.27.0"
"@react-aria/checkbox": "3.15.2",
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/utils": "3.28.0",
"@react-aria/visually-hidden": "3.8.20",
"@react-stately/checkbox": "3.6.12",
"@react-stately/toggle": "3.8.2",
"@react-types/checkbox": "3.9.2",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/chip": "workspace:*",

View File

@ -43,10 +43,10 @@
"@heroui/shared-icons": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/utils": "3.27.0",
"@react-types/checkbox": "3.9.1"
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/utils": "3.28.0",
"@react-types/checkbox": "3.9.2"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -44,12 +44,12 @@
"@heroui/react-utils": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@internationalized/date": "3.7.0",
"@react-aria/datepicker": "3.13.0",
"@react-aria/i18n": "3.12.5",
"@react-stately/datepicker": "3.12.0",
"@react-types/datepicker": "3.10.0",
"@react-types/shared": "3.27.0",
"@react-aria/utils": "3.27.0"
"@react-aria/datepicker": "3.14.0",
"@react-aria/i18n": "3.12.6",
"@react-stately/datepicker": "3.13.0",
"@react-types/datepicker": "3.11.0",
"@react-types/shared": "3.28.0",
"@react-aria/utils": "3.28.0"
},
"devDependencies": {
"@heroui/system": "workspace:*",

View File

@ -383,12 +383,15 @@ describe("DatePicker", () => {
expect(onFocusChangeSpy).not.toHaveBeenCalled();
expect(onFocusSpy).not.toHaveBeenCalled();
triggerPress(button);
await user.click(button);
act(() => jest.runAllTimers());
let dialog = getByRole("dialog");
expect(dialog).toBeVisible();
expect(onBlurSpy).not.toHaveBeenCalled();
expect(onFocusChangeSpy).toHaveBeenCalledTimes(1);
expect(onFocusSpy).toHaveBeenCalledTimes(1);
//@ts-ignore
fireEvent.keyDown(document.activeElement, {key: "Escape"});
@ -409,9 +412,15 @@ describe("DatePicker", () => {
expect(dialog).not.toBeInTheDocument();
expect(document.activeElement).toBe(button);
expect(button).toHaveFocus();
expect(onBlurSpy).not.toHaveBeenCalled();
expect(onFocusChangeSpy).toHaveBeenCalledTimes(1);
expect(onFocusSpy).toHaveBeenCalledTimes(1);
await user.tab();
expect(document.body).toHaveFocus();
expect(onBlurSpy).toHaveBeenCalledTimes(1);
expect(onFocusChangeSpy).toHaveBeenCalledTimes(2);
expect(onFocusSpy).toHaveBeenCalledTimes(1);
});
it("should trigger right arrow key event for segment navigation", async function () {

View File

@ -51,14 +51,14 @@
"@heroui/react-utils": "workspace:*",
"@heroui/shared-icons": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@react-aria/datepicker": "3.13.0",
"@react-aria/i18n": "3.12.5",
"@react-aria/utils": "3.27.0",
"@react-stately/datepicker": "3.12.0",
"@react-stately/overlays": "3.6.13",
"@react-aria/datepicker": "3.14.0",
"@react-aria/i18n": "3.12.6",
"@react-aria/utils": "3.28.0",
"@react-stately/datepicker": "3.13.0",
"@react-stately/overlays": "3.6.14",
"@react-stately/utils": "3.10.5",
"@react-types/datepicker": "3.10.0",
"@react-types/shared": "3.27.0"
"@react-types/datepicker": "3.11.0",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/radio": "workspace:*",

View File

@ -42,7 +42,7 @@
"@heroui/shared-utils": "workspace:*",
"@heroui/react-rsc-utils": "workspace:*",
"@heroui/system-rsc": "workspace:*",
"@react-types/shared": "3.27.0"
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -46,11 +46,11 @@
"@heroui/popover": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/menu": "3.17.0",
"@react-aria/utils": "3.27.0",
"@react-stately/menu": "3.9.1",
"@react-types/menu": "3.9.14"
"@react-aria/focus": "3.20.0",
"@react-aria/menu": "3.18.0",
"@react-aria/utils": "3.28.0",
"@react-stately/menu": "3.9.2",
"@react-types/menu": "3.9.15"
},
"devDependencies": {
"@heroui/avatar": "workspace:*",

View File

@ -44,10 +44,10 @@
"@heroui/shared-utils": "workspace:*",
"@heroui/system": "workspace:*",
"@heroui/theme": "workspace:*",
"@react-aria/utils": "3.27.0",
"@react-types/shared": "3.27.0",
"@react-stately/form": "3.1.1",
"@react-types/form": "3.7.9"
"@react-aria/utils": "3.28.0",
"@react-types/shared": "3.28.0",
"@react-stately/form": "3.1.2",
"@react-types/form": "3.7.10"
},
"devDependencies": {
"@heroui/button": "workspace:*",

View File

@ -43,13 +43,13 @@
"@heroui/form": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@react-aria/utils": "3.27.0",
"@react-aria/form": "3.0.12",
"@react-aria/utils": "3.28.0",
"@react-aria/form": "3.0.13",
"@react-stately/utils": "3.10.5",
"@react-stately/form": "3.1.1",
"@react-types/textfield": "3.11.0",
"@react-stately/form": "3.1.2",
"@react-types/textfield": "3.12.0",
"input-otp": "1.4.1",
"@react-aria/focus": "3.19.1"
"@react-aria/focus": "3.20.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -45,13 +45,13 @@
"@heroui/shared-icons": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/use-safe-layout-effect": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/textfield": "3.16.0",
"@react-aria/utils": "3.27.0",
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/textfield": "3.17.0",
"@react-aria/utils": "3.28.0",
"@react-stately/utils": "3.10.5",
"@react-types/shared": "3.27.0",
"@react-types/textfield": "3.11.0",
"@react-types/shared": "3.28.0",
"@react-types/textfield": "3.12.0",
"react-textarea-autosize": "^8.5.3"
},
"devDependencies": {

View File

@ -42,7 +42,7 @@
"@heroui/system-rsc": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@react-aria/utils": "3.27.0"
"@react-aria/utils": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -44,10 +44,10 @@
"@heroui/shared-icons": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@heroui/use-aria-link": "workspace:*",
"@react-aria/link": "3.7.8",
"@react-aria/utils": "3.27.0",
"@react-aria/focus": "3.19.1",
"@react-types/link": "3.5.10"
"@react-aria/link": "3.7.9",
"@react-aria/utils": "3.28.0",
"@react-aria/focus": "3.20.0",
"@react-types/link": "3.5.11"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -46,13 +46,13 @@
"@heroui/shared-utils": "workspace:*",
"@heroui/use-is-mobile": "workspace:*",
"@tanstack/react-virtual": "3.11.3",
"@react-aria/utils": "3.27.0",
"@react-aria/listbox": "3.14.0",
"@react-stately/list": "3.11.2",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-types/menu": "3.9.14",
"@react-types/shared": "3.27.0"
"@react-aria/utils": "3.28.0",
"@react-aria/listbox": "3.14.1",
"@react-stately/list": "3.12.0",
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-types/menu": "3.9.15",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/avatar": "workspace:*",

View File

@ -45,14 +45,14 @@
"@heroui/use-is-mobile": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/menu": "3.17.0",
"@react-aria/utils": "3.27.0",
"@react-stately/menu": "3.9.1",
"@react-stately/tree": "3.8.7",
"@react-types/menu": "3.9.14",
"@react-types/shared": "3.27.0"
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/menu": "3.18.0",
"@react-aria/utils": "3.28.0",
"@react-stately/menu": "3.9.2",
"@react-stately/tree": "3.8.8",
"@react-types/menu": "3.9.15",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -50,13 +50,13 @@
"@heroui/shared-icons": "workspace:*",
"@heroui/use-aria-modal-overlay": "workspace:*",
"@heroui/dom-animation": "workspace:*",
"@react-aria/dialog": "3.5.21",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/overlays": "3.25.0",
"@react-aria/utils": "3.27.0",
"@react-stately/overlays": "3.6.13",
"@react-types/overlays": "3.8.12"
"@react-aria/dialog": "3.5.22",
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/overlays": "3.26.0",
"@react-aria/utils": "3.28.0",
"@react-stately/overlays": "3.6.14",
"@react-types/overlays": "3.8.13"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -46,12 +46,12 @@
"@heroui/framer-utils": "workspace:*",
"@heroui/use-scroll-position": "workspace:*",
"@heroui/dom-animation": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/button": "3.11.1",
"@react-aria/overlays": "3.25.0",
"@react-aria/utils": "3.27.0",
"@react-stately/toggle": "3.8.1",
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/button": "3.12.0",
"@react-aria/overlays": "3.26.0",
"@react-aria/utils": "3.28.0",
"@react-stately/toggle": "3.8.2",
"@react-stately/utils": "3.10.5"
},
"devDependencies": {

View File

@ -48,16 +48,16 @@
"@heroui/shared-icons": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/use-safe-layout-effect": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/i18n": "3.12.5",
"@react-aria/interactions": "3.23.0",
"@react-aria/numberfield": "3.11.10",
"@react-aria/utils": "3.27.0",
"@react-aria/focus": "3.20.0",
"@react-aria/i18n": "3.12.6",
"@react-aria/interactions": "3.24.0",
"@react-aria/numberfield": "3.11.11",
"@react-aria/utils": "3.28.0",
"@react-stately/utils": "3.10.5",
"@react-stately/numberfield": "3.9.9",
"@react-types/shared": "3.27.0",
"@react-types/numberfield": "3.8.8",
"@react-types/button": "3.10.2"
"@react-stately/numberfield": "3.9.10",
"@react-types/shared": "3.28.0",
"@react-types/numberfield": "3.8.9",
"@react-types/button": "3.11.0"
},
"devDependencies": {
"@heroui/system": "workspace:*",

View File

@ -45,10 +45,10 @@
"@heroui/shared-icons": "workspace:*",
"@heroui/use-intersection-observer": "workspace:*",
"@heroui/use-pagination": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/i18n": "3.12.5",
"@react-aria/interactions": "3.23.0",
"@react-aria/utils": "3.27.0",
"@react-aria/focus": "3.20.0",
"@react-aria/i18n": "3.12.6",
"@react-aria/interactions": "3.24.0",
"@react-aria/utils": "3.28.0",
"scroll-into-view-if-needed": "3.0.10"
},
"devDependencies": {

View File

@ -254,9 +254,9 @@ describe("Popover", () => {
await act(async () => {
// open popover
await user.click(trigger);
await user.pointer({target: trigger, keys: "[MouseLeft>]"});
// close popover
await user.click(trigger);
await user.pointer({target: trigger, keys: "[/MouseLeft]"});
// assert that the focus is restored back to trigger
expect(trigger).toHaveFocus();
});

View File

@ -49,14 +49,14 @@
"@heroui/use-aria-button": "workspace:*",
"@heroui/use-safe-layout-effect": "workspace:*",
"@heroui/dom-animation": "workspace:*",
"@react-aria/dialog": "3.5.21",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/overlays": "3.25.0",
"@react-aria/utils": "3.27.0",
"@react-stately/overlays": "3.6.13",
"@react-types/button": "3.10.2",
"@react-types/overlays": "3.8.12"
"@react-aria/dialog": "3.5.22",
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/overlays": "3.26.0",
"@react-aria/utils": "3.28.0",
"@react-stately/overlays": "3.6.14",
"@react-types/button": "3.11.0",
"@react-types/overlays": "3.8.13"
},
"devDependencies": {
"@heroui/card": "workspace:*",

View File

@ -47,6 +47,12 @@ const PopoverTrigger = (props: PopoverTriggerProps) => {
return triggerChildren?.[0] !== undefined;
}, [triggerChildren]);
if (!hasHeroUIButton) {
// delete `preventFocusOnPress` introduced from useMenuTrigger
// to avoid passing it to non-HeroUI Button components
delete restProps["preventFocusOnPress"];
}
return cloneElement(
child,
mergeProps(restProps, hasHeroUIButton ? {onPress, isDisabled} : buttonProps),

View File

@ -9,6 +9,7 @@ import {
import {
OverlayPlacement,
ariaHideOutside,
keepVisible,
toReactAriaPlacement,
ariaShouldCloseOnInteractOutside,
} from "@heroui/aria-utils";
@ -62,6 +63,7 @@ export function useReactAriaPopover(
state: OverlayTriggerState,
): PopoverAria {
const {
groupRef,
triggerRef,
popoverRef,
showArrow,
@ -84,12 +86,14 @@ export function useReactAriaPopover(
const isNonModal = isNonModalProp ?? true;
const isSubmenu = otherProps["trigger"] === "SubmenuTrigger";
const {overlayProps, underlayProps} = useOverlay(
{
isOpen: state.isOpen,
onClose: state.close,
shouldCloseOnBlur,
isDismissable,
isDismissable: isDismissable || isSubmenu,
isKeyboardDismissDisabled,
shouldCloseOnInteractOutside: shouldCloseOnInteractOutside
? shouldCloseOnInteractOutside
@ -115,7 +119,7 @@ export function useReactAriaPopover(
containerPadding,
placement: toReactAriaPlacement(placementProp),
offset: showArrow ? offset + 3 : offset,
onClose: isNonModal && shouldCloseOnScroll ? state.close : () => {},
onClose: isNonModal && !isSubmenu && shouldCloseOnScroll ? state.close : () => {},
});
useSafeLayoutEffect(() => {
@ -125,10 +129,14 @@ export function useReactAriaPopover(
}, updatePositionDeps);
useEffect(() => {
if (state.isOpen && !isNonModal && popoverRef.current) {
return ariaHideOutside([popoverRef.current]);
if (state.isOpen && popoverRef.current) {
if (isNonModal) {
return keepVisible(groupRef?.current ?? popoverRef.current);
} else {
return ariaHideOutside([groupRef?.current ?? popoverRef.current]);
}
}
}, [isNonModal, state.isOpen, popoverRef]);
}, [isNonModal, state.isOpen, popoverRef, groupRef]);
return {
popoverProps: mergeProps(overlayProps, positionProps),

View File

@ -43,10 +43,10 @@
"@heroui/shared-utils": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@heroui/use-is-mounted": "workspace:*",
"@react-aria/i18n": "3.12.5",
"@react-aria/progress": "3.4.19",
"@react-aria/utils": "3.27.0",
"@react-types/progress": "3.5.9"
"@react-aria/i18n": "3.12.6",
"@react-aria/progress": "3.4.20",
"@react-aria/utils": "3.28.0",
"@react-types/progress": "3.5.10"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -43,14 +43,14 @@
"@heroui/form": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/radio": "3.10.11",
"@react-aria/utils": "3.27.0",
"@react-aria/visually-hidden": "3.8.19",
"@react-stately/radio": "3.10.10",
"@react-types/radio": "3.8.6",
"@react-types/shared": "3.27.0"
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/radio": "3.11.0",
"@react-aria/utils": "3.28.0",
"@react-aria/visually-hidden": "3.8.20",
"@react-stately/radio": "3.10.11",
"@react-types/radio": "3.8.7",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -53,13 +53,13 @@
"@heroui/use-aria-multiselect": "workspace:*",
"@heroui/use-safe-layout-effect": "workspace:*",
"@heroui/form": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/form": "3.0.12",
"@react-aria/overlays": "3.25.0",
"@react-aria/interactions": "3.23.0",
"@react-aria/utils": "3.27.0",
"@react-aria/visually-hidden": "3.8.19",
"@react-types/shared": "3.27.0",
"@react-aria/focus": "3.20.0",
"@react-aria/form": "3.0.13",
"@react-aria/overlays": "3.26.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/utils": "3.28.0",
"@react-aria/visually-hidden": "3.8.20",
"@react-types/shared": "3.28.0",
"@tanstack/react-virtual": "3.11.3"
},
"devDependencies": {
@ -72,8 +72,8 @@
"@heroui/system": "workspace:*",
"@heroui/theme": "workspace:*",
"@heroui/use-infinite-scroll": "workspace:*",
"@react-aria/i18n": "3.12.5",
"@react-stately/data": "3.12.1",
"@react-aria/i18n": "3.12.6",
"@react-stately/data": "3.12.2",
"clean-package": "2.2.0",
"framer-motion": "11.9.0",
"react": "18.3.0",

View File

@ -43,13 +43,13 @@
"@heroui/shared-utils": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@heroui/tooltip": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/i18n": "3.12.5",
"@react-aria/interactions": "3.23.0",
"@react-aria/slider": "3.7.15",
"@react-aria/utils": "3.27.0",
"@react-aria/visually-hidden": "3.8.19",
"@react-stately/slider": "3.6.1"
"@react-aria/focus": "3.20.0",
"@react-aria/i18n": "3.12.6",
"@react-aria/interactions": "3.24.0",
"@react-aria/slider": "3.7.16",
"@react-aria/utils": "3.28.0",
"@react-aria/visually-hidden": "3.8.20",
"@react-stately/slider": "3.6.2"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -47,8 +47,8 @@
"@heroui/shared-icons": "workspace:*",
"@heroui/use-clipboard": "workspace:*",
"@heroui/tooltip": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/utils": "3.27.0"
"@react-aria/focus": "3.20.0",
"@react-aria/utils": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -43,13 +43,13 @@
"@heroui/shared-utils": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@heroui/use-safe-layout-effect": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/switch": "3.6.11",
"@react-aria/utils": "3.27.0",
"@react-aria/visually-hidden": "3.8.19",
"@react-stately/toggle": "3.8.1",
"@react-types/shared": "3.27.0"
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/switch": "3.7.0",
"@react-aria/utils": "3.28.0",
"@react-aria/visually-hidden": "3.8.20",
"@react-stately/toggle": "3.8.2",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -45,15 +45,15 @@
"@heroui/shared-icons": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/spacer": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/table": "3.16.1",
"@react-aria/utils": "3.27.0",
"@react-aria/visually-hidden": "3.8.19",
"@react-stately/table": "3.13.1",
"@react-stately/virtualizer": "4.2.1",
"@react-types/grid": "3.2.11",
"@react-types/table": "3.10.4",
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/table": "3.17.0",
"@react-aria/utils": "3.28.0",
"@react-aria/visually-hidden": "3.8.20",
"@react-stately/table": "3.14.0",
"@react-stately/virtualizer": "4.3.0",
"@react-types/grid": "3.3.0",
"@react-types/table": "3.11.0",
"@tanstack/react-virtual": "3.11.3"
},
"devDependencies": {
@ -66,7 +66,7 @@
"@heroui/tooltip": "workspace:*",
"@heroui/use-infinite-scroll": "workspace:*",
"@heroui/user": "workspace:*",
"@react-stately/data": "3.12.1",
"@react-stately/data": "3.12.2",
"clean-package": "2.2.0",
"react": "18.3.0",
"react-dom": "18.3.0",

View File

@ -47,13 +47,13 @@
"@heroui/framer-utils": "workspace:*",
"@heroui/use-is-mounted": "workspace:*",
"@heroui/use-update-effect": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/tabs": "3.9.9",
"@react-aria/utils": "3.27.0",
"@react-stately/tabs": "3.7.1",
"@react-types/shared": "3.27.0",
"@react-types/tabs": "3.3.12",
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/tabs": "3.10.0",
"@react-aria/utils": "3.28.0",
"@react-stately/tabs": "3.8.0",
"@react-types/shared": "3.28.0",
"@react-types/tabs": "3.3.13",
"scroll-into-view-if-needed": "3.0.10"
},
"devDependencies": {

View File

@ -46,10 +46,10 @@
"@heroui/shared-icons": "workspace:*",
"@heroui/use-is-mobile": "workspace:*",
"@heroui/spinner": "workspace:*",
"@react-aria/toast": "3.0.0-beta.19",
"@react-aria/utils": "3.27.0",
"@react-aria/interactions": "3.23.0",
"@react-stately/toast": "3.0.0-beta.7",
"@react-aria/toast": "3.0.0",
"@react-aria/utils": "3.28.0",
"@react-aria/interactions": "3.24.0",
"@react-stately/toast": "3.0.0",
"@react-stately/utils": "3.10.5"
},
"devDependencies": {

View File

@ -1,3 +1,4 @@
import {flushSync} from "react-dom";
import {ToastOptions, ToastQueue, useToastQueue} from "@react-stately/toast";
import {useProviderContext} from "@heroui/system";
@ -18,7 +19,17 @@ export const getToastQueue = () => {
if (!globalToastQueue) {
globalToastQueue = new ToastQueue({
maxVisibleToasts: Infinity,
hasExitAnimation: true,
wrapUpdate: (fn: () => void): void => {
if ("startViewTransition" in document) {
document
.startViewTransition(() => {
flushSync(fn);
})
.ready.catch(() => {});
} else {
fn();
}
},
});
}
@ -56,12 +67,7 @@ export const addToast = ({...props}: ToastProps & ToastOptions) => {
if (!globalToastQueue) {
return;
}
const options: Partial<ToastOptions> = {
priority: props?.priority,
};
globalToastQueue.add(props, options);
globalToastQueue.add(props);
};
export const closeAll = () => {

View File

@ -396,24 +396,13 @@ export function useToast<T extends ToastProps>(originalProps: UseToastProps<T>)
"data-placement": placement,
"data-drag-value": dragValue,
"data-toast": true,
"data-animation": toast.animation,
"aria-label": "toast",
onTransitionEnd: () => {
if (toast.animation === "exiting") {
const updatedHeights = heights;
updatedHeights.splice(index, 1);
setHeights([...updatedHeights]);
state.remove(toast.key);
}
},
style: {
opacity: opacityValue,
},
...mergeProps(props, otherProps, toastProps, hoverProps),
}),
[slots, classNames, toastProps, hoverProps, toast, toast.animation, toast.key, opacityValue],
[slots, classNames, toastProps, hoverProps, toast, toast.key, opacityValue],
);
const getWrapperProps: PropGetter = useCallback(
@ -555,7 +544,6 @@ export function useToast<T extends ToastProps>(originalProps: UseToastProps<T>)
setHeights([...updatedHeights]);
state.close(toast.key);
state.remove(toast.key);
return;
}

View File

@ -47,13 +47,13 @@
"@heroui/framer-utils": "workspace:*",
"@heroui/use-safe-layout-effect": "workspace:*",
"@heroui/dom-animation": "workspace:*",
"@react-aria/interactions": "3.23.0",
"@react-aria/overlays": "3.25.0",
"@react-aria/tooltip": "3.7.11",
"@react-aria/utils": "3.27.0",
"@react-stately/tooltip": "3.5.1",
"@react-types/overlays": "3.8.12",
"@react-types/tooltip": "3.4.14"
"@react-aria/interactions": "3.24.0",
"@react-aria/overlays": "3.26.0",
"@react-aria/tooltip": "3.8.0",
"@react-aria/utils": "3.28.0",
"@react-stately/tooltip": "3.5.2",
"@react-types/overlays": "3.8.13",
"@react-types/tooltip": "3.4.15"
},
"devDependencies": {
"@heroui/button": "workspace:*",

View File

@ -43,8 +43,8 @@
"@heroui/avatar": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/react-utils": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/utils": "3.27.0"
"@react-aria/focus": "3.20.0",
"@react-aria/utils": "3.28.0"
},
"devDependencies": {
"@heroui/theme": "workspace:*",

View File

@ -91,7 +91,7 @@
"@heroui/alert": "workspace:*",
"@heroui/number-input": "workspace:*",
"@heroui/toast": "workspace:*",
"@react-aria/visually-hidden": "3.8.19"
"@react-aria/visually-hidden": "3.8.20"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0",

View File

@ -46,7 +46,7 @@
"clean-package": "2.2.0"
},
"dependencies": {
"@react-types/shared": "3.27.0",
"@react-types/shared": "3.28.0",
"clsx": "^1.2.1"
},
"clean-package": "../../../clean-package.config.json",

View File

@ -56,11 +56,11 @@
"dependencies": {
"@internationalized/date": "3.7.0",
"@heroui/react-utils": "workspace:*",
"@react-aria/i18n": "3.12.5",
"@react-aria/i18n": "3.12.6",
"@heroui/system-rsc": "workspace:*",
"@react-aria/overlays": "3.25.0",
"@react-aria/utils": "3.27.0",
"@react-aria/overlays": "3.26.0",
"@react-aria/utils": "3.28.0",
"@react-stately/utils": "3.10.5",
"@react-types/datepicker": "3.10.0"
"@react-types/datepicker": "3.11.0"
}
}

View File

@ -34,10 +34,10 @@
"postpack": "clean-package restore"
},
"dependencies": {
"@react-aria/button": "3.11.1",
"@react-aria/focus": "3.19.1",
"@react-stately/tree": "3.8.7",
"@react-types/shared": "3.27.0"
"@react-aria/button": "3.12.0",
"@react-aria/focus": "3.20.0",
"@react-stately/tree": "3.8.8",
"@react-types/shared": "3.28.0"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0"

View File

@ -34,13 +34,13 @@
"postpack": "clean-package restore"
},
"dependencies": {
"@react-aria/button": "3.11.1",
"@react-aria/focus": "3.19.1",
"@react-aria/selection": "3.22.0",
"@react-aria/utils": "3.27.0",
"@react-stately/tree": "3.8.7",
"@react-aria/button": "3.12.0",
"@react-aria/focus": "3.20.0",
"@react-aria/selection": "3.23.0",
"@react-aria/utils": "3.28.0",
"@react-stately/tree": "3.8.8",
"@react-types/accordion": "3.0.0-alpha.26",
"@react-types/shared": "3.27.0"
"@react-types/shared": "3.28.0"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0"

View File

@ -38,11 +38,11 @@
},
"dependencies": {
"@heroui/shared-utils": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/utils": "3.27.0",
"@react-types/button": "3.10.2",
"@react-types/shared": "3.27.0"
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/utils": "3.28.0",
"@react-types/button": "3.11.0",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"clean-package": "2.2.0",

View File

@ -95,7 +95,6 @@ export function useAriaButton(
} else {
additionalProps = {
role: "button",
tabIndex: isDisabled ? undefined : 0,
href: elementType === "a" && !isDisabled ? href : undefined,
target: elementType === "a" ? target : undefined,
type: elementType === "input" ? type : undefined,
@ -161,6 +160,7 @@ export function useAriaButton(
"aria-expanded": props["aria-expanded"],
"aria-controls": props["aria-controls"],
"aria-pressed": props["aria-pressed"],
"aria-current": props["aria-current"],
onClick: (e: React.MouseEvent<HTMLButtonElement>) => {
if (type === "button" && isMobile) {
// Avoid firing onClick event twice since it's handled in handlePress

View File

@ -38,11 +38,11 @@
},
"dependencies": {
"@heroui/shared-utils": "workspace:*",
"@react-aria/focus": "3.19.1",
"@react-aria/interactions": "3.23.0",
"@react-aria/utils": "3.27.0",
"@react-types/link": "3.5.10",
"@react-types/shared": "3.27.0"
"@react-aria/focus": "3.20.0",
"@react-aria/interactions": "3.24.0",
"@react-aria/utils": "3.28.0",
"@react-types/link": "3.5.11",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"clean-package": "2.2.0",

View File

@ -34,10 +34,10 @@
"postpack": "clean-package restore"
},
"dependencies": {
"@react-aria/overlays": "3.25.0",
"@react-aria/utils": "3.27.0",
"@react-stately/overlays": "3.6.13",
"@react-types/shared": "3.27.0"
"@react-aria/overlays": "3.26.0",
"@react-aria/utils": "3.28.0",
"@react-stately/overlays": "3.6.14",
"@react-types/shared": "3.28.0"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0",

View File

@ -34,20 +34,20 @@
"postpack": "clean-package restore"
},
"dependencies": {
"@react-aria/i18n": "3.12.5",
"@react-aria/interactions": "3.23.0",
"@react-aria/label": "3.7.14",
"@react-aria/listbox": "3.14.0",
"@react-aria/menu": "3.17.0",
"@react-aria/selection": "3.22.0",
"@react-aria/utils": "3.27.0",
"@react-stately/form": "3.1.1",
"@react-stately/list": "3.11.2",
"@react-stately/menu": "3.9.1",
"@react-types/button": "3.10.2",
"@react-types/overlays": "3.8.12",
"@react-types/select": "3.9.9",
"@react-types/shared": "3.27.0"
"@react-aria/i18n": "3.12.6",
"@react-aria/interactions": "3.24.0",
"@react-aria/label": "3.7.15",
"@react-aria/listbox": "3.14.1",
"@react-aria/menu": "3.18.0",
"@react-aria/selection": "3.23.0",
"@react-aria/utils": "3.28.0",
"@react-stately/form": "3.1.2",
"@react-stately/list": "3.12.0",
"@react-stately/menu": "3.9.2",
"@react-types/button": "3.11.0",
"@react-types/overlays": "3.8.13",
"@react-types/select": "3.9.10",
"@react-types/shared": "3.28.0"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0",

View File

@ -38,7 +38,7 @@
},
"dependencies": {
"@heroui/use-callback-ref": "workspace:*",
"@react-aria/utils": "3.27.0",
"@react-aria/utils": "3.28.0",
"@react-stately/utils": "3.10.5"
},
"devDependencies": {

View File

@ -50,6 +50,6 @@
]
},
"dependencies": {
"@react-aria/interactions": "3.23.0"
"@react-aria/interactions": "3.24.0"
}
}

View File

@ -34,10 +34,10 @@
"postpack": "clean-package restore"
},
"dependencies": {
"@react-aria/utils": "3.27.0",
"@react-aria/utils": "3.28.0",
"@react-aria/ssr": "3.9.7",
"@react-types/shared": "3.27.0",
"@react-aria/interactions": "3.23.0"
"@react-types/shared": "3.28.0",
"@react-aria/interactions": "3.24.0"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0"

View File

@ -35,7 +35,7 @@
},
"dependencies": {
"@heroui/shared-utils": "workspace:*",
"@react-aria/i18n": "3.12.5"
"@react-aria/i18n": "3.12.6"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0"

View File

@ -41,11 +41,11 @@
"@heroui/system": "workspace:*",
"@heroui/shared-utils": "workspace:*",
"@heroui/react-rsc-utils": "workspace:*",
"@react-aria/utils": "3.27.0",
"@react-stately/collections": "3.12.1",
"@react-stately/overlays": "3.6.13",
"@react-types/overlays": "3.8.12",
"@react-types/shared": "3.27.0"
"@react-aria/utils": "3.28.0",
"@react-stately/collections": "3.12.2",
"@react-stately/overlays": "3.6.14",
"@react-types/overlays": "3.8.13",
"@react-types/shared": "3.28.0"
},
"devDependencies": {
"clean-package": "2.2.0",

View File

@ -8,6 +8,7 @@ export {isNonContiguousSelectionModifier, isCtrlKeyPressed} from "./utils";
export {
ariaHideOutside,
ariaShouldCloseOnInteractOutside,
keepVisible,
getTransformOrigins,
toReactAriaPlacement,
toOverlayPlacement,

View File

@ -7,6 +7,8 @@
let refCountMap = new WeakMap<Element, number>();
interface ObserverWrapper {
visibleNodes: Set<Element>;
hiddenNodes: Set<Element>;
observe: () => void;
disconnect: () => void;
}
@ -133,7 +135,9 @@ export function ariaHideOutside(targets: Element[], root = document.body) {
observer.observe(root, {childList: true, subtree: true});
let observerWrapper = {
let observerWrapper: ObserverWrapper = {
visibleNodes,
hiddenNodes,
observe() {
observer.observe(root, {childList: true, subtree: true});
},
@ -173,3 +177,15 @@ export function ariaHideOutside(targets: Element[], root = document.body) {
}
};
}
export function keepVisible(element: Element) {
let observer = observerStack[observerStack.length - 1];
if (observer && !observer.visibleNodes.has(element)) {
observer.visibleNodes.add(element);
return () => {
observer.visibleNodes.delete(element);
};
}
}

View File

@ -8,5 +8,5 @@ export {
getArrowPlacement,
} from "./utils";
export {ariaHideOutside} from "./ariaHideOutside";
export {ariaHideOutside, keepVisible} from "./ariaHideOutside";
export {ariaShouldCloseOnInteractOutside} from "./ariaShouldCloseOnInteractOutside";

2313
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff