diff --git a/.storybook/preview.js b/.storybook/preview.js
index 5357d1c3ae5..580fde7af3f 100644
--- a/.storybook/preview.js
+++ b/.storybook/preview.js
@@ -20,7 +20,9 @@ export const parameters = {
export const decorators = [
story => (
- {story()}
+
+ {story()}
+
),
withProviderSwitcher
diff --git a/packages/@react-spectrum/overlays/package.json b/packages/@react-spectrum/overlays/package.json
index aa5e937bc90..c95eeac5976 100644
--- a/packages/@react-spectrum/overlays/package.json
+++ b/packages/@react-spectrum/overlays/package.json
@@ -38,7 +38,8 @@
"@react-stately/overlays": "^3.1.2",
"@react-types/overlays": "^3.5.0",
"@react-types/shared": "^3.7.0",
- "react-transition-group": "^2.2.0"
+ "react-transition-group": "^4.4.1"
+
},
"devDependencies": {
"@adobe/spectrum-css-temp": "3.0.0-alpha.1"
diff --git a/packages/@react-spectrum/overlays/src/Modal.tsx b/packages/@react-spectrum/overlays/src/Modal.tsx
index 2dacd78311a..13d64e66243 100644
--- a/packages/@react-spectrum/overlays/src/Modal.tsx
+++ b/packages/@react-spectrum/overlays/src/Modal.tsx
@@ -17,7 +17,7 @@ import {ModalProps} from '@react-types/overlays';
import modalStyles from '@adobe/spectrum-css-temp/components/modal/vars.css';
import {Overlay} from './Overlay';
import overrideStyles from './overlays.css';
-import React, {forwardRef, HTMLAttributes, ReactNode, RefObject} from 'react';
+import React, {forwardRef, HTMLAttributes, ReactNode, RefObject, useRef} from 'react';
import {Underlay} from './Underlay';
import {useModal, useOverlay, usePreventScroll} from '@react-aria/overlays';
@@ -33,12 +33,12 @@ function Modal(props: ModalProps, ref: DOMRef) {
let {children, onClose, type, ...otherProps} = props;
let domRef = useDOMRef(ref);
let {styleProps} = useStyleProps(props);
-
let {overlayProps, underlayProps} = useOverlay(props, domRef);
+ let underlayRef = useRef(null);
return (
-
-
+
+
) {
- let {children, isOpen, container, onEnter, onEntering, onEntered, onExit, onExiting, onExited} = props;
+ let {children, isOpen, container, onEnter, onEntering, onEntered, onExit, onExiting, onExited, nodeRef} = props;
let [exited, setExited] = useState(!isOpen);
let handleEntered = useCallback(() => {
@@ -52,7 +52,8 @@ function Overlay(props: OverlayProps, ref: DOMRef) {
onExited={handleExited}
onEnter={onEnter}
onEntering={onEntering}
- onEntered={handleEntered}>
+ onEntered={handleEntered}
+ nodeRef={nodeRef}>
{children}
diff --git a/packages/@react-spectrum/overlays/src/Popover.tsx b/packages/@react-spectrum/overlays/src/Popover.tsx
index 6f6c81c0a5a..d8789b76c8e 100644
--- a/packages/@react-spectrum/overlays/src/Popover.tsx
+++ b/packages/@react-spectrum/overlays/src/Popover.tsx
@@ -64,7 +64,7 @@ function Popover(props: PopoverProps, ref: DOMRef) {
let {styleProps} = useStyleProps(props);
return (
-
+
) {
let {children, onClose, isFixedHeight, isNonModal, ...otherProps} = props;
let domRef = useDOMRef(ref);
let {styleProps} = useStyleProps(props);
-
let {overlayProps, underlayProps} = useOverlay({...props, isDismissable: true}, domRef);
+ let underlayRef = useRef(null);
return (
-
-
+
+
) {
return (
-
+
);
}
+
+const _Underlay = React.forwardRef(Underlay);
+export {_Underlay as Underlay};
diff --git a/packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx b/packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx
index f69b2f6d9e3..023884a6ca8 100644
--- a/packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx
+++ b/packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx
@@ -66,7 +66,7 @@ function TooltipTrigger(props: SpectrumTooltipTriggerProps) {
arrowProps,
...tooltipProps
}}>
-
+
{tooltip}
diff --git a/packages/@react-types/overlays/src/index.d.ts b/packages/@react-types/overlays/src/index.d.ts
index abdb5a79467..83e3969803d 100644
--- a/packages/@react-types/overlays/src/index.d.ts
+++ b/packages/@react-types/overlays/src/index.d.ts
@@ -10,7 +10,7 @@
* governing permissions and limitations under the License.
*/
-import {HTMLAttributes, ReactElement, ReactNode} from 'react';
+import {HTMLAttributes, MutableRefObject, ReactElement, ReactNode} from 'react';
import {StyleProps} from '@react-types/shared';
export type Placement = 'bottom' | 'bottom left' | 'bottom right' | 'bottom start' | 'bottom end' |
@@ -71,10 +71,11 @@ export interface OverlayProps {
onEntered?: () => void,
onExit?: () => void,
onExiting?: () => void,
- onExited?: () => void
+ onExited?: () => void,
+ nodeRef: MutableRefObject
}
-export interface ModalProps extends StyleProps, OverlayProps {
+export interface ModalProps extends StyleProps, Omit {
children: ReactElement,
isOpen?: boolean,
onClose?: () => void,
@@ -82,7 +83,7 @@ export interface ModalProps extends StyleProps, OverlayProps {
isDismissable?: boolean
}
-export interface PopoverProps extends StyleProps, OverlayProps {
+export interface PopoverProps extends StyleProps, Omit {
children: ReactNode,
placement?: PlacementAxis,
arrowProps?: HTMLAttributes,
@@ -94,7 +95,7 @@ export interface PopoverProps extends StyleProps, OverlayProps {
isDismissable?: boolean
}
-export interface TrayProps extends StyleProps, OverlayProps {
+export interface TrayProps extends StyleProps, Omit {
children: ReactElement,
isOpen?: boolean,
onClose?: () => void,
diff --git a/yarn.lock b/yarn.lock
index 2ef9f757b15..97607b60a0a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1878,7 +1878,7 @@
core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4"
-"@babel/runtime@7.12.5", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
+"@babel/runtime@7.12.5", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.12.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
@@ -9034,9 +9034,9 @@ csstype@^2.5.7:
integrity sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==
csstype@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8"
- integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag==
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340"
+ integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==
currently-unhandled@^0.4.1:
version "0.4.1"
@@ -9513,6 +9513,14 @@ dom-helpers@^3.2.1, dom-helpers@^3.3.1, dom-helpers@^3.4.0:
dependencies:
"@babel/runtime" "^7.1.2"
+dom-helpers@^5.0.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
+ integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
+ dependencies:
+ "@babel/runtime" "^7.8.7"
+ csstype "^3.0.2"
+
dom-serializer@0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
@@ -19251,6 +19259,16 @@ react-transition-group@^2.2.0, react-transition-group@^2.2.1:
prop-types "^15.6.2"
react-lifecycles-compat "^3.0.4"
+react-transition-group@^4.4.1:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470"
+ integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ dom-helpers "^5.0.1"
+ loose-envify "^1.4.0"
+ prop-types "^15.6.2"
+
react@^16.7.0, "react@^16.8.0 || ^17.0.0-rc.1":
version "16.13.1"
resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e"
@@ -19547,9 +19565,9 @@ regenerator-runtime@^0.11.0:
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
regenerator-runtime@^0.13.4:
- version "0.13.5"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
- integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==
+ version "0.13.9"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
+ integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
regenerator-runtime@^0.13.7:
version "0.13.7"