@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/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;
@@ -1 +1 @@
1
- {"mappings":";;;;;AAoBA;;;;;;;;;;;GAWG;AAEH,+BAA+B,KAAK,KAAA,OAWnC;ACmBD,OAAA,IAAI,uIAAoC,CAAC;AExCzC,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;AA+JD,OAAA,IAAI,uIAA8B,CAAC;AClKnC,oBAAqB,SAAQ,qBAAqB,EAAE,UAAU,EAAE,YAAY;IAC1E,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,oBAAoB,CAAA;CACrD;AA8ED,OAAA,IAAI,mIAA0B,CAAC;AClF/B,mBAAoB,SAAQ,qBAAqB,EAAE,UAAU,EAAE,YAAY;IACzE,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAoFD,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"}
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": "4.1.0",
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.12.1",
35
- "@react-aria/utils": "^3.14.2",
36
- "@react-spectrum/utils": "^3.8.1",
37
- "@react-stately/overlays": "^3.4.4",
38
- "@react-types/overlays": "^3.6.5",
39
- "@react-types/shared": "^3.16.0",
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": "5480d76bd815e239366f92852c76b6831ad2a4fd"
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