From 572340d5bd783a803da556d05a45713acc5e701f Mon Sep 17 00:00:00 2001 From: aronmal Date: Wed, 9 Nov 2022 21:44:19 +0100 Subject: [PATCH] MyDropzone does work --- frontend/package-lock.json | 59 ++++++++++++++++++++++++++ frontend/package.json | 1 + frontend/src/App.tsx | 6 ++- frontend/src/components/MyDropzone.tsx | 23 ++++++++++ 4 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 frontend/src/components/MyDropzone.tsx diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 78a6c0b..90a310c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -24,6 +24,7 @@ "@types/web-bluetooth": "^0.0.15", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-dropzone": "^14.2.3", "react-router-dom": "^6.3.0", "react-scripts": "5.0.1", "sass": "^1.53.0", @@ -4327,6 +4328,14 @@ "node": ">= 4.5.0" } }, + "node_modules/attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "engines": { + "node": ">=4" + } + }, "node_modules/autoprefixer": { "version": "10.4.7", "funding": [ @@ -7090,6 +7099,17 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/filelist": { "version": "1.0.4", "license": "Apache-2.0", @@ -12684,6 +12704,22 @@ "react": "^18.2.0" } }, + "node_modules/react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "dependencies": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, "node_modules/react-error-overlay": { "version": "6.0.11", "license": "MIT" @@ -17835,6 +17871,11 @@ "atob": { "version": "2.1.2" }, + "attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" + }, "autoprefixer": { "version": "10.4.7", "requires": { @@ -19507,6 +19548,14 @@ "schema-utils": "^3.0.0" } }, + "file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "requires": { + "tslib": "^2.4.0" + } + }, "filelist": { "version": "1.0.4", "requires": { @@ -22693,6 +22742,16 @@ "scheduler": "^0.23.0" } }, + "react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "requires": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + } + }, "react-error-overlay": { "version": "6.0.11" }, diff --git a/frontend/package.json b/frontend/package.json index df97618..bb3945f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -19,6 +19,7 @@ "@types/web-bluetooth": "^0.0.15", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-dropzone": "^14.2.3", "react-router-dom": "^6.3.0", "react-scripts": "5.0.1", "sass": "^1.53.0", diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index bd8f462..2ee486a 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -2,7 +2,8 @@ // import Homepage from './components/Homepage'; // import Homepage2 from './components/Homepage2'; // import SocketIO from './components/SocketIO'; -import Upload from './components/Upload'; +// import Upload from './components/Upload'; +import MyDropzone from './components/MyDropzone'; import './styles/App.scss'; function App() { @@ -15,7 +16,8 @@ function App() { {/* */} {/* */} {/* */} - + {/* */} + ); diff --git a/frontend/src/components/MyDropzone.tsx b/frontend/src/components/MyDropzone.tsx new file mode 100644 index 0000000..23bfff7 --- /dev/null +++ b/frontend/src/components/MyDropzone.tsx @@ -0,0 +1,23 @@ +import {useCallback} from 'react' +import {useDropzone} from 'react-dropzone' + +function MyDropzone() { + const onDrop = useCallback((acceptedFiles: any) => { + // Do something with the files + console.log(acceptedFiles) + }, []) + const {getRootProps, getInputProps, isDragActive} = useDropzone({onDrop}) + + return ( +
+ + { + isDragActive ? +

Drop the files here ...

: +

Drag 'n' drop some files here, or click to select files

+ } +
+ ) +} + +export default MyDropzone \ No newline at end of file