import { cn } from "@/utils/class-merge"; import { FunctionComponent } from "preact"; import { Dispatch, StateUpdater, useEffect } from "preact/hooks"; interface ModalWindowProps { isOpen?: boolean; setIsOpen?: Dispatch>; onClose?: () => void; className?: string; zIndex?: number; } const ModalWindow: FunctionComponent = ({ isOpen, children, setIsOpen, onClose, className = "", zIndex, }) => { useEffect(() => { if (isOpen) return; if (onClose) onClose(); }, [isOpen]); return ( isOpen && (
{ e.stopPropagation(); if (setIsOpen) setIsOpen(false); }} class={cn( "fixed top-0 left-0 z-50 flex h-screen w-screen cursor-pointer flex-col items-center justify-center bg-black/50" )} style={{ zIndex: zIndex }} >
e.stopPropagation()} > {children}
) ); }; export default ModalWindow;