diff options
author | crupest <crupest@outlook.com> | 2023-09-22 16:58:30 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-09-22 16:59:41 +0800 |
commit | 6dd0bafa45ce22f0acac7d6e097e3f1790cdb5d7 (patch) | |
tree | 6378aa13ebc5974cbfeeca9f6d525a643993687d /FrontEnd/src/components/dialog/Dialog.tsx | |
parent | d477c7270c90b190ed82b13f48f39a05d83503d2 (diff) | |
download | timeline-6dd0bafa45ce22f0acac7d6e097e3f1790cdb5d7.tar.gz timeline-6dd0bafa45ce22f0acac7d6e097e3f1790cdb5d7.tar.bz2 timeline-6dd0bafa45ce22f0acac7d6e097e3f1790cdb5d7.zip |
...
Diffstat (limited to 'FrontEnd/src/components/dialog/Dialog.tsx')
-rw-r--r-- | FrontEnd/src/components/dialog/Dialog.tsx | 50 |
1 files changed, 11 insertions, 39 deletions
diff --git a/FrontEnd/src/components/dialog/Dialog.tsx b/FrontEnd/src/components/dialog/Dialog.tsx index 2d0b34db..b5524a11 100644 --- a/FrontEnd/src/components/dialog/Dialog.tsx +++ b/FrontEnd/src/components/dialog/Dialog.tsx @@ -1,10 +1,8 @@ -import { ReactNode, useRef } from "react"; -import classNames from "classnames"; -import { CSSTransition } from "react-transition-group"; +import { ReactNode } from "react"; import { ThemeColor } from "../common"; -import InPortal from "../InPortal"; +import DialogOverlay from "./DialogOverlay"; import "./Dialog.css"; @@ -23,41 +21,15 @@ export default function Dialog({ children, disableCloseOnClickOnOverlay, }: DialogProps) { - const nodeRef = useRef(null); - const lastPointerDownIdRef = useRef<number | null>(null); - return ( - <InPortal> - <CSSTransition - nodeRef={nodeRef} - mountOnEnter - unmountOnExit - in={open} - timeout={300} - classNames="cru-dialog" - > - <div - ref={nodeRef} - className={classNames( - `cru-theme-${color ?? "primary"}`, - "cru-dialog-overlay", - )} - > - <div - className="cru-dialog-background" - onPointerDown={(e) => { - lastPointerDownIdRef.current = e.pointerId; - }} - onPointerUp={(e) => { - if (lastPointerDownIdRef.current === e.pointerId) { - if (!disableCloseOnClickOnOverlay) onClose(); - } - lastPointerDownIdRef.current = null; - }} - /> - <div className="cru-dialog-container">{children}</div> - </div> - </CSSTransition> - </InPortal> + <DialogOverlay + open={open} + onClose={onClose} + transitionClassNames="cru-dialog-normal" + overlayClassName={`cru-dialog-normal cru-theme-${color ?? "primary"}`} + disableCloseOnClickOnOverlay={disableCloseOnClickOnOverlay} + > + {children} + </DialogOverlay> ); } |