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 / useFileSelection.ts

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

43 lines 908 B
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { useState, useRef } from 'react'
2 import { removeFileFromList } from '../utils/fileUtils'
3
4 export const useFileSelection = () => {
5 const [selectedFiles, setSelectedFiles] = useState<FileList | null>(null)
6 const fileInputRef = useRef<HTMLInputElement>(null)
7
8 const handleFileSelect = (files: FileList | null) => {
9 setSelectedFiles(files)
10 }
11
12 const removeFile = (index: number) => {
13 if (!selectedFiles) return
14
15 const newFiles = removeFileFromList(selectedFiles, index)
16 setSelectedFiles(newFiles)
17
18 if (fileInputRef.current) {
19 fileInputRef.current.files = newFiles
20 }
21 }
22
23 const clearFiles = () => {
24 setSelectedFiles(null)
25 if (fileInputRef.current) {
26 fileInputRef.current.value = ''
27 }
28 }
29
30 const triggerFileInput = () => {
31 fileInputRef.current?.click()
32 }
33
34 return {
35 selectedFiles,
36 fileInputRef,
37 handleFileSelect,
38 removeFile,
39 clearFiles,
40 triggerFileInput
41 }
42 }
43