From 8197ff9b45e729d240205a5177e037be88d954c0 Mon Sep 17 00:00:00 2001
From: Bogdan Cochior <bogdan.cochior@thinslices.com>
Date: Wed, 29 Aug 2018 16:26:34 +0300
Subject: [PATCH] refactor(manuscript-files): extract one file section into a
 separate component

---
 .../manuscriptDetails/ManuscriptFileList.js   | 101 ++++--------------
 .../ManuscriptFileSection.js                  |  29 +++++
 .../ManuscriptFileSection.md                  |  28 +++++
 .../src/manuscriptDetails/index.js            |   1 +
 4 files changed, 80 insertions(+), 79 deletions(-)
 create mode 100644 packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileSection.js
 create mode 100644 packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileSection.md

diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileList.js b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileList.js
index 3d139b5c2..1e2661c51 100644
--- a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileList.js
+++ b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileList.js
@@ -1,5 +1,5 @@
 import React, { Fragment } from 'react'
-import { Text, FileItem, Item, Row } from 'pubsweet-component-faraday-ui'
+import { ManuscriptFileSection } from 'pubsweet-component-faraday-ui'
 
 import { withFilePreview, withFileDownload } from '../helpers'
 
@@ -10,84 +10,27 @@ const ManuscriptFileList = ({
   ...rest
 }) => (
   <Fragment>
-    {!!manuscripts.length && (
-      <Fragment>
-        <Text labelLine mb={1} mt={1}>
-          MAIN MANUSCRIPT
-        </Text>
-        <Row justify="flex-start" mb={1}>
-          {manuscripts.map(file => (
-            <Item
-              alignItems="flex-start"
-              flex={0}
-              key={file.id}
-              mr={1}
-              vertical
-            >
-              <FileItem
-                item={file}
-                onDownload={downloadFile}
-                onPreview={previewFile}
-                {...rest}
-                mb={1}
-              />
-            </Item>
-          ))}
-        </Row>
-      </Fragment>
-    )}
-    {!!supplementary.length && (
-      <Fragment>
-        <Text labelLine mb={1} mt={2}>
-          SUPPLEMENTARY FILES
-        </Text>
-        <Row justify="flex-start" mb={1}>
-          {supplementary.map(file => (
-            <Item
-              alignItems="flex-start"
-              flex={0}
-              key={file.id}
-              mr={1}
-              vertical
-            >
-              <FileItem
-                item={file}
-                onDownload={downloadFile}
-                onPreview={previewFile}
-                {...rest}
-                mb={1}
-              />
-            </Item>
-          ))}
-        </Row>
-      </Fragment>
-    )}
-    {!!coverLetter.length && (
-      <Fragment>
-        <Text labelLine mb={1} mt={2}>
-          COVER LETTER
-        </Text>
-        <Row justify="flex-start" mb={1}>
-          {coverLetter.map(file => (
-            <Item
-              alignItems="flex-start"
-              flex={0}
-              key={file.id}
-              mr={1}
-              vertical
-            >
-              <FileItem
-                item={file}
-                onDownload={downloadFile}
-                onPreview={previewFile}
-                {...rest}
-                mb={1}
-              />
-            </Item>
-          ))}
-        </Row>
-      </Fragment>
-    )}
+    <ManuscriptFileSection
+      label="MAIN MANUSCRIPT"
+      list={manuscripts}
+      onDownload={downloadFile}
+      onPreview={previewFile}
+      {...rest}
+    />
+    <ManuscriptFileSection
+      label="SUPPLEMENTARY FILES"
+      list={supplementary}
+      onDownload={downloadFile}
+      onPreview={previewFile}
+      {...rest}
+    />
+    <ManuscriptFileSection
+      label="COVER LETTER"
+      list={coverLetter}
+      onDownload={downloadFile}
+      onPreview={previewFile}
+      {...rest}
+    />
   </Fragment>
 )
 
diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileSection.js b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileSection.js
new file mode 100644
index 000000000..8b0976d54
--- /dev/null
+++ b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileSection.js
@@ -0,0 +1,29 @@
+import React, { Fragment } from 'react'
+import { Text, FileItem, Item, Row } from 'pubsweet-component-faraday-ui'
+
+const ManuscriptFileSection = ({ list = [], label = '', ...rest }) => (
+  <Fragment>
+    {!!list.length && (
+      <Fragment>
+        <Text labelLine mb={1} mt={1}>
+          {label}
+        </Text>
+        <Row justify="flex-start" mb={1}>
+          {list.map(file => (
+            <Item
+              alignItems="flex-start"
+              flex={0}
+              key={file.id}
+              mr={1}
+              vertical
+            >
+              <FileItem item={file} {...rest} mb={1} />
+            </Item>
+          ))}
+        </Row>
+      </Fragment>
+    )}
+  </Fragment>
+)
+
+export default ManuscriptFileSection
diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileSection.md b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileSection.md
new file mode 100644
index 000000000..5435a7764
--- /dev/null
+++ b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptFileSection.md
@@ -0,0 +1,28 @@
+Manuscript file section that appears in ManuscriptFilesList
+
+```js
+const files = {
+  supplementary: [
+    {
+      id:
+        '8dca903a-05b9-45ab-89b9-9cb99a9a29c6/02db6c5e-2938-45ac-a5ee-67ae63919bb2',
+      name: 'Supplementary File 1.jpg',
+      size: 59621,
+      originalName: 'Supplementary File 1.jpg',
+    },
+    {
+      id:
+        '8dca903a-05b9-45ab-89b9-9cb99a9a29c6/5e69e3d9-7f9d-4e8d-b649-6e6a45658d75',
+      name: 'Supplementary File 2.docx',
+      size: 476862,
+      originalName: 'Supplementary File 2.docx',
+    },
+  ]
+}
+;<ManuscriptFileSection
+  list={files.supplementary}
+  label="Supplementary files"
+  onDownload={() => alert('downloading')}
+  onPreview={() => alert('No preview')}
+/>
+```
diff --git a/packages/component-faraday-ui/src/manuscriptDetails/index.js b/packages/component-faraday-ui/src/manuscriptDetails/index.js
index ec99d00ce..1f43bd9bb 100644
--- a/packages/component-faraday-ui/src/manuscriptDetails/index.js
+++ b/packages/component-faraday-ui/src/manuscriptDetails/index.js
@@ -3,4 +3,5 @@ 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 ManuscriptFileSection } from './ManuscriptFileSection'
 export { default as ManuscriptAssignHE } from './ManuscriptAssignHE'
-- 
GitLab