aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/components/dialog/Dialog.tsx
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2023-08-29 01:30:30 +0800
committercrupest <crupest@outlook.com>2023-08-29 01:30:30 +0800
commitb05860b6d2ea17db29a338659def49dc31082346 (patch)
treecbbd9d99af5e6b006f142effeae5222278dad02f /FrontEnd/src/components/dialog/Dialog.tsx
parent502dd817c79018c84b0a958dd4b2e24781e68ae1 (diff)
downloadtimeline-b05860b6d2ea17db29a338659def49dc31082346.tar.gz
timeline-b05860b6d2ea17db29a338659def49dc31082346.tar.bz2
timeline-b05860b6d2ea17db29a338659def49dc31082346.zip
Refactor dialog module.
Diffstat (limited to 'FrontEnd/src/components/dialog/Dialog.tsx')
-rw-r--r--FrontEnd/src/components/dialog/Dialog.tsx18
1 files changed, 6 insertions, 12 deletions
diff --git a/FrontEnd/src/components/dialog/Dialog.tsx b/FrontEnd/src/components/dialog/Dialog.tsx
index 2ff7bea8..b1d66704 100644
--- a/FrontEnd/src/components/dialog/Dialog.tsx
+++ b/FrontEnd/src/components/dialog/Dialog.tsx
@@ -5,6 +5,8 @@ import classNames from "classnames";
import { ThemeColor } from "../common";
+import { useCloseDialog } from "./DialogProvider";
+
import "./Dialog.css";
const optionalPortalElement = document.getElementById("portal");
@@ -14,22 +16,20 @@ if (optionalPortalElement == null) {
const portalElement = optionalPortalElement;
interface DialogProps {
- open: boolean;
- onClose: () => void;
color?: ThemeColor;
children?: ReactNode;
disableCloseOnClickOnOverlay?: boolean;
}
export default function Dialog({
- open,
- onClose,
color,
children,
disableCloseOnClickOnOverlay,
}: DialogProps) {
color = color ?? "primary";
+ const closeDialog = useCloseDialog();
+
const nodeRef = useRef(null);
return ReactDOM.createPortal(
@@ -37,7 +37,7 @@ export default function Dialog({
nodeRef={nodeRef}
mountOnEnter
unmountOnExit
- in={open}
+ in
timeout={300}
classNames="cru-dialog"
>
@@ -47,13 +47,7 @@ export default function Dialog({
>
<div
className="cru-dialog-background"
- onClick={
- disableCloseOnClickOnOverlay
- ? undefined
- : () => {
- onClose();
- }
- }
+ onClick={disableCloseOnClickOnOverlay ? undefined : closeDialog}
/>
<div className="cru-dialog-container">{children}</div>
</div>