import "./Modal.scss"; import { createPortal } from "react-dom"; import clsx from "clsx"; import { KEYS } from "../keys"; import { AppState } from "../types"; import { useCreatePortalContainer } from "../hooks/useCreatePortalContainer"; export const Modal: React.FC<{ className?: string; children: React.ReactNode; maxWidth?: number; onCloseRequest(): void; labelledBy: string; theme?: AppState["theme"]; closeOnClickOutside?: boolean; }> = (props) => { const { closeOnClickOutside = true } = props; const modalRoot = useCreatePortalContainer({ className: "excalidraw-modal-container", }); if (!modalRoot) { return null; } const handleKeydown = (event: React.KeyboardEvent) => { if (event.key === KEYS.ESCAPE) { event.nativeEvent.stopImmediatePropagation(); event.stopPropagation(); props.onCloseRequest(); } }; return createPortal(
{props.children}
, modalRoot, ); };