@react-spectrum/overlays 4.1.0 → 5.0.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/import.mjs +558 -0
- package/dist/main.js +31 -12
- package/dist/main.js.map +1 -1
- package/dist/module.js +32 -13
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +13 -8
- package/src/Modal.tsx +11 -9
- package/src/Overlay.tsx +3 -2
- package/src/Popover.tsx +11 -7
- package/src/Tray.tsx +12 -8
package/dist/types.d.ts
CHANGED
|
@@ -23,13 +23,13 @@ interface PopoverProps extends Omit<AriaPopoverProps, 'popoverRef' | 'maxHeight'
|
|
|
23
23
|
state: OverlayTriggerState;
|
|
24
24
|
}
|
|
25
25
|
export let Popover: React.ForwardRefExoticComponent<PopoverProps & React.RefAttributes<import("@react-types/shared").DOMRefValue<HTMLDivElement>>>;
|
|
26
|
-
interface ModalProps extends AriaModalOverlayProps, StyleProps, OverlayProps {
|
|
26
|
+
interface ModalProps extends AriaModalOverlayProps, StyleProps, Omit<OverlayProps, 'nodeRef'> {
|
|
27
27
|
children: ReactNode;
|
|
28
28
|
state: OverlayTriggerState;
|
|
29
29
|
type?: 'modal' | 'fullscreen' | 'fullscreenTakeover';
|
|
30
30
|
}
|
|
31
31
|
export let Modal: React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<import("@react-types/shared").DOMRefValue<HTMLDivElement>>>;
|
|
32
|
-
interface TrayProps extends AriaModalOverlayProps, StyleProps, OverlayProps {
|
|
32
|
+
interface TrayProps extends AriaModalOverlayProps, StyleProps, Omit<OverlayProps, 'nodeRef'> {
|
|
33
33
|
children: ReactNode;
|
|
34
34
|
state: OverlayTriggerState;
|
|
35
35
|
isFixedHeight?: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;AAoBA;;;;;;;;;;;GAWG;AAEH,+BAA+B,KAAK,KAAA,OAWnC;
|
|
1
|
+
{"mappings":";;;;;AAoBA;;;;;;;;;;;GAWG;AAEH,+BAA+B,KAAK,KAAA,OAWnC;ACoBD,OAAA,IAAI,uIAAoC,CAAC;AEzCzC,sBAAuB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,WAAW,CAAC,EAAE,UAAU;IAC3F,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,mBAAmB,CAAA;CAC3B;AAmKD,OAAA,IAAI,uIAA8B,CAAC;ACtKnC,oBAAqB,SAAQ,qBAAqB,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;IAC3F,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,oBAAoB,CAAA;CACrD;AAgFD,OAAA,IAAI,mIAA0B,CAAC;ACpF/B,mBAAoB,SAAQ,qBAAqB,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;IAC1F,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAwFD,OAAA,IAAI,iIAAwB,CAAC","sources":["packages/@react-spectrum/overlays/src/packages/@react-spectrum/overlays/src/OpenTransition.tsx","packages/@react-spectrum/overlays/src/packages/@react-spectrum/overlays/src/Overlay.tsx","packages/@react-spectrum/overlays/src/packages/@react-spectrum/overlays/src/Underlay.tsx","packages/@react-spectrum/overlays/src/packages/@react-spectrum/overlays/src/Popover.tsx","packages/@react-spectrum/overlays/src/packages/@react-spectrum/overlays/src/Modal.tsx","packages/@react-spectrum/overlays/src/packages/@react-spectrum/overlays/src/Tray.tsx","packages/@react-spectrum/overlays/src/packages/@react-spectrum/overlays/src/index.ts","packages/@react-spectrum/overlays/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,"/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {Overlay} from './Overlay';\nexport {Popover} from './Popover';\nexport {Modal} from './Modal';\nexport {Tray} from './Tray';\nexport {OpenTransition} from './OpenTransition';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-spectrum/overlays",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Spectrum UI components in React",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "dist/main.js",
|
|
7
7
|
"module": "dist/module.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
"types": "./dist/types.d.ts",
|
|
10
|
+
"import": "./dist/import.mjs",
|
|
11
|
+
"require": "./dist/main.js"
|
|
12
|
+
},
|
|
8
13
|
"types": "dist/types.d.ts",
|
|
9
14
|
"source": "src/index.ts",
|
|
10
15
|
"files": [
|
|
@@ -31,12 +36,12 @@
|
|
|
31
36
|
"url": "https://github.com/adobe/react-spectrum"
|
|
32
37
|
},
|
|
33
38
|
"dependencies": {
|
|
34
|
-
"@react-aria/overlays": "^3.
|
|
35
|
-
"@react-aria/utils": "^3.
|
|
36
|
-
"@react-spectrum/utils": "^3.
|
|
37
|
-
"@react-stately/overlays": "^3.
|
|
38
|
-
"@react-types/overlays": "^3.
|
|
39
|
-
"@react-types/shared": "^3.
|
|
39
|
+
"@react-aria/overlays": "^3.13.0",
|
|
40
|
+
"@react-aria/utils": "^3.15.0",
|
|
41
|
+
"@react-spectrum/utils": "^3.9.0",
|
|
42
|
+
"@react-stately/overlays": "^3.5.0",
|
|
43
|
+
"@react-types/overlays": "^3.7.0",
|
|
44
|
+
"@react-types/shared": "^3.17.0",
|
|
40
45
|
"@swc/helpers": "^0.4.14",
|
|
41
46
|
"react-transition-group": "^4.4.5"
|
|
42
47
|
},
|
|
@@ -51,5 +56,5 @@
|
|
|
51
56
|
"publishConfig": {
|
|
52
57
|
"access": "public"
|
|
53
58
|
},
|
|
54
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "a0efee84aa178cb1a202951dfd6d8de02b292307"
|
|
55
60
|
}
|
package/src/Modal.tsx
CHANGED
|
@@ -18,27 +18,29 @@ import {Overlay} from './Overlay';
|
|
|
18
18
|
import {OverlayProps} from '@react-types/overlays';
|
|
19
19
|
import {OverlayTriggerState} from '@react-stately/overlays';
|
|
20
20
|
import overrideStyles from './overlays.css';
|
|
21
|
-
import React, {forwardRef, ReactNode, RefObject} from 'react';
|
|
21
|
+
import React, {forwardRef, MutableRefObject, ReactNode, RefObject, useRef} from 'react';
|
|
22
22
|
import {Underlay} from './Underlay';
|
|
23
23
|
import {useViewportSize} from '@react-aria/utils';
|
|
24
24
|
|
|
25
|
-
interface ModalProps extends AriaModalOverlayProps, StyleProps, OverlayProps {
|
|
25
|
+
interface ModalProps extends AriaModalOverlayProps, StyleProps, Omit<OverlayProps, 'nodeRef'> {
|
|
26
26
|
children: ReactNode,
|
|
27
27
|
state: OverlayTriggerState,
|
|
28
28
|
type?: 'modal' | 'fullscreen' | 'fullscreenTakeover'
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
interface ModalWrapperProps extends ModalProps {
|
|
32
|
-
isOpen?: boolean
|
|
32
|
+
isOpen?: boolean,
|
|
33
|
+
wrapperRef: MutableRefObject<HTMLDivElement>
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
function Modal(props: ModalProps, ref: DOMRef<HTMLDivElement>) {
|
|
36
37
|
let {children, state, ...otherProps} = props;
|
|
37
38
|
let domRef = useDOMRef(ref);
|
|
39
|
+
let wrapperRef = useRef<HTMLDivElement>(null);
|
|
38
40
|
|
|
39
41
|
return (
|
|
40
|
-
<Overlay {...otherProps} isOpen={state.isOpen}>
|
|
41
|
-
<ModalWrapper {...props} ref={domRef}>
|
|
42
|
+
<Overlay {...otherProps} isOpen={state.isOpen} nodeRef={wrapperRef}>
|
|
43
|
+
<ModalWrapper {...props} wrapperRef={wrapperRef} ref={domRef}>
|
|
42
44
|
{children}
|
|
43
45
|
</ModalWrapper>
|
|
44
46
|
</Overlay>
|
|
@@ -51,10 +53,9 @@ let typeMap = {
|
|
|
51
53
|
};
|
|
52
54
|
|
|
53
55
|
let ModalWrapper = forwardRef(function (props: ModalWrapperProps, ref: RefObject<HTMLDivElement>) {
|
|
54
|
-
let {type, children, state, isOpen} = props;
|
|
56
|
+
let {type, children, state, isOpen, wrapperRef} = props;
|
|
55
57
|
let typeVariant = typeMap[type];
|
|
56
58
|
let {styleProps} = useStyleProps(props);
|
|
57
|
-
|
|
58
59
|
let {modalProps, underlayProps} = useModalOverlay(props, state, ref);
|
|
59
60
|
|
|
60
61
|
let wrapperClassName = classNames(
|
|
@@ -87,8 +88,9 @@ let ModalWrapper = forwardRef(function (props: ModalWrapperProps, ref: RefObject
|
|
|
87
88
|
'--spectrum-visual-viewport-height': viewport.height + 'px'
|
|
88
89
|
};
|
|
89
90
|
|
|
91
|
+
// Attach Transition's nodeRef to outer most wrapper for node.reflow: https://github.com/reactjs/react-transition-group/blob/c89f807067b32eea6f68fd6c622190d88ced82e2/src/Transition.js#L231
|
|
90
92
|
return (
|
|
91
|
-
|
|
93
|
+
<div ref={wrapperRef}>
|
|
92
94
|
<Underlay {...underlayProps} isOpen={isOpen} />
|
|
93
95
|
<div className={wrapperClassName} style={style}>
|
|
94
96
|
<div
|
|
@@ -100,7 +102,7 @@ let ModalWrapper = forwardRef(function (props: ModalWrapperProps, ref: RefObject
|
|
|
100
102
|
{children}
|
|
101
103
|
</div>
|
|
102
104
|
</div>
|
|
103
|
-
|
|
105
|
+
</div>
|
|
104
106
|
);
|
|
105
107
|
});
|
|
106
108
|
|
package/src/Overlay.tsx
CHANGED
|
@@ -18,7 +18,7 @@ import React, {useCallback, useState} from 'react';
|
|
|
18
18
|
import {Overlay as ReactAriaOverlay} from '@react-aria/overlays';
|
|
19
19
|
|
|
20
20
|
function Overlay(props: OverlayProps, ref: DOMRef<HTMLDivElement>) {
|
|
21
|
-
let {children, isOpen, container, onEnter, onEntering, onEntered, onExit, onExiting, onExited} = props;
|
|
21
|
+
let {children, isOpen, container, onEnter, onEntering, onEntered, onExit, onExiting, onExited, nodeRef} = props;
|
|
22
22
|
let [exited, setExited] = useState(!isOpen);
|
|
23
23
|
|
|
24
24
|
let handleEntered = useCallback(() => {
|
|
@@ -53,7 +53,8 @@ function Overlay(props: OverlayProps, ref: DOMRef<HTMLDivElement>) {
|
|
|
53
53
|
onExited={handleExited}
|
|
54
54
|
onEnter={onEnter}
|
|
55
55
|
onEntering={onEntering}
|
|
56
|
-
onEntered={handleEntered}
|
|
56
|
+
onEntered={handleEntered}
|
|
57
|
+
nodeRef={nodeRef}>
|
|
57
58
|
{children}
|
|
58
59
|
</OpenTransition>
|
|
59
60
|
</Provider>
|
package/src/Popover.tsx
CHANGED
|
@@ -16,7 +16,7 @@ import {DOMRef, StyleProps} from '@react-types/shared';
|
|
|
16
16
|
import {Overlay} from './Overlay';
|
|
17
17
|
import {OverlayTriggerState} from '@react-stately/overlays';
|
|
18
18
|
import overrideStyles from './overlays.css';
|
|
19
|
-
import React, {forwardRef, ReactNode, RefObject, useRef, useState} from 'react';
|
|
19
|
+
import React, {forwardRef, MutableRefObject, ReactNode, RefObject, useRef, useState} from 'react';
|
|
20
20
|
import styles from '@adobe/spectrum-css-temp/components/popover/vars.css';
|
|
21
21
|
import {Underlay} from './Underlay';
|
|
22
22
|
import {useLayoutEffect} from '@react-aria/utils';
|
|
@@ -28,7 +28,8 @@ interface PopoverProps extends Omit<AriaPopoverProps, 'popoverRef' | 'maxHeight'
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
interface PopoverWrapperProps extends PopoverProps {
|
|
31
|
-
isOpen?: boolean
|
|
31
|
+
isOpen?: boolean,
|
|
32
|
+
wrapperRef: MutableRefObject<HTMLDivElement>
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
/**
|
|
@@ -52,10 +53,11 @@ function Popover(props: PopoverProps, ref: DOMRef<HTMLDivElement>) {
|
|
|
52
53
|
...otherProps
|
|
53
54
|
} = props;
|
|
54
55
|
let domRef = useDOMRef(ref);
|
|
56
|
+
let wrapperRef = useRef<HTMLDivElement>(null);
|
|
55
57
|
|
|
56
58
|
return (
|
|
57
|
-
<Overlay {...otherProps} isOpen={state.isOpen}>
|
|
58
|
-
<PopoverWrapper ref={domRef} {...props}>
|
|
59
|
+
<Overlay {...otherProps} isOpen={state.isOpen} nodeRef={wrapperRef}>
|
|
60
|
+
<PopoverWrapper ref={domRef} {...props} wrapperRef={wrapperRef}>
|
|
59
61
|
{children}
|
|
60
62
|
</PopoverWrapper>
|
|
61
63
|
</Overlay>
|
|
@@ -68,7 +70,8 @@ const PopoverWrapper = forwardRef((props: PopoverWrapperProps, ref: RefObject<HT
|
|
|
68
70
|
isOpen,
|
|
69
71
|
hideArrow,
|
|
70
72
|
isNonModal,
|
|
71
|
-
state
|
|
73
|
+
state,
|
|
74
|
+
wrapperRef
|
|
72
75
|
} = props;
|
|
73
76
|
let {styleProps} = useStyleProps(props);
|
|
74
77
|
|
|
@@ -78,8 +81,9 @@ const PopoverWrapper = forwardRef((props: PopoverWrapperProps, ref: RefObject<HT
|
|
|
78
81
|
maxHeight: null
|
|
79
82
|
}, state);
|
|
80
83
|
|
|
84
|
+
// Attach Transition's nodeRef to outer most wrapper for node.reflow: https://github.com/reactjs/react-transition-group/blob/c89f807067b32eea6f68fd6c622190d88ced82e2/src/Transition.js#L231
|
|
81
85
|
return (
|
|
82
|
-
|
|
86
|
+
<div ref={wrapperRef}>
|
|
83
87
|
{!isNonModal && <Underlay isTransparent {...underlayProps} isOpen={isOpen} /> }
|
|
84
88
|
<div
|
|
85
89
|
{...styleProps}
|
|
@@ -115,7 +119,7 @@ const PopoverWrapper = forwardRef((props: PopoverWrapperProps, ref: RefObject<HT
|
|
|
115
119
|
)}
|
|
116
120
|
<DismissButton onDismiss={state.close} />
|
|
117
121
|
</div>
|
|
118
|
-
|
|
122
|
+
</div>
|
|
119
123
|
);
|
|
120
124
|
});
|
|
121
125
|
|
package/src/Tray.tsx
CHANGED
|
@@ -17,28 +17,30 @@ import {Overlay} from './Overlay';
|
|
|
17
17
|
import {OverlayProps} from '@react-types/overlays';
|
|
18
18
|
import {OverlayTriggerState} from '@react-stately/overlays';
|
|
19
19
|
import overrideStyles from './overlays.css';
|
|
20
|
-
import React, {forwardRef, ReactNode, RefObject} from 'react';
|
|
20
|
+
import React, {forwardRef, MutableRefObject, ReactNode, RefObject, useRef} from 'react';
|
|
21
21
|
import trayStyles from '@adobe/spectrum-css-temp/components/tray/vars.css';
|
|
22
22
|
import {Underlay} from './Underlay';
|
|
23
23
|
import {useViewportSize} from '@react-aria/utils';
|
|
24
24
|
|
|
25
|
-
interface TrayProps extends AriaModalOverlayProps, StyleProps, OverlayProps {
|
|
25
|
+
interface TrayProps extends AriaModalOverlayProps, StyleProps, Omit<OverlayProps, 'nodeRef'> {
|
|
26
26
|
children: ReactNode,
|
|
27
27
|
state: OverlayTriggerState,
|
|
28
28
|
isFixedHeight?: boolean
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
interface TrayWrapperProps extends TrayProps {
|
|
32
|
-
isOpen?: boolean
|
|
32
|
+
isOpen?: boolean,
|
|
33
|
+
wrapperRef: MutableRefObject<HTMLDivElement>
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
function Tray(props: TrayProps, ref: DOMRef<HTMLDivElement>) {
|
|
36
37
|
let {children, state, ...otherProps} = props;
|
|
37
38
|
let domRef = useDOMRef(ref);
|
|
39
|
+
let wrapperRef = useRef<HTMLDivElement>(null);
|
|
38
40
|
|
|
39
41
|
return (
|
|
40
|
-
<Overlay {...otherProps} isOpen={state.isOpen}>
|
|
41
|
-
<TrayWrapper {...props} ref={domRef}>
|
|
42
|
+
<Overlay {...otherProps} isOpen={state.isOpen} nodeRef={wrapperRef}>
|
|
43
|
+
<TrayWrapper {...props} wrapperRef={wrapperRef} ref={domRef}>
|
|
42
44
|
{children}
|
|
43
45
|
</TrayWrapper>
|
|
44
46
|
</Overlay>
|
|
@@ -50,7 +52,8 @@ let TrayWrapper = forwardRef(function (props: TrayWrapperProps, ref: RefObject<H
|
|
|
50
52
|
children,
|
|
51
53
|
isOpen,
|
|
52
54
|
isFixedHeight,
|
|
53
|
-
state
|
|
55
|
+
state,
|
|
56
|
+
wrapperRef
|
|
54
57
|
} = props;
|
|
55
58
|
let {styleProps} = useStyleProps(props);
|
|
56
59
|
|
|
@@ -91,8 +94,9 @@ let TrayWrapper = forwardRef(function (props: TrayWrapperProps, ref: RefObject<H
|
|
|
91
94
|
styleProps.className
|
|
92
95
|
);
|
|
93
96
|
|
|
97
|
+
// Attach Transition's nodeRef to outer most wrapper for node.reflow: https://github.com/reactjs/react-transition-group/blob/c89f807067b32eea6f68fd6c622190d88ced82e2/src/Transition.js#L231
|
|
94
98
|
return (
|
|
95
|
-
|
|
99
|
+
<div ref={wrapperRef}>
|
|
96
100
|
<Underlay {...underlayProps} isOpen={isOpen} />
|
|
97
101
|
<div className={wrapperClassName} style={wrapperStyle}>
|
|
98
102
|
<div
|
|
@@ -106,7 +110,7 @@ let TrayWrapper = forwardRef(function (props: TrayWrapperProps, ref: RefObject<H
|
|
|
106
110
|
<DismissButton onDismiss={state.close} />
|
|
107
111
|
</div>
|
|
108
112
|
</div>
|
|
109
|
-
|
|
113
|
+
</div>
|
|
110
114
|
);
|
|
111
115
|
});
|
|
112
116
|
|