import React from 'react' import { Provider } from 'react-redux' import ReactDOM from 'react-dom' import { store } from '../store' class ModalBase extends React.Component { constructor(props) { super(props) this.state = { component: null, componentProps: {}, isHidden: true } } close() { if (modalBase != null) modalBase.setState({ component: null, componentProps: null, isHidden: true }) // Toggle overflow style on NoteList const list = document.querySelector( '.NoteList__list___browser-main-NoteList-' ) list.style.overflow = 'auto' } render() { return (
this.close(e)} className='modalBack' /> {this.state.component == null ? null : ( )}
) } } const el = document.createElement('div') document.body.appendChild(el) const modalBase = ReactDOM.render(, el) export function openModal(component, props) { if (modalBase == null) { return } // Hide scrollbar by removing overflow when modal opens const list = document.querySelector( '.NoteList__list___browser-main-NoteList-' ) list.style.overflow = 'hidden' document.body.setAttribute('data-modal', 'open') modalBase.setState({ component: component, componentProps: props, isHidden: false }) } export function closeModal() { if (modalBase == null) { return } modalBase.close() } export function isModalOpen() { return !modalBase.state.isHidden } export default { open: openModal, close: closeModal, isOpen: isModalOpen }