Newer
Older
import React from 'react'
import { connect } from 'react-redux'
import Modal from './Modal'
import { setModalVisibility } from '../redux/modal'
const mapState = state => ({
modalVisible: state.modal.visible,
modalProps: state.modal.props,
})
const mapDispatch = dispatch => ({
hideModal: e => dispatch(setModalVisibility(false)),
showModal: (modalProps = {}) =>
dispatch(setModalVisibility(true, modalProps)),
})
const withModal = ({
modalComponent: Component,
overlayColor,
}) => WrappedComponent =>
connect(mapState, mapDispatch)(
({ modalVisible, modalProps, hideModal, ...rest }) => (
{modalVisible && (
<Modal
{...modalProps}
component={Component}
hideModal={hideModal}
overlayColor={overlayColor}
/>
)}
<WrappedComponent hideModal={hideModal} {...rest} />
</React.Fragment>