@@ -127,7 +127,7 @@ export interface FileUploadSlots<M extends boolean = false> {
127127import { computed , watch } from ' vue'
128128import { Primitive } from ' reka-ui'
129129import { createReusableTemplate } from ' @vueuse/core'
130- import { useAppConfig } from ' #imports'
130+ import { useAppConfig , useLocale } from ' #imports'
131131import { useFormField } from ' ../composables/useFormField'
132132import { useFileUpload } from ' ../composables/useFileUpload'
133133import { tv } from ' ../utils/tv'
@@ -153,6 +153,8 @@ const modelValue = defineModel<(M extends true ? File[] : File) | null>()
153153
154154const appConfig = useAppConfig () as FileUpload [' AppConfig' ]
155155
156+ const { t } = useLocale ()
157+
156158const [DefineFilesTemplate, ReuseFilesTemplate] = createReusableTemplate ()
157159
158160const { isDragging, open, inputRef, dropzoneRef } = useFileUpload ({
@@ -235,13 +237,17 @@ function removeFile(index?: number) {
235237
236238 if (! props .multiple || index === undefined ) {
237239 onUpdate ([], true )
240+
241+ dropzoneRef .value ?.focus ()
238242 return
239243 }
240244
241245 const files = [... modelValue .value as File []]
242246 files .splice (index , 1 )
243247
244248 onUpdate (files , true )
249+
250+ dropzoneRef .value ?.focus ()
245251}
246252
247253watch (modelValue , (newValue ) => {
@@ -298,6 +304,7 @@ defineExpose({
298304 }),
299305 ...typeof fileDelete === 'object' ? fileDelete : undefined
300306 }"
307+ :aria-label =" t('fileUpload.removeFile', { filename: (file as File).name })"
301308 :trailing-icon =" fileDeleteIcon || appConfig.ui.icons.close"
302309 :class =" ui.fileTrailingButton({ class: props.ui?.fileTrailingButton })"
303310 @click.stop.prevent =" removeFile(index)"
0 commit comments