diff --git a/app/ui/Input.vue b/app/ui/Input.vue index 48b43a7..d6884e3 100644 --- a/app/ui/Input.vue +++ b/app/ui/Input.vue @@ -10,22 +10,47 @@ interface InputProps { name?: string required?: boolean autocomplete?: AutocompleteType + label?: string } -const value = defineModel("value") +const value = defineModel("value") const emit = defineEmits<{ (e: "input", value: string): void + (e: "file", value: File | File[] | null | undefined): void (e: "focus"): void + (e: "blur"): void }>() const props = defineProps() + +const onFileChange = (e: Event) => { + const input = e.target as HTMLInputElement + const files = input.files + + if (!files || files.length == 0) { + value.value = null + emit("file", null) + return + } + + const result = files.length == 1 ? files[0] : Array.from(files) + + value.value = result + emit("file", result) +}