Merge pull request #117 from nagisa77/codex/fix-search-dropdown-display-and-error

Fix dropdown search slot update
This commit is contained in:
Tim
2025-07-08 17:25:54 +08:00
committed by GitHub
2 changed files with 21 additions and 5 deletions

View File

@@ -1,7 +1,13 @@
<template> <template>
<div class="dropdown" ref="wrapper"> <div class="dropdown" ref="wrapper">
<div class="dropdown-display" @click="toggle"> <div class="dropdown-display" @click="toggle">
<slot name="display" :selected="selectedLabels" :toggle="toggle" :search="search"> <slot
name="display"
:selected="selectedLabels"
:toggle="toggle"
:search="search"
:setSearch="setSearch"
>
<template v-if="multiple"> <template v-if="multiple">
<span v-if="selectedLabels.length"> <span v-if="selectedLabels.length">
<template v-for="(label, idx) in selectedLabels" :key="label.id"> <template v-for="(label, idx) in selectedLabels" :key="label.id">
@@ -76,6 +82,9 @@ export default {
setup(props, { emit }) { setup(props, { emit }) {
const open = ref(false) const open = ref(false)
const search = ref('') const search = ref('')
const setSearch = (val) => {
search.value = val
}
const options = ref([]) const options = ref([])
const loaded = ref(false) const loaded = ref(false)
const loading = ref(false) const loading = ref(false)
@@ -185,7 +194,8 @@ export default {
selectedLabels, selectedLabels,
isSelected, isSelected,
loading, loading,
isImageIcon isImageIcon,
setSearch
} }
} }
} }

View File

@@ -6,10 +6,16 @@
menu-class="search-menu" menu-class="search-menu"
option-class="search-option" option-class="search-option"
> >
<template #display="{ toggle, search }"> <template #display="{ toggle, setSearch }">
<div class="search-input" @click="toggle"> <div class="search-input" @click="toggle">
<i class="search-input-icon fas fa-search"></i> <i class="search-input-icon fas fa-search"></i>
<input type="text" v-model="keyword" placeholder="Search" @focus="toggle" @input="search.value = keyword" /> <input
type="text"
v-model="keyword"
placeholder="Search"
@focus="toggle"
@input="setSearch(keyword)"
/>
</div> </div>
</template> </template>
<template #option="{ option }"> <template #option="{ option }">