PluginProbe
Code Snippets / 3.10.1
Code Snippets v3.10.1
3.10.2 3.10.1 3.10.0 3.10.0-beta.2 3.10.0-beta.1 4.0.0-beta.1 3.9.6 trunk 2.10.0 2.10.1 2.12.0 2.12.1 2.13.0 2.13.1 2.13.2 2.13.3 2.14.0 2.14.1 2.14.2 2.14.3 2.14.4 2.14.5 2.14.6 3.0.0 3.0.1 All 64 releases
code-snippets / js / components / Import / FromFileUpload / hooks / useDragAndDrop.ts

useDragAndDrop.ts in Code Snippets 3.10.1, at js/components/Import/FromFileUpload/hooks/useDragAndDrop.ts

37 lines 686 B
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { useState } from 'react'
2
3 interface UseDragAndDropProps {
4 onFilesDrop: (files: FileList) => void
5 }
6
7 export const useDragAndDrop = ({ onFilesDrop }: UseDragAndDropProps) => {
8 const [dragOver, setDragOver] = useState(false)
9
10 const handleDragOver = (e: React.DragEvent) => {
11 e.preventDefault()
12 setDragOver(true)
13 }
14
15 const handleDragLeave = (e: React.DragEvent) => {
16 e.preventDefault()
17 setDragOver(false)
18 }
19
20 const handleDrop = (e: React.DragEvent) => {
21 e.preventDefault()
22 setDragOver(false)
23
24 const files = e.dataTransfer.files
25 if (files.length > 0) {
26 onFilesDrop(files)
27 }
28 }
29
30 return {
31 dragOver,
32 handleDragOver,
33 handleDragLeave,
34 handleDrop
35 }
36 }
37