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 */}
{/* Modal dialog */}
{/* Close button */}
{children}
>
);
}
export default ModalAction;