diff --git a/src/runtime/components/forms/SelectCustom.vue b/src/runtime/components/forms/SelectCustom.vue
index 1da97a12..ab1893e8 100644
--- a/src/runtime/components/forms/SelectCustom.vue
+++ b/src/runtime/components/forms/SelectCustom.vue
@@ -7,7 +7,7 @@
:disabled="disabled"
as="div"
:class="wrapperClass"
- @update:model-value="$emit('update:modelValue', $event)"
+ @update:model-value="onUpdate"
>
@@ -32,6 +32,7 @@
import { ref, computed } from 'vue'
-import type { PropType } from 'vue'
+import type { PropType, ComponentPublicInstance } from 'vue'
import {
Combobox,
ComboboxButton,
@@ -258,7 +259,7 @@ const props = defineProps({
}
})
-defineEmits(['update:modelValue'])
+const emit = defineEmits(['update:modelValue'])
const [trigger, container] = usePopper({
placement: props.placement,
@@ -285,6 +286,7 @@ const [trigger, container] = usePopper({
})
const query = ref('')
+const searchInput = ref>()
const selectCustomClass = computed(() => {
return classNames(
@@ -338,6 +340,15 @@ function resolveOptionIconClass ({ active }: { active: boolean }) {
active ? props.listOptionIconActiveClass : props.listOptionIconInactiveClass
)
}
+
+function onUpdate (event) {
+ if (query.value && searchInput.value?.$el) {
+ query.value = ''
+ // explicitly set input text because `ComboboxInput` `displayValue` is not reactive
+ searchInput.value.$el.value = ''
+ }
+ emit('update:modelValue', event)
+}