import React, { useEffect } from 'react' import Modal from 'react-modal' import styles from './ModalWrapper.module.scss' const customStyles = { overlay: { backgroundColor: 'rgba(32, 32, 32, 0.81)', zIndex: 199999 }, content: { top: '50%', left: '50%', right: 'auto', bottom: 'auto', marginRight: '-50%', transform: 'translate(-50%, -50%)', padding: '40px', borderRadius: '10px' } } const ModalWrapper = ({ isOpen, onCloseCallback = null, children }) => { const [modalIsOpen, setModalIsOpen] = React.useState(false) const closeModal = () => { setModalIsOpen(false) if (onCloseCallback) { onCloseCallback() } } useEffect(() => { // If our `isOpen` prop changes we set our local open state value respectively. // This allows the user to dismiss our modal by only modifying local state. if (isOpen) { setModalIsOpen(true) } }, [isOpen]) useEffect(() => { // Make sure to bind modal to your appElement (http://reactcommunity.org/react-modal/accessibility/) // We get window.envatoElements.modalAppHolder from our initial render in main.jsx: if (typeof window !== 'undefined' && window.envatoElements && window.envatoElements.modalAppHolder) { Modal.setAppElement(window.envatoElements.modalAppHolder) } }) return (
{typeof children === 'function' ? children({ closeModal }) : children}
) } export default ModalWrapper