diff --git a/packages/app/src/components/PostCreatorModal/index.jsx b/packages/app/src/components/PostCreatorModal/index.jsx new file mode 100644 index 00000000..ce3d5ee7 --- /dev/null +++ b/packages/app/src/components/PostCreatorModal/index.jsx @@ -0,0 +1,63 @@ +import React from "react" +import classnames from "classnames" + +import PostCreator from "../PostCreator" + +import "./index.less" + +export default (props) => { + const [visible, setVisible] = React.useState(true) + + let escTimeout = null + + const close = () => { + setVisible(false) + + setTimeout(() => { + if (typeof props.onClose === "function") { + props.onClose() + } + }, 150) + } + + const handleEsc = (e) => { + if (e.key === "Escape") { + if (escTimeout !== null) { + clearTimeout(escTimeout) + return close() + } + + escTimeout = setTimeout(() => { + escTimeout = null + }, 250) + } + } + + const handleClickOutside = (e) => { + if (e.target === e.currentTarget) { + close() + } + } + + React.useEffect(() => { + document.addEventListener("keydown", handleEsc, false) + + return () => { + document.removeEventListener("keydown", handleEsc, false) + } + }, []) + + return