@react-aria/overlays 3.26.0 → 3.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DismissButton.main.js.map +1 -1
- package/dist/DismissButton.module.js.map +1 -1
- package/dist/Overlay.main.js +1 -1
- package/dist/Overlay.main.js.map +1 -1
- package/dist/Overlay.mjs +2 -2
- package/dist/Overlay.module.js +2 -2
- package/dist/Overlay.module.js.map +1 -1
- package/dist/PortalProvider.main.js +5 -5
- package/dist/PortalProvider.main.js.map +1 -1
- package/dist/PortalProvider.mjs +4 -4
- package/dist/PortalProvider.module.js +4 -4
- package/dist/PortalProvider.module.js.map +1 -1
- package/dist/ariaHideOutside.main.js.map +1 -1
- package/dist/ariaHideOutside.module.js.map +1 -1
- package/dist/import.mjs +2 -2
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/module.js +2 -2
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +19 -12
- package/dist/types.d.ts.map +1 -1
- package/dist/useCloseOnScroll.main.js.map +1 -1
- package/dist/useCloseOnScroll.module.js.map +1 -1
- package/dist/useModal.main.js +4 -0
- package/dist/useModal.main.js.map +1 -1
- package/dist/useModal.mjs +4 -0
- package/dist/useModal.module.js +4 -0
- package/dist/useModal.module.js.map +1 -1
- package/dist/usePopover.main.js +1 -1
- package/dist/usePopover.main.js.map +1 -1
- package/dist/usePopover.mjs +1 -1
- package/dist/usePopover.module.js +1 -1
- package/dist/usePopover.module.js.map +1 -1
- package/dist/usePreventScroll.main.js.map +1 -1
- package/dist/usePreventScroll.module.js.map +1 -1
- package/package.json +12 -12
- package/src/DismissButton.tsx +2 -2
- package/src/Overlay.tsx +5 -5
- package/src/PortalProvider.tsx +13 -6
- package/src/ariaHideOutside.ts +1 -1
- package/src/index.ts +2 -1
- package/src/useCloseOnScroll.ts +1 -1
- package/src/useModal.tsx +8 -2
- package/src/usePopover.ts +1 -1
- package/src/usePreventScroll.ts +1 -1
package/src/useModal.tsx
CHANGED
|
@@ -14,6 +14,7 @@ import {DOMAttributes} from '@react-types/shared';
|
|
|
14
14
|
import React, {AriaAttributes, ReactNode, useContext, useEffect, useMemo, useState} from 'react';
|
|
15
15
|
import ReactDOM from 'react-dom';
|
|
16
16
|
import {useIsSSR} from '@react-aria/ssr';
|
|
17
|
+
import {useUNSAFE_PortalContext} from './PortalProvider';
|
|
17
18
|
|
|
18
19
|
export interface ModalProviderProps extends DOMAttributes {
|
|
19
20
|
children: ReactNode
|
|
@@ -36,7 +37,7 @@ const Context = React.createContext<ModalContext | null>(null);
|
|
|
36
37
|
* subtree from screen readers. This is done using React context in order to account for things
|
|
37
38
|
* like portals, which can cause the React tree and the DOM tree to differ significantly in structure.
|
|
38
39
|
*/
|
|
39
|
-
export function ModalProvider(props: ModalProviderProps) {
|
|
40
|
+
export function ModalProvider(props: ModalProviderProps): ReactNode {
|
|
40
41
|
let {children} = props;
|
|
41
42
|
let parent = useContext(Context);
|
|
42
43
|
let [modalCount, setModalCount] = useState(0);
|
|
@@ -100,7 +101,7 @@ function OverlayContainerDOM(props: ModalProviderProps) {
|
|
|
100
101
|
* if a modal or other overlay is opened. Only the top-most modal or
|
|
101
102
|
* overlay should be accessible at once.
|
|
102
103
|
*/
|
|
103
|
-
export function OverlayProvider(props: ModalProviderProps) {
|
|
104
|
+
export function OverlayProvider(props: ModalProviderProps): ReactNode {
|
|
104
105
|
return (
|
|
105
106
|
<ModalProvider>
|
|
106
107
|
<OverlayContainerDOM {...props} />
|
|
@@ -112,6 +113,7 @@ export interface OverlayContainerProps extends ModalProviderProps {
|
|
|
112
113
|
/**
|
|
113
114
|
* The container element in which the overlay portal will be placed.
|
|
114
115
|
* @default document.body
|
|
116
|
+
* @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.
|
|
115
117
|
*/
|
|
116
118
|
portalContainer?: Element
|
|
117
119
|
}
|
|
@@ -126,6 +128,10 @@ export interface OverlayContainerProps extends ModalProviderProps {
|
|
|
126
128
|
export function OverlayContainer(props: OverlayContainerProps): React.ReactPortal | null {
|
|
127
129
|
let isSSR = useIsSSR();
|
|
128
130
|
let {portalContainer = isSSR ? null : document.body, ...rest} = props;
|
|
131
|
+
let {getContainer} = useUNSAFE_PortalContext();
|
|
132
|
+
if (!props.portalContainer && getContainer) {
|
|
133
|
+
portalContainer = getContainer();
|
|
134
|
+
}
|
|
129
135
|
|
|
130
136
|
React.useEffect(() => {
|
|
131
137
|
if (portalContainer?.closest('[data-overlay-container]')) {
|
package/src/usePopover.ts
CHANGED
|
@@ -106,7 +106,7 @@ export function usePopover(props: AriaPopoverProps, state: OverlayTriggerState):
|
|
|
106
106
|
targetRef: triggerRef,
|
|
107
107
|
overlayRef: popoverRef,
|
|
108
108
|
isOpen: state.isOpen,
|
|
109
|
-
onClose: isNonModal ? state.close : null
|
|
109
|
+
onClose: isNonModal && !isSubmenu ? state.close : null
|
|
110
110
|
});
|
|
111
111
|
|
|
112
112
|
usePreventScroll({
|
package/src/usePreventScroll.ts
CHANGED
|
@@ -41,7 +41,7 @@ let restore;
|
|
|
41
41
|
* restores it on unmount. Also ensures that content does not
|
|
42
42
|
* shift due to the scrollbars disappearing.
|
|
43
43
|
*/
|
|
44
|
-
export function usePreventScroll(options: PreventScrollOptions = {}) {
|
|
44
|
+
export function usePreventScroll(options: PreventScrollOptions = {}): void {
|
|
45
45
|
let {isDisabled} = options;
|
|
46
46
|
|
|
47
47
|
useLayoutEffect(() => {
|