Skip to content

Commit

Permalink
fix(Input/SelectMenu): handle file type and change events (#1570)
Browse files Browse the repository at this point in the history
  • Loading branch information
romhml authored Mar 27, 2024
1 parent bd8118c commit 878f707
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 18 deletions.
23 changes: 13 additions & 10 deletions src/runtime/components/forms/Input.vue
Original file line number Diff line number Diff line change
Expand Up @@ -205,16 +205,19 @@ export default defineComponent({
}
const onChange = (event: Event) => {
const value = (event.target as HTMLInputElement).value
emit('change', value)
if (modelModifiers.value.lazy) {
updateInput(value)
}
// Update trimmed input so that it has same behavior as native input https://github.com/vuejs/core/blob/5ea8a8a4fab4e19a71e123e4d27d051f5e927172/packages/runtime-dom/src/directives/vModel.ts#L63
if (modelModifiers.value.trim) {
(event.target as HTMLInputElement).value = value.trim()
if (props.type === 'file') {
const value = (event.target as HTMLInputElement).files
emit('change', value)
} else {
const value = (event.target as HTMLInputElement).value
emit('change', value)
if (modelModifiers.value.lazy) {
updateInput(value)
}
// Update trimmed input so that it has same behavior as native input https://github.com/vuejs/core/blob/5ea8a8a4fab4e19a71e123e4d27d051f5e927172/packages/runtime-dom/src/directives/vModel.ts#L63
if (modelModifiers.value.trim) {
(event.target as HTMLInputElement).value = value.trim()
}
}
}
Expand Down
15 changes: 7 additions & 8 deletions src/runtime/components/forms/SelectMenu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
autofocus
autocomplete="off"
:class="uiMenu.input"
@change="onChange"
@change="onQueryChange"
/>
<component
:is="searchable ? 'HComboboxOption' : 'HListboxOption'"
Expand Down Expand Up @@ -505,14 +505,13 @@ export default defineComponent({
}
})
function onUpdate (event: any) {
emit('update:modelValue', event)
}
function onChange (event: any) {
emit('change', (event.target as HTMLInputElement).value)
function onUpdate (value: any) {
emit('update:modelValue', value)
emit('change', value)
emitFormChange()
}
function onQueryChange (event: any) {
query.value = event.target.value
}
Expand Down Expand Up @@ -547,7 +546,7 @@ export default defineComponent({
// eslint-disable-next-line vue/no-dupe-keys
query,
onUpdate,
onChange
onQueryChange
}
}
})
Expand Down

0 comments on commit 878f707

Please sign in to comment.