import { FC, useRef, useEffect, useCallback } from 'react'; import s from './Modal.module.css'; import FocusTrap from '@lib/focus-trap'; import { Cross } from '@components/icons'; import { disableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock'; interface ModalProps { className?: string; children?: any; onClose: () => void; onEnter?: () => void | null; } const Modal: FC = ({ children, onClose }) => { const ref = useRef() as React.MutableRefObject; const handleKey = useCallback( (e: KeyboardEvent) => { if (e.key === 'Escape') { return onClose(); } }, [onClose] ); useEffect(() => { const modal = ref.current; if (modal) { disableBodyScroll(modal, { reserveScrollBarGap: true }); window.addEventListener('keydown', handleKey); } return () => { clearAllBodyScrollLocks(); window.removeEventListener('keydown', handleKey); }; }, [handleKey]); return (
{children}
); }; export default Modal;