diff --git a/packages/component-modal/src/components/withModal.js b/packages/component-modal/src/components/withModal.js index 0ee82669d2ebecd18d0b10b0eea4f5d3c5ef38e5..1d5c786c7b6026264442f30a9ab52ecb59c0a7fa 100644 --- a/packages/component-modal/src/components/withModal.js +++ b/packages/component-modal/src/components/withModal.js @@ -1,28 +1,29 @@ import React from 'react' +import { omit } from 'lodash' import { connect } from 'react-redux' import Modal from './Modal' -import { setModalVisibility } from '../redux/modal' +import { showModal, hideModal } from '../redux/modal' const mapState = state => ({ - modalVisible: state.modal.visible, + modalsVisibility: omit(state.modal, 'props'), modalProps: state.modal.props, }) -const mapDispatch = dispatch => ({ - hideModal: e => dispatch(setModalVisibility(false)), - showModal: (modalProps = {}) => - dispatch(setModalVisibility(true, modalProps)), +const mapDispatch = modalKey => (dispatch, propss) => ({ + hideModal: () => dispatch(hideModal()), + showModal: (modalProps = {}) => dispatch(showModal(modalKey, modalProps)), }) const withModal = ({ + modalKey, modalComponent: Component, overlayColor, }) => WrappedComponent => - connect(mapState, mapDispatch)( - ({ modalVisible, modalProps, hideModal, ...rest }) => ( + connect(mapState, mapDispatch(modalKey))( + ({ modalsVisibility, modalProps, hideModal, ...rest }) => ( <React.Fragment> - {modalVisible && ( + {modalsVisibility[modalKey] && ( <Modal {...modalProps} component={Component} diff --git a/packages/component-modal/src/redux/modal.js b/packages/component-modal/src/redux/modal.js index 8730d759836c52c0d062c0ba9cdd735cdb6e2e6a..cba9f707d60c3001c123abad56ced39270e1821e 100644 --- a/packages/component-modal/src/redux/modal.js +++ b/packages/component-modal/src/redux/modal.js @@ -1,20 +1,33 @@ const initialState = { - visible: false, props: {}, } -const SET_MODAL_VISIBILTY = 'modal/SET_MODAL_VISIBILTY' +const SHOW_MODAL = 'modal/SHOW_MODAL' +const HIDE_MODAL = 'modal/HIDE_MODAL' -export const setModalVisibility = (visible, props = {}) => ({ - type: SET_MODAL_VISIBILTY, +export const showModal = (modalKey, props = {}) => ({ + type: SHOW_MODAL, payload: { - visible, + modalKey, props, }, }) +export const hideModal = () => ({ + type: HIDE_MODAL, +}) + +export const getModalVisibility = (state, modalKey) => state[modalKey] + export default (state = initialState, action = {}) => { switch (action.type) { + case SHOW_MODAL: + return { + [action.payload.modalKey]: true, + props: action.payload.props, + } + case HIDE_MODAL: + return initialState default: return state } diff --git a/packages/components-faraday/package.json b/packages/components-faraday/package.json index e9712a020a7ae437039e2530163351a2d6129862..d262d3dbd0b4a9ea1d1ed71a68fcddd47efccf55 100644 --- a/packages/components-faraday/package.json +++ b/packages/components-faraday/package.json @@ -6,7 +6,6 @@ "dependencies": { "@pubsweet/ui": "^3.1.0", "moment": "^2.20.1", - "portal-modal": "^1.0.3", "prop-types": "^15.5.10", "react": "^16.1.0", "react-dnd": "^2.5.4", diff --git a/packages/components-faraday/src/components/Dashboard/AssignEditor.js b/packages/components-faraday/src/components/Dashboard/AssignEditor.js index 1e05fedce2f298012d07b38e776cbb560f68395e..0ae9d05aa4e3b6de628d7d6e4264ccf5c85578f6 100644 --- a/packages/components-faraday/src/components/Dashboard/AssignEditor.js +++ b/packages/components-faraday/src/components/Dashboard/AssignEditor.js @@ -8,6 +8,7 @@ const AssignEditor = ({ assign }) => <button onClick={assign}>ASSIGN</button> export default compose( withModal({ + modalKey: 'assignHEmodal', modalComponent: HEModal, }), withHandlers({ diff --git a/packages/components-faraday/src/components/Dashboard/AssignHEModal.js b/packages/components-faraday/src/components/Dashboard/AssignHEModal.js index f6694a7e68e6495c33973c1549c92b21d245b87a..86e6d1438c6334a18508077cd7bbcf56b1ff03f9 100644 --- a/packages/components-faraday/src/components/Dashboard/AssignHEModal.js +++ b/packages/components-faraday/src/components/Dashboard/AssignHEModal.js @@ -37,6 +37,7 @@ class AssignHEModal extends React.Component { const filteredEditors = this.filterEditors(editors) return ( <RootModal> + <button onClick={this.props.hideModal}>CLOSE</button> <ModalTitle>Assign Handling Editor</ModalTitle> <ModalHeader> <span>HANDLING EDITORS</span> diff --git a/packages/components-faraday/src/components/Dashboard/DashboardCard.js b/packages/components-faraday/src/components/Dashboard/DashboardCard.js index 02a1c5618e237282ec1bdbb44f6190b0e98da06c..9401acd55ba87aac3e577ecc444865d973eb433d 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardCard.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardCard.js @@ -1,13 +1,12 @@ import React from 'react' import { get } from 'lodash' import PropTypes from 'prop-types' +import { compose, getContext } from 'recompose' import { Button, Icon, th } from '@pubsweet/ui' import styled, { css, withTheme } from 'styled-components' -import { compose, getContext } from 'recompose' - -import { parseVersion, parseJournalIssue } from './utils' import ZipFiles from './ZipFiles' +import { parseVersion, parseJournalIssue } from './utils' import HandlingEditorActions from './HandlingEditorActions' const DashboardCard = ({ diff --git a/packages/components-faraday/src/index.js b/packages/components-faraday/src/index.js index 1565988f79fc73e887eb11f0e05b6ced7319b307..babba89a0463742f8865121f3975cb48a8b5fda4 100644 --- a/packages/components-faraday/src/index.js +++ b/packages/components-faraday/src/index.js @@ -4,7 +4,6 @@ module.exports = { reducers: { authors: () => require('./redux/authors').default, files: () => require('./redux/files').default, - modal: () => require('./redux/modal').default, editors: () => require('./redux/editors').default, }, }, diff --git a/packages/components-faraday/src/redux/index.js b/packages/components-faraday/src/redux/index.js index 8e6ed7c70b87ba2cdb0b2739fd44cb2f41dc81a4..cf03e87f32321c663eebead2e2354f09687aa323 100644 --- a/packages/components-faraday/src/redux/index.js +++ b/packages/components-faraday/src/redux/index.js @@ -1,3 +1,2 @@ -export { default as modal } from './modal' export { default as authors } from './authors' export { default as editors } from './editors' diff --git a/packages/components-faraday/src/redux/modal.js b/packages/components-faraday/src/redux/modal.js deleted file mode 100644 index ba8a4ba264804681f2a9a070665e76db97c49b5d..0000000000000000000000000000000000000000 --- a/packages/components-faraday/src/redux/modal.js +++ /dev/null @@ -1,3 +0,0 @@ -import { modalReducer } from 'portal-modal' - -export default modalReducer