diff --git a/packages/@react-aria/overlays/src/usePopover.ts b/packages/@react-aria/overlays/src/usePopover.ts index 3263932e978..ef54f3b6704 100644 --- a/packages/@react-aria/overlays/src/usePopover.ts +++ b/packages/@react-aria/overlays/src/usePopover.ts @@ -62,6 +62,10 @@ export interface AriaPopoverProps extends Omit boolean + /** + * Nothing will be hidden above this element when a popup is modal. + */ + rootHiddenOutsideElement?: Element } export interface PopoverAria { @@ -89,6 +93,7 @@ export function usePopover(props: AriaPopoverProps, state: OverlayTriggerState): isNonModal, isKeyboardDismissDisabled, shouldCloseOnInteractOutside, + rootHiddenOutsideElement, ...otherProps } = props; @@ -123,7 +128,7 @@ export function usePopover(props: AriaPopoverProps, state: OverlayTriggerState): if (isNonModal) { return keepVisible(groupRef?.current ?? popoverRef.current); } else { - return ariaHideOutside([groupRef?.current ?? popoverRef.current], {shouldUseInert: true}); + return ariaHideOutside([groupRef?.current ?? popoverRef.current], {shouldUseInert: true, root: rootHiddenOutsideElement}); } } }, [isNonModal, state.isOpen, popoverRef, groupRef]);