diff --git a/ui/src/Components/Animations/MountModal/index.tsx b/ui/src/Components/Animations/MountModal/index.tsx deleted file mode 100644 index 27916c707..000000000 --- a/ui/src/Components/Animations/MountModal/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React, { FC, ReactNode } from "react"; - -import { CSSTransition } from "react-transition-group"; - -const MountModal: FC<{ - children: ReactNode; - in: boolean; - unmountOnExit?: boolean; -}> = ({ children, ...props }) => ( - - {children} - -); - -const MountModalBackdrop: FC<{ - children: ReactNode; - in?: boolean; - unmountOnExit?: boolean; -}> = ({ children, ...props }) => ( - - {children} - -); - -export { MountModal, MountModalBackdrop }; diff --git a/ui/src/Components/Modal/index.test.tsx b/ui/src/Components/Modal/index.test.tsx index 69fc23a70..8be277299 100644 --- a/ui/src/Components/Modal/index.test.tsx +++ b/ui/src/Components/Modal/index.test.tsx @@ -99,14 +99,14 @@ describe("", () => { expect(document.body.className.split(" ")).toContain("modal-open"); }); - it("passes extra props down to the MountModal animation component", () => { + it("passes extra props down to the CSSTransition animation component", () => { const onExited = jest.fn(); const tree = mount(
); - const mountModal = tree.find("MountModal"); + const mountModal = tree.find("CSSTransition").at(0); expect((mountModal.props() as any).onExited).toBe(onExited); }); diff --git a/ui/src/Components/Modal/index.tsx b/ui/src/Components/Modal/index.tsx index bc2b50eba..6919f5dac 100644 --- a/ui/src/Components/Modal/index.tsx +++ b/ui/src/Components/Modal/index.tsx @@ -1,15 +1,12 @@ import React, { FC, useEffect } from "react"; import ReactDOM from "react-dom"; +import { CSSTransition } from "react-transition-group"; + import { disableBodyScroll, enableBodyScroll } from "body-scroll-lock"; import { useHotkeys } from "react-hotkeys-hook"; -import { - MountModal, - MountModalBackdrop, -} from "Components/Animations/MountModal"; - const ModalInner: FC<{ size: "lg" | "xl"; isUpper: boolean; @@ -60,19 +57,34 @@ const Modal: FC<{ isOpen, isUpper = false, toggleOpen, + onExited, children, - ...props }) => { return ReactDOM.createPortal( - + {children} - - + +
- + , document.body ); diff --git a/ui/src/Styles/Components/MountModal.scss b/ui/src/Styles/Components/MountModal.scss index a1efd9b6a..00c69a7a7 100644 --- a/ui/src/Styles/Components/MountModal.scss +++ b/ui/src/Styles/Components/MountModal.scss @@ -1,51 +1,52 @@ -$duration: 0.2s; +$duration: 0.3s; +$move: -33%; +$opacity-modal: 0.5; +$opacity-bg: 0.8; +$easing: ease-in-out; .components-animation-modal { will-change: opacity, transform; transform: translateZ(0); } -.components-animation-modal-appear, -.components-animation-modal-enter { - opacity: 0.01; - transform: translate(0, -25%); +.components-animation-modal-enter > .modal > .modal-dialog { + opacity: $opacity-modal; + transform: translate(0, $move); } -.components-animation-modal-appear-active, -.components-animation-modal-enter-active { + +.components-animation-modal-enter-active > .modal > .modal-dialog { opacity: 1; - transition: transform $duration ease-out, opacity $duration ease-in; + transition: transform $duration $easing, opacity $duration $easing; transform: translate(0, 0); } -.components-animation-modal-exit { +.components-animation-modal-exit > .modal > .modal-dialog { opacity: 1; transform: translate(0, 0); } -.components-animation-modal-exit-active { - opacity: 0.01; - transform: translate(0, -25%); - transition: transform $duration ease-in, opacity $duration ease-out; +.components-animation-modal-exit-active > .modal > .modal-dialog { + opacity: $opacity-modal; + transform: translate(0, $move); + transition: transform $duration $easing, opacity $duration $easing; } -.components-animation-backdrop-appear, .components-animation-backdrop-enter { - opacity: 0.01; + opacity: $opacity-modal; } -.components-animation-backdrop-appear-active, .components-animation-backdrop-enter-active { - opacity: $modal-backdrop-opacity; - transition: opacity $duration ease-in; + opacity: $opacity-bg; + transition: opacity $duration $easing; } .components-animation-backdrop-enter-done { - opacity: $modal-backdrop-opacity; - transition: opacity $duration ease-in; + opacity: $opacity-bg; + transition: opacity $duration $easing; } .components-animation-backdrop-exit { - opacity: $modal-backdrop-opacity; + opacity: $opacity-bg; } .components-animation-backdrop-exit-active { opacity: 0.01; - transition: opacity $duration ease-out; + transition: opacity $duration $easing; }