Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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: () => dispatch(setModalVisibility(false)),
showModal: (modalProps = {}) =>
dispatch(setModalVisibility(true, modalProps)),
})
const withModal = ({
modalComponent: Component,
overlayColor,
}) => WrappedComponent =>
connect(mapState, mapDispatch)(
({ modalVisible, modalProps, hideModal, ...rest }) => (
<div>
{modalVisible && (
<Modal
{...modalProps}
component={Component}
hideModal={hideModal}
overlayColor={overlayColor}
/>
)}
<WrappedComponent {...rest} />
</div>
),
)
export default withModal