diff --git a/packages/component-faraday-ui/src/Tabs.js b/packages/component-faraday-ui/src/Tabs.js index 76d0699c166690707ae38dc344f0cfa5f0833d44..a7d90025dcd5eb9ce1d48215b0da37319fe9dffa 100644 --- a/packages/component-faraday-ui/src/Tabs.js +++ b/packages/component-faraday-ui/src/Tabs.js @@ -4,12 +4,9 @@ const Tabs = ({ items, selectedTab, changeTab, children }) => children({ selectedTab, changeTab }) export default compose( - withStateHandlers( - { selectedTab: 0 }, - { - changeTab: () => selectedTab => ({ - selectedTab, - }), - }, - ), + withStateHandlers(({ selectedTab = 0 }) => ({ selectedTab }), { + changeTab: () => selectedTab => ({ + selectedTab, + }), + }), )(Tabs) diff --git a/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js b/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js index b6184d7fbde2515fdf7cc4808626b309129c2f21..e5143cfe49b9d9a77998fa1b3f9286355cb5d1d5 100644 --- a/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js +++ b/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js @@ -20,10 +20,30 @@ import { } from 'pubsweet-component-faraday-ui/src' const options = [ - { value: 'publish', label: 'Publish' }, - { value: 'reject', label: 'Reject' }, - { value: 'minor', label: 'Request Minor Revision' }, - { value: 'major', label: 'Request Major Revision' }, + { + value: 'publish', + label: 'Publish', + message: 'Recommend Manuscript for Publishing', + button: 'Submit Recommendation', + }, + { + value: 'reject', + label: 'Reject', + message: 'Recommend Manuscript for Rejection', + button: 'Submit Recommendation', + }, + { + value: 'minor', + label: 'Request Minor Revision', + message: 'Request Minor Revision', + button: 'Request Revision', + }, + { + value: 'major', + label: 'Request Major Revision', + message: 'Request Major Revision', + button: 'Request Revision', + }, ] const parseFormValues = ({ recommendation, ...rest }) => { @@ -68,17 +88,15 @@ const HERecommendation = ({ </ItemOverrideAlert> </Row> - {get(formValues, 'recommendation') === 'publish' || - get(formValues, 'recommendation') === 'reject' ? ( + {get(formValues, 'recommendation') === 'minor' || + get(formValues, 'recommendation') === 'major' ? ( <Row mt={2}> - <ItemOverrideAlert vertical> - <Label required>Message for Author</Label> - <ValidatedField - component={Textarea} - name="public" - validate={[required]} - /> - </ItemOverrideAlert> + <ResponsiveItem mr={1} vertical> + <Label> + Message for Author <Text secondary>Optional</Text> + </Label> + <ValidatedField component={Textarea} name="public" /> + </ResponsiveItem> </Row> ) : ( <ResponsiveRow mt={2}> @@ -100,7 +118,11 @@ const HERecommendation = ({ <Row justify="flex-end" mt={2}> <Button onClick={handleSubmit} primary size="medium"> - Submit recommendation + { + options.find( + o => o.value === get(formValues, 'recommendation', 'publish'), + ).button + } </Button> </Row> </Root> @@ -116,17 +138,31 @@ export default compose( withProps(({ formValues }) => ({ modalTitle: options.find( o => o.value === get(formValues, 'recommendation', 'publish'), - ).label, + ).message, + confirmMessage: options.find( + o => o.value === get(formValues, 'recommendation', 'publish'), + ).button, })), reduxForm({ form: 'HERecommendation', onSubmit: ( values, dispatch, - { onRecommendationSubmit, showModal, setFetching, modalTitle }, + { + onRecommendationSubmit, + showModal, + setFetching, + modalTitle, + confirmMessage, + }, ) => { showModal({ title: `${modalTitle}?`, + confirmText: + confirmMessage === 'Submit Recommendation' + ? 'Submit' + : confirmMessage, + onConfirm: props => { onRecommendationSubmit(parseFormValues(values), { ...props, diff --git a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js index 48126901139102f39cc8bee06828e9647fd50b10..d64a8a58c009bf3d77b62b2f5e2367b371d389c9 100644 --- a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js +++ b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js @@ -21,7 +21,7 @@ import { const ReviewerDetails = ({ journal, - reports, + reports = [], fragment, invitations, previewFile, @@ -47,7 +47,7 @@ const ReviewerDetails = ({ toggle={toggle} {...rest} > - <Tabs> + <Tabs selectedTab={reports.length ? 1 : 0}> {({ selectedTab, changeTab }) => ( <Fragment> <TabsHeader> diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index 2450088dfa1d23f29cd9070bd21735f3a1f5d440..fc006093cb6812da5384997a07d97dba965ed1f3 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -181,15 +181,17 @@ const ManuscriptLayout = ({ /> )} - {get(currentUser, 'permissions.canMakeHERecommendation', false) && ( - <HERecommendation - formValues={get(formValues, 'editorialRecommendation', {})} - hasReviewerReports={reviewerRecommendations.length > 0} - highlight={reviewerRecommendations.length > 0} - modalKey="heRecommendation" - onRecommendationSubmit={onEditorialRecommendation} - /> - )} + {get(currentUser, 'permissions.canMakeHERecommendation', false) && + (!invitationsWithReviewers.length || + reviewerRecommendations.length > 0) && ( + <HERecommendation + formValues={get(formValues, 'editorialRecommendation', {})} + hasReviewerReports={reviewerRecommendations.length > 0} + highlight={reviewerRecommendations.length > 0} + modalKey="heRecommendation" + onRecommendationSubmit={onEditorialRecommendation} + /> + )} {get(currentUser, 'permissions.canMakeDecision', false) && ( <ManuscriptEicDecision diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js index aa69fb6d10850f9150dc2c078216f437074dfe2d..ac4868da0b46a6367c6241e128a699d413fb9f63 100644 --- a/packages/component-manuscript/src/components/ManuscriptPage.js +++ b/packages/component-manuscript/src/components/ManuscriptPage.js @@ -170,9 +170,7 @@ export default compose( eicDecision: getFormValues('eic-decision')(state), reviewerReport: getFormValues('reviewerReport')(state), responseToInvitation: getFormValues('answer-invitation')(state), - editorialRecommendation: getFormValues('editorialRecommendation')( - state, - ), + editorialRecommendation: getFormValues('HERecommendation')(state), }, invitationsWithReviewers: getInvitationsWithReviewersForFragment( state,