|
31 | 31 | :handleTagRemove="handleTagRemove"
|
32 | 32 | :disabled="disabled"
|
33 | 33 | >
|
34 |
| - <div :class="classList.tag" :key="key"> |
| 34 | + <span :class="classList.tag" :key="key"> |
35 | 35 | {{ option[label] }}
|
36 | 36 | <span
|
37 | 37 | v-if="!disabled"
|
|
40 | 40 | >
|
41 | 41 | <span :class="classList.tagRemoveIcon"></span>
|
42 | 42 | </span>
|
43 |
| - </div> |
| 43 | + </span> |
44 | 44 | </slot>
|
45 | 45 |
|
46 | 46 | <div :class="classList.tagsSearchWrapper">
|
|
103 | 103 | </slot>
|
104 | 104 |
|
105 | 105 | <!-- 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> |
111 | 111 |
|
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> |
126 | 126 |
|
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> |
130 | 130 |
|
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> |
134 | 134 |
|
135 |
| - <slot name="afterlist" :options="fo"></slot> |
136 |
| - </div> |
137 |
| - </transition> |
| 135 | + <slot name="afterlist" :options="fo"></slot> |
| 136 | + </div> |
138 | 137 |
|
139 | 138 | <!-- Hacky input element to show HTML5 required warning -->
|
140 | 139 | <input v-if="required" :class="classList.fakeInput" tabindex="-1" :value="textValue" required/>
|
|
357 | 356 | required: false,
|
358 | 357 | default: true,
|
359 | 358 | },
|
| 359 | + closeOnSelect: { |
| 360 | + type: Boolean, |
| 361 | + required: false, |
| 362 | + default: true, |
| 363 | + }, |
360 | 364 | },
|
361 | 365 | setup(props, context)
|
362 | 366 | {
|
|
373 | 377 | input: search.input,
|
374 | 378 | open: dropdown.open,
|
375 | 379 | close: dropdown.close,
|
| 380 | + clearSearch: search.clearSearch, |
376 | 381 | })
|
377 | 382 |
|
378 | 383 | const options = useOptions(props, context, {
|
|
383 | 388 | update: data.update,
|
384 | 389 | pointer: pointer.pointer,
|
385 | 390 | blur: multiselect.blur,
|
| 391 | + deactivate: multiselect.deactivate, |
386 | 392 | })
|
387 | 393 |
|
388 | 394 | const pointerAction = usePointerAction(props, context, {
|
|
0 commit comments