diff --git a/packages/react-aria-components/src/Dialog.tsx b/packages/react-aria-components/src/Dialog.tsx index 0d78f95ef18..945fab68383 100644 --- a/packages/react-aria-components/src/Dialog.tsx +++ b/packages/react-aria-components/src/Dialog.tsx @@ -42,6 +42,7 @@ import React, { import {RootMenuTriggerStateContext} from './Menu'; import {TextContext} from './Text'; import {useId} from 'react-aria/useId'; +import {useIsHidden} from 'react-aria/private/collections/Hidden'; import {useMenuTriggerState} from 'react-stately/useMenuTriggerState'; import {useOverlayTrigger} from 'react-aria/useOverlayTrigger'; @@ -77,7 +78,7 @@ export const OverlayTriggerStateContext = createContext { expect(menu.getOptions()).toHaveLength(3); await menu.close(); }); + + it('supports DialogTrigger inside Tabs', async () => { + let tree = render( + +
+ + First Tab + Second Tab + + + + + + Item 1 + Item 2 + + + +
+ First Tab content + Second Tab content +
+ ); + + let tester = testUtilUser.createTester('Tabs', {root: tree.getByRole('tablist')}); + expect(tester.getTabs().length).toBe(2); + + let trigger = tree.getByRole('button'); + await user.click(trigger); + + let dialog = tree.getByRole('dialog'); + expect(within(dialog).getAllByRole('menuitem')).toHaveLength(2); + }); });