From 296c248de3c51fc96010e0f188776b59f2dff3cd Mon Sep 17 00:00:00 2001 From: Anca Ursachi <anca.ursachi@thinslices.com> Date: Mon, 17 Dec 2018 13:50:52 +0200 Subject: [PATCH] fix(HERecommendation): Message for Author box should be mandatory when selecting Minor revision/Majo --- .../src/contextualBoxes/HERecommendation.js | 36 +++++++++++++------ .../ManuscriptEicDecision.js | 32 ++++++++++++++--- .../src/components/ManuscriptLayout.js | 1 + 3 files changed, 55 insertions(+), 14 deletions(-) diff --git a/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js b/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js index a07bbeaff..c96a30395 100644 --- a/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js +++ b/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js @@ -79,6 +79,10 @@ const HERecommendation = ({ handleSubmit, formValues, highlight, + rejectRecommendation, + publishRecommendation, + minorRevisionRecommendation, + majorRevisionRecommendation, ...rest }) => ( <ContextualBox @@ -111,31 +115,38 @@ const HERecommendation = ({ /> </ItemOverrideAlert> </Row> - {get(formValues, 'recommendation') === 'minor' || - get(formValues, 'recommendation') === 'major' ? ( + {(minorRevisionRecommendation || majorRevisionRecommendation) && ( <Row mt={2}> <ResponsiveItem data-test-id="editorial-recommendation-message-for-author" mr={1} vertical > - <Label> - Message for Author <Text secondary>Optional</Text> - </Label> - <ValidatedField component={Textarea} name="public" /> + <Label required>Message for Author</Label> + <ValidatedField + component={Textarea} + name="public" + validate={[required]} + /> </ResponsiveItem> </Row> - ) : ( + )} + {(publishRecommendation || rejectRecommendation) && ( <ResponsiveRow mt={2}> <ResponsiveItem data-test-id="editorial-recommendation-message-for-author" mr={1} vertical > - <Label> - Message for Author <Text secondary>Optional</Text> + <Label required={!!rejectRecommendation}> + Message for Author{' '} + {publishRecommendation ? <Text secondary> Optional</Text> : ''} </Label> - <ValidatedField component={Textarea} name="public" /> + <ValidatedField + component={Textarea} + name="public" + validate={rejectRecommendation ? [required] : false} + /> </ResponsiveItem> <ResponsiveItem @@ -199,9 +210,14 @@ export default compose( confirmMessage: options.find( o => o.value === get(formValues, 'recommendation', 'publish'), ).button, + rejectRecommendation: get(formValues, 'recommendation') === 'reject', + publishRecommendation: get(formValues, 'recommendation') === 'publish', + minorRevisionRecommendation: get(formValues, 'recommendation') === 'minor', + majorRevisionRecommendation: get(formValues, 'recommendation') === 'major', })), reduxForm({ form: 'HERecommendation', + destroyOnUnmount: false, onSubmit: ( values, dispatch, diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js index 3224fd577..982b3a240 100644 --- a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js +++ b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js @@ -1,5 +1,5 @@ import React from 'react' -import { get, initial } from 'lodash' +import { get, initial, chain } from 'lodash' import { compose, withProps } from 'recompose' import styled from 'styled-components' import { reduxForm } from 'redux-form' @@ -57,11 +57,12 @@ const ManuscriptEicDecision = ({ options, decision, formValues, + collection, isFetching, handleSubmit, messagesLabel, - collection, submitDecision, + lastHeRecommendation, ...rest }) => ( <ContextualBox @@ -81,7 +82,8 @@ const ManuscriptEicDecision = ({ </ItemOverrideAlert> </Row> - {decision !== 'publish' && ( + {(decision === 'revision' || + decision === 'return-to-handling-editor') && ( <Row mt={2} pl={1} pr={1}> <Item vertical> <Label required={decision !== 'reject'}> @@ -95,6 +97,22 @@ const ManuscriptEicDecision = ({ </Item> </Row> )} + {decision === 'reject' && ( + <Row mt={2} pl={1} pr={1}> + <Item vertical> + <Label required={lastHeRecommendation !== 'reject'}> + {messagesLabel[get(formValues, 'decision', 'reject')]} + </Label> + <ValidatedField + component={ValidatedTextArea} + name="message" + validate={ + lastHeRecommendation !== 'reject' ? [required] : undefined + } + /> + </Item> + </Row> + )} <Row justify="flex-end" mt={1} pr={1}> <Button onClick={handleSubmit} primary size="medium"> @@ -112,7 +130,7 @@ export default compose( modalKey: 'eic-decision', modalComponent: MultiAction, })), - withProps(({ formValues, collection }) => ({ + withProps(({ formValues, collection, fragment }) => ({ modalTitle: eicDecisions.find( o => o.value === get(formValues, 'decision', 'publish'), ).modalTitle, @@ -124,9 +142,15 @@ export default compose( eicDecisions, get(collection, 'status', 'submitted'), ), + lastHeRecommendation: chain(fragment) + .get('recommendations', []) + .last() + .get('recommendation', '') + .value(), })), reduxForm({ form: 'eic-decision', + destroyOnUnmount: false, onSubmit: ( values, dispatch, diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index 64fa83a98..6ebe36e83 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -284,6 +284,7 @@ const ManuscriptLayout = ({ collection={collection} expanded={eicDecisionExpanded} formValues={get(formValues, 'eicDecision')} + fragment={fragment} highlight={editorialRecommendations.length > 0} messagesLabel={messagesLabel} mt={2} -- GitLab