File tree Expand file tree Collapse file tree 2 files changed +24
-8
lines changed
src/components/FwbFileInput Expand file tree Collapse file tree 2 files changed +24
-8
lines changed Original file line number Diff line number Diff line change 5555 :multiple =" multiple"
5656 class =" hidden"
5757 type =" file"
58+ @change =" handleChange"
5859 >
5960 </label >
6061 </div >
@@ -112,7 +113,12 @@ const model = computed({
112113const handleChange = (event : Event ) => {
113114 const target = event .target as HTMLInputElement
114115 if (props .multiple ) {
115- model .value = Array .from (target .files ?? [])
116+ const newFiles = Array .from (target .files ?? [])
117+ if (Array .isArray (model .value ) && model .value .length > 0 ) {
118+ model .value = [... model .value , ... newFiles ]
119+ } else {
120+ model .value = newFiles
121+ }
116122 } else {
117123 model .value = target .files ?.[0 ] ?? null
118124 }
@@ -129,15 +135,25 @@ const dropFileHandler = (event: DragEvent) => {
129135 }
130136 })
131137 if (props .multiple ) {
132- model .value = arr
138+ if (Array .isArray (model .value ) && model .value .length > 0 ) {
139+ model .value = [... model .value , ... arr ]
140+ } else {
141+ model .value = arr
142+ }
133143 } else {
134- model .value = arr [0 ]
144+ model .value = arr [0 ] || null
135145 }
136146 } else if (event .dataTransfer ?.files ) {
137- Object .values (event .dataTransfer .files )
138- .forEach ((file : File ) => {
139- model .value = file
140- })
147+ const files = Array .from (event .dataTransfer .files )
148+ if (props .multiple ) {
149+ if (Array .isArray (model .value ) && model .value .length > 0 ) {
150+ model .value = [... model .value , ... files ]
151+ } else {
152+ model .value = files
153+ }
154+ } else {
155+ model .value = files [0 ] || null
156+ }
141157 }
142158}
143159
Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ import { computed } from 'vue'
22
33import { simplifyTailwindClasses } from '@/utils/simplifyTailwindClasses'
44
5- const fileInpDefaultClasses = 'block w-full text-sm text-gray-900 border-[1px] border-gray-300 rounded-lg cursor-pointer bg-gray-50 dark:text-gray-400 focus:outline-none dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400'
5+ const fileInpDefaultClasses = 'block w-full py-1 px-2 text-sm text-gray-900 border-[1px] border-gray-300 rounded-lg cursor-pointer bg-gray-50 dark:text-gray-400 focus:outline-none dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400'
66const fileInpLabelClasses = 'block mb-2 text-sm font-medium text-gray-900 dark:text-white'
77const fileInpDropzoneClasses = 'flex flex-col items-center justify-center w-full h-64 border-2 border-gray-300 border-dashed rounded-lg cursor-pointer bg-gray-50 dark:hover:bg-bray-800 dark:bg-gray-700 hover:bg-gray-100 dark:border-gray-600 dark:hover:border-gray-500 dark:hover:bg-gray-600'
88const fileDropzoneWrapClasses = 'flex flex-col items-center justify-center pt-5 pb-6'
You can’t perform that action at this time.
0 commit comments