diff --git a/src/components/Input.vue b/src/components/Input.vue index afaf89ac..5a583de5 100644 --- a/src/components/Input.vue +++ b/src/components/Input.vue @@ -11,12 +11,15 @@ @@ -38,13 +41,36 @@ withDefaults(defineProps<{ const emit = defineEmits<{ (event: 'update:value', payload: string): void + (event: 'input', payload: Event): void + (event: 'change', payload: Event): void + (event: 'blur', payload: Event): void + (event: 'focus', payload: Event): void + (event: 'enter', payload: Event): void }>() const focused = ref(false) const handleInput = (e: Event) => { emit('update:value', (e.target as HTMLInputElement).value) + emit('input', e) } +const handleBlur = (e: Event) => { + focused.value = false + emit('blur', e) +} +const handleFocus = (e: Event) => { + focused.value = true + emit('focus', e) +} + +const inputRef = ref() +const focus = () => { + if (inputRef.value) inputRef.value.focus() +} + +defineExpose({ + focus, +})