diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6b324b7285..4be8a6df48 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -39,6 +39,8 @@ "react-app-polyfill": "^2.0.0", "react-chartjs-2": "^2.8.0", "react-cookies": "^0.1.0", + "react-dnd": "^2.6.0", + "react-dnd-html5-backend": "^2.6.0", "react-dom": "17.0.0", "react-i18next": "^10.12.2", "react-responsive": "9.0.2", @@ -9888,12 +9890,28 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/disposables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/disposables/-/disposables-1.0.2.tgz", + "integrity": "sha512-q1XTvs/XGdfubRSemB2+QRhJjIX4PerKkSom+i8Nkw3hCv6xISNrgaN442n2BunyBI4x77Om4ZAzSlqmhM9pwA==" + }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true }, + "node_modules/dnd-core": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-2.6.0.tgz", + "integrity": "sha512-5BfQHIp0XVd4ioF0q4GyUeHQQNCbqP+0SnUiP9TssoQ50wrP1NgSzDqZkjD5pFngsVz9txGin6rvTQD7w0qC3w==", + "dependencies": { + "asap": "^2.0.6", + "invariant": "^2.0.0", + "lodash": "^4.2.0", + "redux": "^3.7.1" + } + }, "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -21972,6 +21990,35 @@ "node": ">=8" } }, + "node_modules/react-dnd": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-2.6.0.tgz", + "integrity": "sha512-2KHNpeg2SyaxXYq+xO1TM+tOtN9hViI41otJuiYiu6DRYGw+WMvDFDMP4aw7zIKRRm1xd0gizXuKWhb8iJYHBw==", + "dependencies": { + "disposables": "^1.0.1", + "dnd-core": "^2.6.0", + "hoist-non-react-statics": "^2.1.0", + "invariant": "^2.1.0", + "lodash": "^4.2.0", + "prop-types": "^15.5.10" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-dnd-html5-backend": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-2.6.0.tgz", + "integrity": "sha512-8gOfBfqFikWmXvAGSZz1mgoctwkcsKdUC9POt/WGnMoZwGB4ivB0Ex5D6pwHTNjvAs0ixqqWdJKy57CzjDg5Sg==", + "dependencies": { + "lodash": "^4.2.0" + } + }, + "node_modules/react-dnd/node_modules/hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, "node_modules/react-dom": { "version": "17.0.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.0.tgz", @@ -22236,6 +22283,17 @@ "node": ">=8" } }, + "node_modules/redux": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "dependencies": { + "lodash": "^4.2.1", + "lodash-es": "^4.2.1", + "loose-envify": "^1.1.0", + "symbol-observable": "^1.0.3" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", @@ -25485,6 +25543,14 @@ "boolbase": "~1.0.0" } }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -35327,12 +35393,28 @@ "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==" }, + "disposables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/disposables/-/disposables-1.0.2.tgz", + "integrity": "sha512-q1XTvs/XGdfubRSemB2+QRhJjIX4PerKkSom+i8Nkw3hCv6xISNrgaN442n2BunyBI4x77Om4ZAzSlqmhM9pwA==" + }, "dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true }, + "dnd-core": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-2.6.0.tgz", + "integrity": "sha512-5BfQHIp0XVd4ioF0q4GyUeHQQNCbqP+0SnUiP9TssoQ50wrP1NgSzDqZkjD5pFngsVz9txGin6rvTQD7w0qC3w==", + "requires": { + "asap": "^2.0.6", + "invariant": "^2.0.0", + "lodash": "^4.2.0", + "redux": "^3.7.1" + } + }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -44192,6 +44274,34 @@ } } }, + "react-dnd": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-2.6.0.tgz", + "integrity": "sha512-2KHNpeg2SyaxXYq+xO1TM+tOtN9hViI41otJuiYiu6DRYGw+WMvDFDMP4aw7zIKRRm1xd0gizXuKWhb8iJYHBw==", + "requires": { + "disposables": "^1.0.1", + "dnd-core": "^2.6.0", + "hoist-non-react-statics": "^2.1.0", + "invariant": "^2.1.0", + "lodash": "^4.2.0", + "prop-types": "^15.5.10" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + } + } + }, + "react-dnd-html5-backend": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-2.6.0.tgz", + "integrity": "sha512-8gOfBfqFikWmXvAGSZz1mgoctwkcsKdUC9POt/WGnMoZwGB4ivB0Ex5D6pwHTNjvAs0ixqqWdJKy57CzjDg5Sg==", + "requires": { + "lodash": "^4.2.0" + } + }, "react-dom": { "version": "17.0.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.0.tgz", @@ -44403,6 +44513,17 @@ "strip-indent": "^3.0.0" } }, + "redux": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "requires": { + "lodash": "^4.2.1", + "lodash-es": "^4.2.1", + "loose-envify": "^1.1.0", + "symbol-observable": "^1.0.3" + } + }, "reflect.getprototypeof": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", @@ -46931,6 +47052,11 @@ } } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", diff --git a/frontend/package.json b/frontend/package.json index 9d91c872da..aa874ffd5f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -34,6 +34,8 @@ "react-app-polyfill": "^2.0.0", "react-chartjs-2": "^2.8.0", "react-cookies": "^0.1.0", + "react-dnd": "^2.6.0", + "react-dnd-html5-backend": "^2.6.0", "react-dom": "17.0.0", "react-i18next": "^10.12.2", "react-responsive": "9.0.2", diff --git a/frontend/src/assets/icons/copy.svg b/frontend/src/assets/icons/copy.svg new file mode 100644 index 0000000000..1ce0b4ea1a --- /dev/null +++ b/frontend/src/assets/icons/copy.svg @@ -0,0 +1,17 @@ + + + diff --git a/frontend/src/assets/icons/delete.svg b/frontend/src/assets/icons/delete.svg new file mode 100644 index 0000000000..2244eeb2ae --- /dev/null +++ b/frontend/src/assets/icons/delete.svg @@ -0,0 +1,18 @@ + + + diff --git a/frontend/src/assets/icons/drag.svg b/frontend/src/assets/icons/drag.svg new file mode 100644 index 0000000000..e3e6c7be96 --- /dev/null +++ b/frontend/src/assets/icons/drag.svg @@ -0,0 +1,15 @@ + + + diff --git a/frontend/src/assets/icons/drop-down.svg b/frontend/src/assets/icons/drop-down.svg new file mode 100644 index 0000000000..7222fa9f16 --- /dev/null +++ b/frontend/src/assets/icons/drop-down.svg @@ -0,0 +1,15 @@ + + + diff --git a/frontend/src/assets/icons/edit.svg b/frontend/src/assets/icons/edit.svg new file mode 100644 index 0000000000..352aa56d5c --- /dev/null +++ b/frontend/src/assets/icons/edit.svg @@ -0,0 +1,13 @@ + + + diff --git a/frontend/src/assets/icons/file.svg b/frontend/src/assets/icons/file.svg new file mode 100644 index 0000000000..447119c1fc --- /dev/null +++ b/frontend/src/assets/icons/file.svg @@ -0,0 +1,19 @@ + + + diff --git a/frontend/src/assets/icons/folders.svg b/frontend/src/assets/icons/folders.svg new file mode 100644 index 0000000000..38ce0749ae --- /dev/null +++ b/frontend/src/assets/icons/folders.svg @@ -0,0 +1,16 @@ + + + diff --git a/frontend/src/assets/icons/left-slide.svg b/frontend/src/assets/icons/left-slide.svg new file mode 100644 index 0000000000..e2e99eebf7 --- /dev/null +++ b/frontend/src/assets/icons/left-slide.svg @@ -0,0 +1,16 @@ + + + diff --git a/frontend/src/assets/icons/main-view.svg b/frontend/src/assets/icons/main-view.svg new file mode 100644 index 0000000000..3716845987 --- /dev/null +++ b/frontend/src/assets/icons/main-view.svg @@ -0,0 +1,23 @@ + + + diff --git a/frontend/src/assets/icons/more-level.svg b/frontend/src/assets/icons/more-level.svg new file mode 100644 index 0000000000..539e9efc93 --- /dev/null +++ b/frontend/src/assets/icons/more-level.svg @@ -0,0 +1,15 @@ + + + diff --git a/frontend/src/assets/icons/more-vertical.svg b/frontend/src/assets/icons/more-vertical.svg new file mode 100644 index 0000000000..74bffcfa0b --- /dev/null +++ b/frontend/src/assets/icons/more-vertical.svg @@ -0,0 +1,15 @@ + + + diff --git a/frontend/src/assets/icons/move-to.svg b/frontend/src/assets/icons/move-to.svg new file mode 100644 index 0000000000..67ffa69066 --- /dev/null +++ b/frontend/src/assets/icons/move-to.svg @@ -0,0 +1,20 @@ + + + diff --git a/frontend/src/assets/icons/remove-from-folder.svg b/frontend/src/assets/icons/remove-from-folder.svg new file mode 100644 index 0000000000..5d1747218a --- /dev/null +++ b/frontend/src/assets/icons/remove-from-folder.svg @@ -0,0 +1,17 @@ + + + diff --git a/frontend/src/assets/icons/right-slide.svg b/frontend/src/assets/icons/right-slide.svg new file mode 100644 index 0000000000..452c82f40c --- /dev/null +++ b/frontend/src/assets/icons/right-slide.svg @@ -0,0 +1,16 @@ + + + diff --git a/frontend/src/assets/icons/table.svg b/frontend/src/assets/icons/table.svg new file mode 100644 index 0000000000..f618d83302 --- /dev/null +++ b/frontend/src/assets/icons/table.svg @@ -0,0 +1,16 @@ + + + diff --git a/frontend/src/assets/icons/upward.svg b/frontend/src/assets/icons/upward.svg new file mode 100644 index 0000000000..c6cdab3e60 --- /dev/null +++ b/frontend/src/assets/icons/upward.svg @@ -0,0 +1,16 @@ + + + diff --git a/frontend/src/assets/icons/wiki-preview.svg b/frontend/src/assets/icons/wiki-preview.svg new file mode 100644 index 0000000000..5c154af2d2 --- /dev/null +++ b/frontend/src/assets/icons/wiki-preview.svg @@ -0,0 +1,13 @@ + + + diff --git a/frontend/src/assets/icons/wiki-settings.svg b/frontend/src/assets/icons/wiki-settings.svg new file mode 100644 index 0000000000..1e72819a0d --- /dev/null +++ b/frontend/src/assets/icons/wiki-settings.svg @@ -0,0 +1,22 @@ + + + diff --git a/frontend/src/components/file-chooser/file-chooser.js b/frontend/src/components/file-chooser/file-chooser.js index 4ff59807ca..e32fa7ea0e 100644 --- a/frontend/src/components/file-chooser/file-chooser.js +++ b/frontend/src/components/file-chooser/file-chooser.js @@ -14,6 +14,7 @@ import '../../css/file-chooser.css'; const propTypes = { isShowFile: PropTypes.bool, + hideLibraryName: PropTypes.bool, repoID: PropTypes.string, onDirentItemClick: PropTypes.func, onRepoItemClick: PropTypes.func, @@ -371,7 +372,6 @@ class FileChooser extends React.Component { }; renderRepoListView = () => { - return (
{gettext('Are you sure to delete this page?')}
++ {gettext('Please select a png image within 5MB.')} +
++ {gettext('Recommended size is 256x256 px.')} +
+ + ++ {gettext('Please select a png image within 5MB.')} +
++ {gettext('Recommended size is 256x256 px.')} +
+ + +{% translate "Last modified by" %} {{modifier|email2nickname}}, {{modify_time|translate_seahub_time_str}}
+