From 7c5f31b59570f953d0422d1b6c0f71f256dc2b4b Mon Sep 17 00:00:00 2001
From: Alexandru Munteanu <alexandru.munt@gmail.com>
Date: Tue, 28 Aug 2018 16:02:19 +0300
Subject: [PATCH] feat(assign-he): create manuscript assign he component

---
 .../manuscriptDetails/ManuscriptAssignHE.js   | 25 ++++++++++++
 .../manuscriptDetails/ManuscriptAssignHE.md   | 40 +++++++++++++++++++
 .../src/manuscriptDetails/index.js            |  1 +
 .../src/components/ManuscriptLayout.js        | 27 +++++--------
 .../src/components/ManuscriptPage.js          |  2 +-
 5 files changed, 78 insertions(+), 17 deletions(-)
 create mode 100644 packages/component-faraday-ui/src/manuscriptDetails/ManuscriptAssignHE.js
 create mode 100644 packages/component-faraday-ui/src/manuscriptDetails/ManuscriptAssignHE.md

diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptAssignHE.js b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptAssignHE.js
new file mode 100644
index 000000000..f87172cd9
--- /dev/null
+++ b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptAssignHE.js
@@ -0,0 +1,25 @@
+import React from 'react'
+import { ContextualBox, AssignHE } from 'pubsweet-component-faraday-ui'
+
+const ManuscriptAssignHE = ({
+  toggle,
+  assignHE,
+  expanded,
+  currentUser,
+  handlingEditors = [],
+}) =>
+  currentUser.canAssignHE ? (
+    <ContextualBox
+      expanded={expanded}
+      label="Assign Handling Editor"
+      scrollIntoView
+      toggle={toggle}
+    >
+      <AssignHE
+        handlingEditors={handlingEditors}
+        inviteHandlingEditor={assignHE}
+      />
+    </ContextualBox>
+  ) : null
+
+export default ManuscriptAssignHE
diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptAssignHE.md b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptAssignHE.md
new file mode 100644
index 000000000..e1eaea01f
--- /dev/null
+++ b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptAssignHE.md
@@ -0,0 +1,40 @@
+Manuscript handling editors table.
+
+```js
+const handlingEditors = [
+  {
+    id: '1',
+    firstName: 'Handling',
+    lastName: 'Edi',
+    email: 'handling1@edi.com',
+  },
+  {
+    id: '2',
+    firstName: 'Alex',
+    lastName: 'Pricop',
+    email: 'handling2@edi.com',
+  },
+  {
+    id: '3',
+    firstName: 'Bogdan',
+    lastName: 'Cochior',
+    email: 'handling3@edi.com',
+  },
+];
+
+const currentUser = {
+  canAssignHE: true,
+};
+
+<RemoteOpener>
+  {(expanded, toggle) => (
+    <ManuscriptAssignHE
+      toggle={toggle}
+      expanded={expanded}
+      currentUser={currentUser}
+      handlingEditors={handlingEditors}
+      assignHE={he => console.log('assigning...', he)}
+    />
+  )}
+</RemoteOpener>
+```
diff --git a/packages/component-faraday-ui/src/manuscriptDetails/index.js b/packages/component-faraday-ui/src/manuscriptDetails/index.js
index ea34a18be..ec99d00ce 100644
--- a/packages/component-faraday-ui/src/manuscriptDetails/index.js
+++ b/packages/component-faraday-ui/src/manuscriptDetails/index.js
@@ -3,3 +3,4 @@ export { default as ManuscriptVersion } from './ManuscriptVersion'
 export { default as ManuscriptHeader } from './ManuscriptHeader'
 export { default as ManuscriptMetadata } from './ManuscriptMetadata'
 export { default as ManuscriptFileList } from './ManuscriptFileList'
+export { default as ManuscriptAssignHE } from './ManuscriptAssignHE'
diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js
index bb4633cce..02a88b9c1 100644
--- a/packages/component-manuscript/src/components/ManuscriptLayout.js
+++ b/packages/component-manuscript/src/components/ManuscriptLayout.js
@@ -3,10 +3,9 @@ import { isEmpty } from 'lodash'
 import styled from 'styled-components'
 import {
   Text,
-  AssignHE,
   RemoteOpener,
-  ContextualBox,
   ManuscriptHeader,
+  ManuscriptAssignHE,
   ManuscriptMetadata,
   ManuscriptDetailsTop,
 } from 'pubsweet-component-faraday-ui'
@@ -18,7 +17,6 @@ const ManuscriptLayout = ({
   currentUser,
   getSignedUrl,
   editorInChief,
-  canMakeRevision,
   handlingEditors,
   hasResponseToReviewers,
   editorialRecommendations,
@@ -40,6 +38,7 @@ const ManuscriptLayout = ({
               history={history}
               {...permissions}
             />
+
             <ManuscriptHeader
               collection={collection}
               editorInChief={editorInChief}
@@ -50,24 +49,20 @@ const ManuscriptLayout = ({
               resendInvitation={assignHE}
               revokeInvitation={revokeHE}
             />
+
             <ManuscriptMetadata
               currentUser={currentUser}
               fragment={fragment}
               getSignedUrl={getSignedUrl}
             />
-            {currentUser.canAssignHE && (
-              <ContextualBox
-                expanded={expanded}
-                label="Assign Handling Editor"
-                scrollIntoView
-                toggle={toggle}
-              >
-                <AssignHE
-                  handlingEditors={handlingEditors}
-                  inviteHandlingEditor={assignHE}
-                />
-              </ContextualBox>
-            )}
+
+            <ManuscriptAssignHE
+              assignHE={assignHE}
+              currentUser={currentUser}
+              expanded={expanded}
+              handlingEditors={handlingEditors}
+              toggle={toggle}
+            />
           </Fragment>
         )}
       </RemoteOpener>
diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js
index 53a86f701..d71eada22 100644
--- a/packages/component-manuscript/src/components/ManuscriptPage.js
+++ b/packages/component-manuscript/src/components/ManuscriptPage.js
@@ -90,8 +90,8 @@ export default compose(
       isReviewer: currentUserIsReviewer(state),
       canAssignHE: canAssignHE(state, match.params.project),
     },
-    canMakeRevision: canMakeRevision(state, collection, fragment),
     permissions: {
+      canMakeRevision: canMakeRevision(state, collection, fragment),
       canMakeDecision: canMakeDecision(state, collection, fragment),
       canEditManuscript: canEditManuscript(state, collection, fragment),
       canOverrideTechChecks: canOverrideTechnicalChecks(state, collection),
-- 
GitLab