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;
}