diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js index fa3b5313cfa72f48a368757e320f9dea18b6ce79..1c40f7107e6358774fcac738b4e62cb0774b16a4 100644 --- a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js +++ b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js @@ -1,6 +1,6 @@ import React from 'react' -import { get } from 'lodash' -import { compose } from 'recompose' +import { get, last } from 'lodash' +import { compose, withProps } from 'recompose' import styled from 'styled-components' import { reduxForm } from 'redux-form' import { th } from '@pubsweet/ui-toolkit' @@ -19,12 +19,34 @@ import { withFetching, } from '../' +const eicDecisions = [ + { + value: 'return-to-handling-editor', + label: 'Return to Handling Editor', + modalTitle: 'Return Manuscript', + modalSubtitle: + 'A returning manuscript to Handling Editor decision is final', + }, + { + value: 'publish', + label: 'Publish', + modalTitle: 'Publish Manuscript', + modalSubtitle: 'A publish decision is final', + }, + { + value: 'reject', + label: 'Reject', + modalTitle: 'Reject Manuscript', + modalSubtitle: 'A rejection decision is final', + }, +] + const ManuscriptEicDecision = ({ isFetching, formValues, handleSubmit, messagesLabel, - options = [], + collection = {}, ...rest }) => ( <ContextualBox label="Your Editorial Decision" {...rest}> @@ -33,7 +55,16 @@ const ManuscriptEicDecision = ({ <ItemOverrideAlert flex={0} vertical> <Label required>Decision</Label> <ValidatedField - component={input => <Menu {...input} options={options} />} + component={input => ( + <Menu + {...input} + options={ + get(collection, 'status', 'submitted') === 'submitted' + ? [last(eicDecisions)] + : eicDecisions + } + /> + )} name="decision" validate={[required]} /> @@ -71,15 +102,32 @@ export default compose( modalKey: 'eic-decision', modalComponent: MultiAction, })), + withProps(({ formValues }) => ({ + modalTitle: eicDecisions.find( + o => o.value === get(formValues, 'decision', 'publish'), + ).modalTitle, + modalSubtitle: eicDecisions.find( + o => o.value === get(formValues, 'decision', 'publish'), + ).modalSubtitle, + })), reduxForm({ form: 'eic-decision', onSubmit: ( values, dispatch, - { submitDecision, showModal, setFetching }, + { + submitDecision, + showModal, + setFetching, + modalTitle, + confirmMessage, + modalSubtitle, + }, ) => { showModal({ - title: 'Are you sure you want to submit this decision?', + title: `${modalTitle}?`, + confirmText: modalTitle, + subtitle: modalSubtitle, onConfirm: modalProps => { submitDecision(values, { ...modalProps, setFetching }) }, diff --git a/packages/component-faraday-ui/src/modals/MultiAction.js b/packages/component-faraday-ui/src/modals/MultiAction.js index a1beeaf592edb16b9df1a02bdab80e24027c9fab..d8359edec7d8bd613a5a8401ba4629092429ee8f 100644 --- a/packages/component-faraday-ui/src/modals/MultiAction.js +++ b/packages/component-faraday-ui/src/modals/MultiAction.js @@ -20,7 +20,11 @@ const MultiAction = ({ <Root> <IconButton icon="x" onClick={onClose} right={5} secondary top={5} /> <H2>{title}</H2> - {subtitle && <Text secondary>{subtitle}</Text>} + {subtitle && ( + <Text mb={1} secondary> + {subtitle} + </Text> + )} {renderContent()} {modalError && ( <Text error mt={1}> diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index ba4b2e5c23a12392e88506a39a423219cead36da..dda691a1818b1bf2f31f221f257501684cb566ad 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -1,6 +1,6 @@ import React, { Fragment } from 'react' import styled from 'styled-components' -import { isEmpty, get, last } from 'lodash' +import { isEmpty, get } from 'lodash' import { Text, paddingHelper, @@ -18,12 +18,6 @@ import ReviewerReportCard from './ReviewReportCard' import ReviewerReportForm from './ReviewerReportForm' import EditorialCommentCard from './EditorialCommentCard' -const eicDecisions = [ - { value: 'return-to-handling-editor', label: 'Return to Handling Editor' }, - { value: 'publish', label: 'Publish' }, - { value: 'reject', label: 'Reject' }, -] - const messagesLabel = { 'return-to-handling-editor': 'Comments for Handling Editor', reject: 'Comments for Author', @@ -198,15 +192,11 @@ const ManuscriptLayout = ({ {get(currentUser, 'permissions.canMakeDecision', false) && ( <ManuscriptEicDecision + collection={collection} formValues={get(formValues, 'eicDecision')} highlight={editorialRecommendations.length > 0} messagesLabel={messagesLabel} mt={2} - options={ - get(collection, 'status', 'submitted') === 'submitted' - ? [last(eicDecisions)] - : eicDecisions - } submitDecision={createRecommendation} /> )}