From a9ea10e8adbe64ae8f207a018fc39df30c471650 Mon Sep 17 00:00:00 2001
From: Alexandru Munteanu <alexandru.munteanu@thinslices.com>
Date: Tue, 6 Feb 2018 13:57:41 +0200
Subject: [PATCH] Move files into faraday-components

---
 .../component-wizard/src/components/index.js     |  1 -
 packages/component-wizard/src/index.js           |  1 -
 packages/component-wizard/src/redux/index.js     |  1 -
 .../src/components/Files}/FileDropzone.js        |  0
 .../components/Files}/FileDropzone.local.scss    |  0
 .../src/components/Files}/FileItem.js            |  0
 .../src/components/Files}/FileItem.local.scss    |  0
 .../src/components/Files}/FilePicker.js          |  0
 .../src/components/Files}/FileSection.js         |  0
 .../src/components/Files}/FileSection.local.scss |  0
 .../src/components/Files}/Files.js               |  2 +-
 .../src/components/Files}/Files.local.scss       |  0
 .../src/components/Files/index.js                |  1 +
 .../src/components/SortableList/SortableList.js  |  3 ++-
 .../src/components/SortableList/SortableList.md  | 16 +++++++++-------
 .../components-faraday/src/components/index.js   |  5 +++--
 packages/components-faraday/src/index.js         |  1 +
 .../src/redux/files.js                           |  0
 .../app/config/journal/submit-wizard.js          |  3 +--
 19 files changed, 18 insertions(+), 16 deletions(-)
 rename packages/{component-wizard/src/components => components-faraday/src/components/Files}/FileDropzone.js (100%)
 rename packages/{component-wizard/src/components => components-faraday/src/components/Files}/FileDropzone.local.scss (100%)
 rename packages/{component-wizard/src/components => components-faraday/src/components/Files}/FileItem.js (100%)
 rename packages/{component-wizard/src/components => components-faraday/src/components/Files}/FileItem.local.scss (100%)
 rename packages/{component-wizard/src/components => components-faraday/src/components/Files}/FilePicker.js (100%)
 rename packages/{component-wizard/src/components => components-faraday/src/components/Files}/FileSection.js (100%)
 rename packages/{component-wizard/src/components => components-faraday/src/components/Files}/FileSection.local.scss (100%)
 rename packages/{component-wizard/src/components => components-faraday/src/components/Files}/Files.js (99%)
 rename packages/{component-wizard/src/components => components-faraday/src/components/Files}/Files.local.scss (100%)
 create mode 100644 packages/components-faraday/src/components/Files/index.js
 rename packages/{component-wizard => components-faraday}/src/redux/files.js (100%)

diff --git a/packages/component-wizard/src/components/index.js b/packages/component-wizard/src/components/index.js
index 0c688b406..276990a47 100644
--- a/packages/component-wizard/src/components/index.js
+++ b/packages/component-wizard/src/components/index.js
@@ -1,4 +1,3 @@
-export { default as Files } from './Files'
 export { default as Wizard } from './Wizard'
 export { default as Progress } from './Progress'
 export { default as WizardPage } from './WizardPage'
diff --git a/packages/component-wizard/src/index.js b/packages/component-wizard/src/index.js
index b8ae61ac6..b43332ee5 100644
--- a/packages/component-wizard/src/index.js
+++ b/packages/component-wizard/src/index.js
@@ -4,7 +4,6 @@ module.exports = {
     reducers: {
       wizardConversion: () => require('./redux/conversion').default,
       autosave: () => require('./redux/autosave').default,
-      files: () => require('./redux/files').default,
     },
   },
 }
diff --git a/packages/component-wizard/src/redux/index.js b/packages/component-wizard/src/redux/index.js
index ac24b732b..f767d7351 100644
--- a/packages/component-wizard/src/redux/index.js
+++ b/packages/component-wizard/src/redux/index.js
@@ -1,3 +1,2 @@
-export { default as files } from './files'
 export { default as autosave } from './autosave'
 export { default as conversion } from './conversion'
diff --git a/packages/component-wizard/src/components/FileDropzone.js b/packages/components-faraday/src/components/Files/FileDropzone.js
similarity index 100%
rename from packages/component-wizard/src/components/FileDropzone.js
rename to packages/components-faraday/src/components/Files/FileDropzone.js
diff --git a/packages/component-wizard/src/components/FileDropzone.local.scss b/packages/components-faraday/src/components/Files/FileDropzone.local.scss
similarity index 100%
rename from packages/component-wizard/src/components/FileDropzone.local.scss
rename to packages/components-faraday/src/components/Files/FileDropzone.local.scss
diff --git a/packages/component-wizard/src/components/FileItem.js b/packages/components-faraday/src/components/Files/FileItem.js
similarity index 100%
rename from packages/component-wizard/src/components/FileItem.js
rename to packages/components-faraday/src/components/Files/FileItem.js
diff --git a/packages/component-wizard/src/components/FileItem.local.scss b/packages/components-faraday/src/components/Files/FileItem.local.scss
similarity index 100%
rename from packages/component-wizard/src/components/FileItem.local.scss
rename to packages/components-faraday/src/components/Files/FileItem.local.scss
diff --git a/packages/component-wizard/src/components/FilePicker.js b/packages/components-faraday/src/components/Files/FilePicker.js
similarity index 100%
rename from packages/component-wizard/src/components/FilePicker.js
rename to packages/components-faraday/src/components/Files/FilePicker.js
diff --git a/packages/component-wizard/src/components/FileSection.js b/packages/components-faraday/src/components/Files/FileSection.js
similarity index 100%
rename from packages/component-wizard/src/components/FileSection.js
rename to packages/components-faraday/src/components/Files/FileSection.js
diff --git a/packages/component-wizard/src/components/FileSection.local.scss b/packages/components-faraday/src/components/Files/FileSection.local.scss
similarity index 100%
rename from packages/component-wizard/src/components/FileSection.local.scss
rename to packages/components-faraday/src/components/Files/FileSection.local.scss
diff --git a/packages/component-wizard/src/components/Files.js b/packages/components-faraday/src/components/Files/Files.js
similarity index 99%
rename from packages/component-wizard/src/components/Files.js
rename to packages/components-faraday/src/components/Files/Files.js
index b4e3683ae..f61eaca9b 100644
--- a/packages/component-wizard/src/components/Files.js
+++ b/packages/components-faraday/src/components/Files/Files.js
@@ -21,7 +21,7 @@ import {
   deleteFile,
   getRequestStatus,
   getSignedUrl,
-} from '../redux/files'
+} from '../../redux/files'
 
 const Files = ({
   files,
diff --git a/packages/component-wizard/src/components/Files.local.scss b/packages/components-faraday/src/components/Files/Files.local.scss
similarity index 100%
rename from packages/component-wizard/src/components/Files.local.scss
rename to packages/components-faraday/src/components/Files/Files.local.scss
diff --git a/packages/components-faraday/src/components/Files/index.js b/packages/components-faraday/src/components/Files/index.js
new file mode 100644
index 000000000..6df727395
--- /dev/null
+++ b/packages/components-faraday/src/components/Files/index.js
@@ -0,0 +1 @@
+export { default as Files } from './Files'
diff --git a/packages/components-faraday/src/components/SortableList/SortableList.js b/packages/components-faraday/src/components/SortableList/SortableList.js
index 8b8baa482..ccbe292df 100644
--- a/packages/components-faraday/src/components/SortableList/SortableList.js
+++ b/packages/components-faraday/src/components/SortableList/SortableList.js
@@ -93,6 +93,7 @@ const DecoratedItem = compose(
 
 const SortableList = ({
   items,
+  itemKey = 'id',
   moveItem,
   listItem,
   dragHandle,
@@ -104,7 +105,7 @@ const SortableList = ({
       <DecoratedItem
         dragHandle={dragHandle}
         index={i}
-        key={item.id}
+        key={item[itemKey]}
         listItem={listItem}
         moveItem={moveItem}
         {...item}
diff --git a/packages/components-faraday/src/components/SortableList/SortableList.md b/packages/components-faraday/src/components/SortableList/SortableList.md
index e6da217d3..3eb03059c 100644
--- a/packages/components-faraday/src/components/SortableList/SortableList.md
+++ b/packages/components-faraday/src/components/SortableList/SortableList.md
@@ -2,13 +2,15 @@ A sortable list implemented with `react-dnd`.
 
 ## Props
 
-|    Prop    |                                                                 Description                                                                  | Required |        Default        |
-| :--------: | :------------------------------------------------------------------------------------------------------------------------------------------: | :------: | :-------------------: |
-|   items    |                                                       The items of the sortable list.                                                        |   true   |          []           |
-|  listItem  | A React component that will be rendered for each item of the list. Receives `isDragging`, `isOver` and all other props from the items array. |   true   |         none          |
-|  moveItem  |       Function to be called when moving an item through the list. SortableList will provide the dragIndex of hoverIndex of the items.        |   true   | SortableList.moveItem |
-| dragHandle |                            A React component for the drag handle. If not present, the whole item can be dragged.                             |  false   |         none          |
-|  dropItem  |                            Function to be called when dropping an item. The index of the dragged item is passed.                             |  false   |         none          |
+|    Prop    |                                                                 Description                                                                  | Required |        Default        | Type |
+| :--------: | :------------------------------------------------------------------------------------------------------------------------------------------: | :------: | :-------------------: | :---: |
+|   items    |                                                       The items of the sortable list.                                                        |   true   |          []           | Array |
+| itemKey | Value used for key when mapping over items. | true | 'id' | string |
+|  listItem  | A React component that will be rendered for each item of the list. Receives `isDragging`, `isOver` and all other props from the items array. |   true   |         none          | React component |
+|  moveItem  |       Function to be called when moving an item through the list. SortableList will provide the dragIndex of hoverIndex of the items.        |   true   | none | function  |
+| dragHandle |                            A React component for the drag handle. If not present, the whole item can be dragged.                             |  false   |         none          | React component |
+|  dropItem  |                            Function to be called when dropping an item. The index of the dragged item is passed.                             |  false   |         none          | function |
+| beginDragProps | Array of keys to pick from the dragged object when beginning drag.  | false | [] | Array(string) |
 
 ## Usage
 
diff --git a/packages/components-faraday/src/components/index.js b/packages/components-faraday/src/components/index.js
index 0415e239b..210934a75 100644
--- a/packages/components-faraday/src/components/index.js
+++ b/packages/components-faraday/src/components/index.js
@@ -1,5 +1,6 @@
-export { default as SortableList } from './SortableList/SortableList'
+export { default as Files } from './Files/Files'
 export { default as AuthorList } from './AuthorList/AuthorList'
+export { default as SortableList } from './SortableList/SortableList'
 
-export { Dropdown, Logo, Spinner } from './UIComponents'
 export { DragHandle } from './AuthorList/FormItems'
+export { Dropdown, Logo, Spinner } from './UIComponents'
diff --git a/packages/components-faraday/src/index.js b/packages/components-faraday/src/index.js
index 70c968333..3c0ed73ca 100644
--- a/packages/components-faraday/src/index.js
+++ b/packages/components-faraday/src/index.js
@@ -3,6 +3,7 @@ module.exports = {
     components: [() => require('./components')],
     reducers: {
       authors: () => require('./redux/authors').default,
+      files: () => require('./redux/files').default,
       filters: () => require('./components/Dashboard/redux/filters').default,
     },
   },
diff --git a/packages/component-wizard/src/redux/files.js b/packages/components-faraday/src/redux/files.js
similarity index 100%
rename from packages/component-wizard/src/redux/files.js
rename to packages/components-faraday/src/redux/files.js
diff --git a/packages/xpub-faraday/app/config/journal/submit-wizard.js b/packages/xpub-faraday/app/config/journal/submit-wizard.js
index 261390aa2..3a63214bb 100644
--- a/packages/xpub-faraday/app/config/journal/submit-wizard.js
+++ b/packages/xpub-faraday/app/config/journal/submit-wizard.js
@@ -3,8 +3,7 @@ import { AbstractEditor, TitleEditor } from 'xpub-edit'
 import { Menu, CheckboxGroup, YesOrNo, TextField } from '@pubsweet/ui'
 import uploadFileFn from 'xpub-upload'
 import { required, minChars, minSize } from 'xpub-validators'
-import { Files } from 'pubsweet-component-wizard/src/components/'
-import { AuthorList } from 'pubsweet-components-faraday/src/components'
+import { AuthorList, Files } from 'pubsweet-components-faraday/src/components'
 
 import { declarations } from './'
 import issueTypes from './issues-types'
-- 
GitLab