diff --git a/browser/main/modals/PreferencesModal/FolderItem.js b/browser/main/modals/PreferencesModal/FolderItem.js index 35407406..aa4f8ecd 100644 --- a/browser/main/modals/PreferencesModal/FolderItem.js +++ b/browser/main/modals/PreferencesModal/FolderItem.js @@ -5,6 +5,7 @@ import styles from './FolderItem.styl' import dataApi from 'browser/main/lib/dataApi' import store from 'browser/main/store' import { SketchPicker } from 'react-color' +import { SortableElement } from 'react-sortable-hoc' class FolderItem extends React.Component { constructor (props) { @@ -273,4 +274,6 @@ FolderItem.propTypes = { }) } -export default CSSModules(FolderItem, styles) +const StyledFolderItem = CSSModules(FolderItem, styles) + +export default SortableElement(StyledFolderItem) diff --git a/browser/main/modals/PreferencesModal/FolderList.js b/browser/main/modals/PreferencesModal/FolderList.js index 5d6010b9..2ad72f16 100644 --- a/browser/main/modals/PreferencesModal/FolderList.js +++ b/browser/main/modals/PreferencesModal/FolderList.js @@ -2,6 +2,7 @@ import React, { PropTypes } from 'react' import CSSModules from 'browser/lib/CSSModules' import styles from './FolderList.styl' import FolderItem from './FolderItem' +import { SortableContainer } from 'react-sortable-hoc' class FolderList extends React.Component { constructor (props) { @@ -11,10 +12,11 @@ class FolderList extends React.Component { render () { let { storage, hostBoundingBox } = this.props - let folderList = storage.folders.map((folder) => { + let folderList = storage.folders.map((folder, index) => { return }) @@ -43,10 +45,28 @@ FolderList.propTypes = { key: PropTypes.string }), folder: PropTypes.shape({ - key: PropTypes.string, + key: PropTypes.number, color: PropTypes.string, name: PropTypes.string }) } -export default CSSModules(FolderList, styles) +const StyledFolderList = CSSModules(FolderList, styles) +const SortableFolderList = SortableContainer(StyledFolderList) + +class SortableFolderListComponent extends React.Component { + constructor (props) { + super(props) + this.onSortEnd = ({oldIndex, newIndex}) => { + console.log("end") + } + } + + render() { + return ( + + ) + } +} + +export default SortableFolderListComponent diff --git a/package.json b/package.json index e5e1afc7..03652a9b 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "react-codemirror": "^0.3.0", "react-dom": "^15.0.2", "react-redux": "^4.4.5", + "react-sortable-hoc": "^0.6.7", "redux": "^3.5.2", "sander": "^0.5.1", "superagent": "^1.2.0", diff --git a/yarn.lock b/yarn.lock index d4510193..b3e2dc36 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1059,6 +1059,13 @@ babel-register@^6.11.6, babel-register@^6.24.1: mkdirp "^0.5.1" source-map-support "^0.4.2" +babel-runtime@^6.11.6: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.3.19: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" @@ -3951,7 +3958,7 @@ lodash@^3.5.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.1, lodash@^4.17.2, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1: +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.1, lodash@^4.12.0, lodash@^4.17.2, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -5339,6 +5346,15 @@ react-router@^2.4.0: loose-envify "^1.2.0" warning "^3.0.0" +react-sortable-hoc@^0.6.7: + version "0.6.7" + resolved "https://registry.yarnpkg.com/react-sortable-hoc/-/react-sortable-hoc-0.6.7.tgz#e30d247bc36dd5a605430c331ac9cb50a5fa72a6" + dependencies: + babel-runtime "^6.11.6" + invariant "^2.2.1" + lodash "^4.12.0" + prop-types "^15.5.7" + react-transform-catch-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/react-transform-catch-errors/-/react-transform-catch-errors-1.0.2.tgz#1b4d4a76e97271896fc16fe3086c793ec88a9eeb" @@ -5499,6 +5515,10 @@ regenerator-runtime@^0.10.0: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + regenerator-transform@0.9.11: version "0.9.11" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283"