Skip to content

Commit f02ab58

Browse files
committed
tag blur on tag remove fix
1 parent 651985c commit f02ab58

File tree

1 file changed

+36
-30
lines changed

1 file changed

+36
-30
lines changed

src/Multiselect.vue

+36-30
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
:handleTagRemove="handleTagRemove"
3232
:disabled="disabled"
3333
>
34-
<div :class="classList.tag" :key="key">
34+
<span :class="classList.tag" :key="key">
3535
{{ option[label] }}
3636
<span
3737
v-if="!disabled"
@@ -40,7 +40,7 @@
4040
>
4141
<span :class="classList.tagRemoveIcon"></span>
4242
</span>
43-
</div>
43+
</span>
4444
</slot>
4545

4646
<div :class="classList.tagsSearchWrapper">
@@ -103,38 +103,37 @@
103103
</slot>
104104

105105
<!-- Options -->
106-
<transition v-if="!resolving || !clearOnSearch" name="multiselect" @after-leave="clearSearch">
107-
<div
108-
:class="classList.dropdown"
109-
>
110-
<slot name="beforelist" :options="fo"></slot>
106+
<div
107+
:class="classList.dropdown"
108+
tabindex="-1"
109+
>
110+
<slot name="beforelist" :options="fo"></slot>
111111

112-
<ul :class="classList.options">
113-
<li
114-
v-for="(option, i, key) in fo"
115-
:class="classList.option(option)"
116-
:key="key"
117-
:data-pointed="isPointed(option)"
118-
@mouseenter="setPointer(option)"
119-
@click="handleOptionClick(option)"
120-
>
121-
<slot name="option" :option="option" :search="search">
122-
<span>{{ option[label] }}</span>
123-
</slot>
124-
</li>
125-
</ul>
112+
<ul :class="classList.options">
113+
<li
114+
v-for="(option, i, key) in fo"
115+
:class="classList.option(option)"
116+
:key="key"
117+
:data-pointed="isPointed(option)"
118+
@mouseenter="setPointer(option)"
119+
@click="handleOptionClick(option)"
120+
>
121+
<slot name="option" :option="option" :search="search">
122+
<span>{{ option[label] }}</span>
123+
</slot>
124+
</li>
125+
</ul>
126126

127-
<slot v-if="noOptions" name="nooptions">
128-
<div :class="classList.noOptions" v-html="noOptionsText"></div>
129-
</slot>
127+
<slot v-if="noOptions" name="nooptions">
128+
<div :class="classList.noOptions" v-html="noOptionsText"></div>
129+
</slot>
130130

131-
<slot v-if="noResults" name="noresults">
132-
<div :class="classList.noResults" v-html="noResultsText"></div>
133-
</slot>
131+
<slot v-if="noResults" name="noresults">
132+
<div :class="classList.noResults" v-html="noResultsText"></div>
133+
</slot>
134134

135-
<slot name="afterlist" :options="fo"></slot>
136-
</div>
137-
</transition>
135+
<slot name="afterlist" :options="fo"></slot>
136+
</div>
138137

139138
<!-- Hacky input element to show HTML5 required warning -->
140139
<input v-if="required" :class="classList.fakeInput" tabindex="-1" :value="textValue" required/>
@@ -357,6 +356,11 @@
357356
required: false,
358357
default: true,
359358
},
359+
closeOnSelect: {
360+
type: Boolean,
361+
required: false,
362+
default: true,
363+
},
360364
},
361365
setup(props, context)
362366
{
@@ -373,6 +377,7 @@
373377
input: search.input,
374378
open: dropdown.open,
375379
close: dropdown.close,
380+
clearSearch: search.clearSearch,
376381
})
377382
378383
const options = useOptions(props, context, {
@@ -383,6 +388,7 @@
383388
update: data.update,
384389
pointer: pointer.pointer,
385390
blur: multiselect.blur,
391+
deactivate: multiselect.deactivate,
386392
})
387393
388394
const pointerAction = usePointerAction(props, context, {

0 commit comments

Comments
 (0)