import React, { useRef, useEffect } from 'react'; import Transition from '../utils/Transition'; function ModalAction({ children, id, modalOpen, setModalOpen }) { const modalContent = useRef(null); // close on click outside useEffect(() => { const clickHandler = ({ target }) => { if (!modalOpen || modalContent.current.contains(target)) return setModalOpen(false); }; document.addEventListener('click', clickHandler); return () => document.removeEventListener('click', clickHandler); }); // close if the esc key is pressed useEffect(() => { const keyHandler = ({ keyCode }) => { if (!modalOpen || keyCode !== 27) return; setModalOpen(false); }; document.addEventListener('keydown', keyHandler); return () => document.removeEventListener('keydown', keyHandler); }); return ( <> {/* Modal backdrop */}