@ozdao/prometheus-framework 0.2.254 → 0.2.256

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,450 @@
1
+ import multiselectMixin from "./multiselectMixin.js";
2
+ import pointerMixin from "./pointerMixin.js";
3
+ import { openBlock, createElementBlock, normalizeClass, withKeys, withModifiers, renderSlot, createElementVNode, withDirectives, Fragment, renderList, toDisplayString, vShow, createCommentVNode, createVNode, Transition, withCtx, normalizeStyle, createTextVNode } from "vue";
4
+ /* empty css */
5
+ import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
6
+ const _sfc_main = {
7
+ name: "vue-multiselect",
8
+ mixins: [multiselectMixin, pointerMixin],
9
+ compatConfig: {
10
+ MODE: 3,
11
+ ATTR_ENUMERATED_COERCION: false
12
+ },
13
+ props: {
14
+ /**
15
+ * name attribute to match optional label element
16
+ * @default ''
17
+ * @type {String}
18
+ */
19
+ name: {
20
+ type: String,
21
+ default: ""
22
+ },
23
+ /**
24
+ * Presets the selected options value.
25
+ * @type {Object||Array||String||Integer}
26
+ */
27
+ modelValue: {
28
+ type: null,
29
+ default() {
30
+ return [];
31
+ }
32
+ },
33
+ /**
34
+ * String to show when pointing to an option
35
+ * @default 'Press enter to select'
36
+ * @type {String}
37
+ */
38
+ selectLabel: {
39
+ type: String,
40
+ default: "Press enter to select"
41
+ },
42
+ /**
43
+ * String to show when pointing to an option
44
+ * @default 'Press enter to select'
45
+ * @type {String}
46
+ */
47
+ selectGroupLabel: {
48
+ type: String,
49
+ default: "Press enter to select group"
50
+ },
51
+ /**
52
+ * String to show next to selected option
53
+ * @default 'Selected'
54
+ * @type {String}
55
+ */
56
+ selectedLabel: {
57
+ type: String,
58
+ default: "Selected"
59
+ },
60
+ /**
61
+ * String to show when pointing to an already selected option
62
+ * @default 'Press enter to remove'
63
+ * @type {String}
64
+ */
65
+ deselectLabel: {
66
+ type: String,
67
+ default: "Press enter to remove"
68
+ },
69
+ /**
70
+ * String to show when pointing to an already selected option
71
+ * @default 'Press enter to remove'
72
+ * @type {String}
73
+ */
74
+ deselectGroupLabel: {
75
+ type: String,
76
+ default: "Press enter to deselect group"
77
+ },
78
+ /**
79
+ * Decide whether to show pointer labels
80
+ * @default true
81
+ * @type {Boolean}
82
+ */
83
+ showLabels: {
84
+ type: Boolean,
85
+ default: true
86
+ },
87
+ /**
88
+ * Limit the display of selected options. The rest will be hidden within the limitText string.
89
+ * @default 99999
90
+ * @type {Integer}
91
+ */
92
+ limit: {
93
+ type: Number,
94
+ default: 99999
95
+ },
96
+ /**
97
+ * Sets maxHeight style value of the dropdown
98
+ * @default 300
99
+ * @type {Integer}
100
+ */
101
+ maxHeight: {
102
+ type: Number,
103
+ default: 300
104
+ },
105
+ /**
106
+ * Function that process the message shown when selected
107
+ * elements pass the defined limit.
108
+ * @default 'and * more'
109
+ * @param {Int} count Number of elements more than limit
110
+ * @type {Function}
111
+ */
112
+ limitText: {
113
+ type: Function,
114
+ default: (count) => `and ${count} more`
115
+ },
116
+ /**
117
+ * Set true to trigger the loading spinner.
118
+ * @default False
119
+ * @type {Boolean}
120
+ */
121
+ loading: {
122
+ type: Boolean,
123
+ default: false
124
+ },
125
+ /**
126
+ * Disables the multiselect if true.
127
+ * @default false
128
+ * @type {Boolean}
129
+ */
130
+ disabled: {
131
+ type: Boolean,
132
+ default: false
133
+ },
134
+ /**
135
+ * Fixed opening direction
136
+ * @default ''
137
+ * @type {String}
138
+ */
139
+ openDirection: {
140
+ type: String,
141
+ default: ""
142
+ },
143
+ /**
144
+ * Shows slot with message about empty options
145
+ * @default true
146
+ * @type {Boolean}
147
+ */
148
+ showNoOptions: {
149
+ type: Boolean,
150
+ default: true
151
+ },
152
+ showNoResults: {
153
+ type: Boolean,
154
+ default: true
155
+ },
156
+ tabindex: {
157
+ type: Number,
158
+ default: 0
159
+ }
160
+ },
161
+ computed: {
162
+ hasOptionGroup() {
163
+ return this.groupValues && this.groupLabel && this.groupSelect;
164
+ },
165
+ isSingleLabelVisible() {
166
+ return (this.singleValue || this.singleValue === 0) && (!this.isOpen || !this.searchable) && !this.visibleValues.length;
167
+ },
168
+ isPlaceholderVisible() {
169
+ return !this.internalValue.length && (!this.searchable || !this.isOpen);
170
+ },
171
+ visibleValues() {
172
+ return this.multiple ? this.internalValue.slice(0, this.limit) : [];
173
+ },
174
+ singleValue() {
175
+ return this.internalValue[0];
176
+ },
177
+ deselectLabelText() {
178
+ return this.showLabels ? this.deselectLabel : "";
179
+ },
180
+ deselectGroupLabelText() {
181
+ return this.showLabels ? this.deselectGroupLabel : "";
182
+ },
183
+ selectLabelText() {
184
+ return this.showLabels ? this.selectLabel : "";
185
+ },
186
+ selectGroupLabelText() {
187
+ return this.showLabels ? this.selectGroupLabel : "";
188
+ },
189
+ selectedLabelText() {
190
+ return this.showLabels ? this.selectedLabel : "";
191
+ },
192
+ inputStyle() {
193
+ if (this.searchable || this.multiple && this.modelValue && this.modelValue.length) {
194
+ return this.isOpen ? { width: "100%" } : { width: "0", position: "absolute", padding: "0" };
195
+ }
196
+ return "";
197
+ },
198
+ contentStyle() {
199
+ return this.options.length ? { display: "inline-block" } : { display: "block" };
200
+ },
201
+ isAbove() {
202
+ if (this.openDirection === "above" || this.openDirection === "top") {
203
+ return true;
204
+ } else if (this.openDirection === "below" || this.openDirection === "bottom") {
205
+ return false;
206
+ } else {
207
+ return this.preferredOpenDirection === "above";
208
+ }
209
+ },
210
+ showSearchInput() {
211
+ return this.searchable && (this.hasSingleSelectedSlot && (this.visibleSingleValue || this.visibleSingleValue === 0) ? this.isOpen : true);
212
+ }
213
+ }
214
+ };
215
+ const _hoisted_1 = ["tabindex", "aria-owns"];
216
+ const _hoisted_2 = {
217
+ ref: "tags",
218
+ class: "multiselect__tags"
219
+ };
220
+ const _hoisted_3 = { class: "multiselect__tags-wrap" };
221
+ const _hoisted_4 = ["textContent"];
222
+ const _hoisted_5 = ["onKeypress", "onMousedown"];
223
+ const _hoisted_6 = ["textContent"];
224
+ const _hoisted_7 = { class: "multiselect__spinner" };
225
+ const _hoisted_8 = ["name", "id", "placeholder", "value", "disabled", "tabindex", "aria-controls"];
226
+ const _hoisted_9 = ["id"];
227
+ const _hoisted_10 = { key: 0 };
228
+ const _hoisted_11 = { class: "multiselect__option" };
229
+ const _hoisted_12 = ["id", "role"];
230
+ const _hoisted_13 = ["onClick", "onMouseenter", "data-select", "data-selected", "data-deselect"];
231
+ const _hoisted_14 = ["data-select", "data-deselect", "onMouseenter", "onMousedown"];
232
+ const _hoisted_15 = { class: "multiselect__option" };
233
+ const _hoisted_16 = { class: "multiselect__option" };
234
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
235
+ return openBlock(), createElementBlock("div", {
236
+ tabindex: _ctx.searchable ? -1 : $props.tabindex,
237
+ class: normalizeClass([{ "multiselect--active": _ctx.isOpen, "multiselect--disabled": $props.disabled, "multiselect--above": $options.isAbove, "multiselect--has-options-group": $options.hasOptionGroup }, "multiselect flex flex-v-center"]),
238
+ onFocus: _cache[13] || (_cache[13] = ($event) => _ctx.activate()),
239
+ onBlur: _cache[14] || (_cache[14] = ($event) => _ctx.searchable ? false : _ctx.deactivate()),
240
+ onKeydown: [
241
+ _cache[15] || (_cache[15] = withKeys(withModifiers(($event) => _ctx.pointerForward(), ["self", "prevent"]), ["down"])),
242
+ _cache[16] || (_cache[16] = withKeys(withModifiers(($event) => _ctx.pointerBackward(), ["self", "prevent"]), ["up"]))
243
+ ],
244
+ onKeypress: _cache[17] || (_cache[17] = withKeys(withModifiers(($event) => _ctx.addPointerElement($event), ["stop", "self"]), ["enter", "tab"])),
245
+ onKeyup: _cache[18] || (_cache[18] = withKeys(($event) => _ctx.deactivate(), ["esc"])),
246
+ role: "combobox",
247
+ "aria-owns": "listbox-" + _ctx.id
248
+ }, [
249
+ renderSlot(_ctx.$slots, "caret", { toggle: _ctx.toggle }, () => [
250
+ createElementVNode("div", {
251
+ onMousedown: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.toggle(), ["prevent", "stop"])),
252
+ class: "multiselect__select"
253
+ }, null, 32)
254
+ ]),
255
+ renderSlot(_ctx.$slots, "clear", { search: _ctx.search }),
256
+ createElementVNode("div", _hoisted_2, [
257
+ renderSlot(_ctx.$slots, "selection", {
258
+ search: _ctx.search,
259
+ remove: _ctx.removeElement,
260
+ values: $options.visibleValues,
261
+ isOpen: _ctx.isOpen
262
+ }, () => [
263
+ withDirectives(createElementVNode("div", _hoisted_3, [
264
+ (openBlock(true), createElementBlock(Fragment, null, renderList($options.visibleValues, (option, index) => {
265
+ return renderSlot(_ctx.$slots, "tag", {
266
+ option,
267
+ search: _ctx.search,
268
+ remove: _ctx.removeElement
269
+ }, () => [
270
+ (openBlock(), createElementBlock("span", {
271
+ class: "multiselect__tag",
272
+ key: index
273
+ }, [
274
+ createElementVNode("span", {
275
+ textContent: toDisplayString(_ctx.getOptionLabel(option))
276
+ }, null, 8, _hoisted_4),
277
+ createElementVNode("i", {
278
+ tabindex: "1",
279
+ onKeypress: withKeys(withModifiers(($event) => _ctx.removeElement(option), ["prevent"]), ["enter"]),
280
+ onMousedown: withModifiers(($event) => _ctx.removeElement(option), ["prevent"]),
281
+ class: "multiselect__tag-icon"
282
+ }, null, 40, _hoisted_5)
283
+ ]))
284
+ ]);
285
+ }), 256))
286
+ ], 512), [
287
+ [vShow, $options.visibleValues.length > 0]
288
+ ]),
289
+ _ctx.internalValue && _ctx.internalValue.length > $props.limit ? renderSlot(_ctx.$slots, "limit", { key: 0 }, () => [
290
+ createElementVNode("strong", {
291
+ class: "multiselect__strong",
292
+ textContent: toDisplayString($props.limitText(_ctx.internalValue.length - $props.limit))
293
+ }, null, 8, _hoisted_6)
294
+ ]) : createCommentVNode("", true)
295
+ ]),
296
+ createVNode(Transition, { name: "multiselect__loading" }, {
297
+ default: withCtx(() => [
298
+ renderSlot(_ctx.$slots, "loading", {}, () => [
299
+ withDirectives(createElementVNode("div", _hoisted_7, null, 512), [
300
+ [vShow, $props.loading]
301
+ ])
302
+ ])
303
+ ]),
304
+ _: 3
305
+ }),
306
+ _ctx.searchable ? (openBlock(), createElementBlock("input", {
307
+ key: 0,
308
+ ref: "search",
309
+ name: $props.name,
310
+ id: _ctx.id,
311
+ type: "text",
312
+ autocomplete: "off",
313
+ spellcheck: "false",
314
+ placeholder: _ctx.placeholder,
315
+ style: normalizeStyle($options.inputStyle),
316
+ value: _ctx.search,
317
+ disabled: $props.disabled,
318
+ tabindex: $props.tabindex,
319
+ onInput: _cache[1] || (_cache[1] = ($event) => _ctx.updateSearch($event.target.value)),
320
+ onFocus: _cache[2] || (_cache[2] = withModifiers(($event) => _ctx.activate(), ["prevent"])),
321
+ onBlur: _cache[3] || (_cache[3] = withModifiers(($event) => _ctx.deactivate(), ["prevent"])),
322
+ onKeyup: _cache[4] || (_cache[4] = withKeys(($event) => _ctx.deactivate(), ["esc"])),
323
+ onKeydown: [
324
+ _cache[5] || (_cache[5] = withKeys(withModifiers(($event) => _ctx.pointerForward(), ["prevent"]), ["down"])),
325
+ _cache[6] || (_cache[6] = withKeys(withModifiers(($event) => _ctx.pointerBackward(), ["prevent"]), ["up"])),
326
+ _cache[8] || (_cache[8] = withKeys(withModifiers(($event) => _ctx.removeLastElement(), ["stop"]), ["delete"]))
327
+ ],
328
+ onKeypress: _cache[7] || (_cache[7] = withKeys(withModifiers(($event) => _ctx.addPointerElement($event), ["prevent", "stop", "self"]), ["enter"])),
329
+ class: "multiselect__input",
330
+ "aria-controls": "listbox-" + _ctx.id
331
+ }, null, 44, _hoisted_8)) : createCommentVNode("", true),
332
+ $options.isSingleLabelVisible ? (openBlock(), createElementBlock("span", {
333
+ key: 1,
334
+ class: "multiselect__single",
335
+ onMousedown: _cache[9] || (_cache[9] = withModifiers((...args) => _ctx.toggle && _ctx.toggle(...args), ["prevent"]))
336
+ }, [
337
+ renderSlot(_ctx.$slots, "singleLabel", { option: $options.singleValue }, () => [
338
+ createTextVNode(toDisplayString(_ctx.currentOptionLabel), 1)
339
+ ])
340
+ ], 32)) : createCommentVNode("", true),
341
+ $options.isPlaceholderVisible ? (openBlock(), createElementBlock("span", {
342
+ key: 2,
343
+ class: "multiselect__placeholder",
344
+ onMousedown: _cache[10] || (_cache[10] = withModifiers((...args) => _ctx.toggle && _ctx.toggle(...args), ["prevent"]))
345
+ }, [
346
+ renderSlot(_ctx.$slots, "placeholder", {}, () => [
347
+ createTextVNode(toDisplayString(_ctx.placeholder), 1)
348
+ ])
349
+ ], 32)) : createCommentVNode("", true)
350
+ ], 512),
351
+ createVNode(Transition, { name: "multiselect" }, {
352
+ default: withCtx(() => [
353
+ withDirectives(createElementVNode("div", {
354
+ class: normalizeClass(["multiselect__content-wrapper", _ctx.$attrs.class]),
355
+ onFocus: _cache[11] || (_cache[11] = (...args) => _ctx.activate && _ctx.activate(...args)),
356
+ tabindex: "-1",
357
+ onMousedown: _cache[12] || (_cache[12] = withModifiers(() => {
358
+ }, ["prevent"])),
359
+ style: normalizeStyle({ maxHeight: _ctx.optimizedHeight + "px" }),
360
+ ref: "list"
361
+ }, [
362
+ createElementVNode("ul", {
363
+ class: "multiselect__content",
364
+ style: normalizeStyle($options.contentStyle),
365
+ role: "listbox",
366
+ id: "listbox-" + _ctx.id
367
+ }, [
368
+ renderSlot(_ctx.$slots, "beforeList"),
369
+ _ctx.multiple && _ctx.max === _ctx.internalValue.length ? (openBlock(), createElementBlock("li", _hoisted_10, [
370
+ createElementVNode("span", _hoisted_11, [
371
+ renderSlot(_ctx.$slots, "maxElements", {}, () => [
372
+ createTextVNode("Maximum of " + toDisplayString(_ctx.max) + " options selected. First remove a selected option to select another.", 1)
373
+ ])
374
+ ])
375
+ ])) : createCommentVNode("", true),
376
+ !_ctx.max || _ctx.internalValue.length < _ctx.max ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(_ctx.filteredOptions, (option, index) => {
377
+ return openBlock(), createElementBlock("li", {
378
+ class: "multiselect__element",
379
+ key: index,
380
+ id: _ctx.id + "-" + index,
381
+ role: !(option && (option.$isLabel || option.$isDisabled)) ? "option" : null
382
+ }, [
383
+ !(option && (option.$isLabel || option.$isDisabled)) ? (openBlock(), createElementBlock("span", {
384
+ key: 0,
385
+ class: normalizeClass([_ctx.optionHighlight(index, option), "multiselect__option"]),
386
+ onClick: withModifiers(($event) => _ctx.select(option), ["stop"]),
387
+ onMouseenter: withModifiers(($event) => _ctx.pointerSet(index), ["self"]),
388
+ "data-select": option && option.isTag ? _ctx.tagPlaceholder : $options.selectLabelText,
389
+ "data-selected": $options.selectedLabelText,
390
+ "data-deselect": $options.deselectLabelText
391
+ }, [
392
+ renderSlot(_ctx.$slots, "option", {
393
+ option,
394
+ search: _ctx.search,
395
+ index
396
+ }, () => [
397
+ createElementVNode("span", null, toDisplayString(_ctx.getOptionLabel(option)), 1)
398
+ ])
399
+ ], 42, _hoisted_13)) : createCommentVNode("", true),
400
+ option && (option.$isLabel || option.$isDisabled) ? (openBlock(), createElementBlock("span", {
401
+ key: 1,
402
+ "data-select": _ctx.groupSelect && $options.selectGroupLabelText,
403
+ "data-deselect": _ctx.groupSelect && $options.deselectGroupLabelText,
404
+ class: normalizeClass([_ctx.groupHighlight(index, option), "multiselect__option"]),
405
+ onMouseenter: withModifiers(($event) => _ctx.groupSelect && _ctx.pointerSet(index), ["self"]),
406
+ onMousedown: withModifiers(($event) => _ctx.selectGroup(option), ["prevent"])
407
+ }, [
408
+ renderSlot(_ctx.$slots, "option", {
409
+ option,
410
+ search: _ctx.search,
411
+ index
412
+ }, () => [
413
+ createElementVNode("span", null, toDisplayString(_ctx.getOptionLabel(option)), 1)
414
+ ])
415
+ ], 42, _hoisted_14)) : createCommentVNode("", true)
416
+ ], 8, _hoisted_12);
417
+ }), 128)) : createCommentVNode("", true),
418
+ withDirectives(createElementVNode("li", null, [
419
+ createElementVNode("span", _hoisted_15, [
420
+ renderSlot(_ctx.$slots, "noResult", { search: _ctx.search }, () => [
421
+ _cache[19] || (_cache[19] = createTextVNode("No elements found. Consider changing the search query."))
422
+ ])
423
+ ])
424
+ ], 512), [
425
+ [vShow, $props.showNoResults && (_ctx.filteredOptions.length === 0 && _ctx.search && !$props.loading)]
426
+ ]),
427
+ withDirectives(createElementVNode("li", null, [
428
+ createElementVNode("span", _hoisted_16, [
429
+ renderSlot(_ctx.$slots, "noOptions", {}, () => [
430
+ _cache[20] || (_cache[20] = createTextVNode("List is empty."))
431
+ ])
432
+ ])
433
+ ], 512), [
434
+ [vShow, $props.showNoOptions && ((_ctx.options.length === 0 || $options.hasOptionGroup === true && _ctx.filteredOptions.length === 0) && !_ctx.search && !$props.loading)]
435
+ ]),
436
+ renderSlot(_ctx.$slots, "afterList")
437
+ ], 12, _hoisted_9)
438
+ ], 38), [
439
+ [vShow, _ctx.isOpen]
440
+ ])
441
+ ]),
442
+ _: 3
443
+ })
444
+ ], 42, _hoisted_1);
445
+ }
446
+ const SelectMulti = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
447
+ export {
448
+ SelectMulti as default
449
+ };
450
+ //# sourceMappingURL=SelectMulti.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectMulti.vue2.js","sources":["../../../../../src/components/SelectMulti/SelectMulti.vue"],"sourcesContent":["<template>\n <div\n :tabindex=\"searchable ? -1 : tabindex\"\n :class=\"{ 'multiselect--active': isOpen, 'multiselect--disabled': disabled, 'multiselect--above': isAbove, 'multiselect--has-options-group': hasOptionGroup }\"\n @focus=\"activate()\"\n @blur=\"searchable ? false : deactivate()\"\n @keydown.self.down.prevent=\"pointerForward()\"\n @keydown.self.up.prevent=\"pointerBackward()\"\n @keypress.enter.tab.stop.self=\"addPointerElement($event)\"\n @keyup.esc=\"deactivate()\"\n class=\"multiselect flex flex-v-center\"\n role=\"combobox\"\n :aria-owns=\"'listbox-'+id\">\n \n <slot name=\"caret\" :toggle=\"toggle\">\n <div @mousedown.prevent.stop=\"toggle()\" class=\"multiselect__select\"></div>\n </slot>\n \n <slot name=\"clear\" :search=\"search\"></slot>\n \n <div ref=\"tags\" class=\"multiselect__tags\">\n <slot\n name=\"selection\"\n :search=\"search\"\n :remove=\"removeElement\"\n :values=\"visibleValues\"\n :is-open=\"isOpen\"\n >\n <div class=\"multiselect__tags-wrap\" v-show=\"visibleValues.length > 0\">\n <template v-for=\"(option, index) of visibleValues\" @mousedown.prevent>\n <slot name=\"tag\" :option=\"option\" :search=\"search\" :remove=\"removeElement\">\n <span class=\"multiselect__tag\" :key=\"index\">\n <span v-text=\"getOptionLabel(option)\"></span>\n <i tabindex=\"1\" @keypress.enter.prevent=\"removeElement(option)\"\n @mousedown.prevent=\"removeElement(option)\" class=\"multiselect__tag-icon\"></i>\n </span>\n </slot>\n </template>\n </div>\n <template v-if=\"internalValue && internalValue.length > limit\">\n <slot name=\"limit\">\n <strong class=\"multiselect__strong\" v-text=\"limitText(internalValue.length - limit)\"/>\n </slot>\n </template>\n </slot>\n <transition name=\"multiselect__loading\">\n <slot name=\"loading\">\n <div v-show=\"loading\" class=\"multiselect__spinner\"/>\n </slot>\n </transition>\n <input\n ref=\"search\"\n v-if=\"searchable\"\n :name=\"name\"\n :id=\"id\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :value=\"search\"\n :disabled=\"disabled\"\n :tabindex=\"tabindex\"\n @input=\"updateSearch($event.target.value)\"\n @focus.prevent=\"activate()\"\n @blur.prevent=\"deactivate()\"\n @keyup.esc=\"deactivate()\"\n @keydown.down.prevent=\"pointerForward()\"\n @keydown.up.prevent=\"pointerBackward()\"\n @keypress.enter.prevent.stop.self=\"addPointerElement($event)\"\n @keydown.delete.stop=\"removeLastElement()\"\n class=\"multiselect__input\"\n :aria-controls=\"'listbox-'+id\"\n />\n <span\n v-if=\"isSingleLabelVisible\"\n class=\"multiselect__single\"\n @mousedown.prevent=\"toggle\"\n >\n <slot name=\"singleLabel\" :option=\"singleValue\">\n {{ currentOptionLabel }}\n </slot>\n </span>\n <span\n v-if=\"isPlaceholderVisible\"\n class=\"multiselect__placeholder\"\n @mousedown.prevent=\"toggle\"\n >\n <slot name=\"placeholder\">\n {{ placeholder }}\n </slot>\n </span>\n </div>\n \n <transition name=\"multiselect\">\n <div\n class=\"multiselect__content-wrapper\"\n v-show=\"isOpen\"\n @focus=\"activate\"\n tabindex=\"-1\"\n @mousedown.prevent\n :style=\"{ maxHeight: optimizedHeight + 'px' }\"\n ref=\"list\"\n :class=\"$attrs.class\"\n >\n <ul class=\"multiselect__content\" :style=\"contentStyle\" role=\"listbox\" :id=\"'listbox-'+id\">\n <slot name=\"beforeList\"></slot>\n <li v-if=\"multiple && max === internalValue.length\">\n <span class=\"multiselect__option\">\n <slot name=\"maxElements\">Maximum of {{ max }} options selected. First remove a selected option to select another.</slot>\n </span>\n </li>\n <template v-if=\"!max || internalValue.length < max\">\n <li class=\"multiselect__element\"\n v-for=\"(option, index) of filteredOptions\"\n :key=\"index\"\n v-bind:id=\"id + '-' + index\"\n v-bind:role=\"!(option && (option.$isLabel || option.$isDisabled)) ? 'option' : null\">\n <span\n v-if=\"!(option && (option.$isLabel || option.$isDisabled))\"\n :class=\"optionHighlight(index, option)\"\n @click.stop=\"select(option)\"\n @mouseenter.self=\"pointerSet(index)\"\n :data-select=\"option && option.isTag ? tagPlaceholder : selectLabelText\"\n :data-selected=\"selectedLabelText\"\n :data-deselect=\"deselectLabelText\"\n class=\"multiselect__option\">\n <slot name=\"option\" :option=\"option\" :search=\"search\" :index=\"index\">\n <span>{{ getOptionLabel(option) }}</span>\n </slot>\n </span>\n <span\n v-if=\"option && (option.$isLabel || option.$isDisabled)\"\n :data-select=\"groupSelect && selectGroupLabelText\"\n :data-deselect=\"groupSelect && deselectGroupLabelText\"\n :class=\"groupHighlight(index, option)\"\n @mouseenter.self=\"groupSelect && pointerSet(index)\"\n @mousedown.prevent=\"selectGroup(option)\"\n class=\"multiselect__option\">\n <slot name=\"option\" :option=\"option\" :search=\"search\" :index=\"index\">\n <span>{{ getOptionLabel(option) }}</span>\n </slot>\n </span>\n </li>\n </template>\n <li v-show=\"showNoResults && (filteredOptions.length === 0 && search && !loading)\">\n <span class=\"multiselect__option\">\n <slot name=\"noResult\" :search=\"search\">No elements found. Consider changing the search query.</slot>\n </span>\n </li>\n <li v-show=\"showNoOptions && ((options.length === 0 || (hasOptionGroup === true && filteredOptions.length === 0)) && !search && !loading)\">\n <span class=\"multiselect__option\">\n <slot name=\"noOptions\">List is empty.</slot>\n </span>\n </li>\n <slot name=\"afterList\"></slot>\n </ul>\n </div>\n </transition>\n </div>\n</template>\n\n<script>\nimport multiselectMixin from './multiselectMixin'\nimport pointerMixin from './pointerMixin'\n\nexport default {\n name: 'vue-multiselect',\n mixins: [multiselectMixin, pointerMixin],\n compatConfig: {\n MODE: 3,\n ATTR_ENUMERATED_COERCION: false\n },\n props: {\n /**\n * name attribute to match optional label element\n * @default ''\n * @type {String}\n */\n name: {\n type: String,\n default: ''\n },\n /**\n * Presets the selected options value.\n * @type {Object||Array||String||Integer}\n */\n modelValue: {\n type: null,\n default () {\n return []\n }\n },\n /**\n * String to show when pointing to an option\n * @default 'Press enter to select'\n * @type {String}\n */\n selectLabel: {\n type: String,\n default: 'Press enter to select'\n },\n /**\n * String to show when pointing to an option\n * @default 'Press enter to select'\n * @type {String}\n */\n selectGroupLabel: {\n type: String,\n default: 'Press enter to select group'\n },\n /**\n * String to show next to selected option\n * @default 'Selected'\n * @type {String}\n */\n selectedLabel: {\n type: String,\n default: 'Selected'\n },\n /**\n * String to show when pointing to an already selected option\n * @default 'Press enter to remove'\n * @type {String}\n */\n deselectLabel: {\n type: String,\n default: 'Press enter to remove'\n },\n /**\n * String to show when pointing to an already selected option\n * @default 'Press enter to remove'\n * @type {String}\n */\n deselectGroupLabel: {\n type: String,\n default: 'Press enter to deselect group'\n },\n /**\n * Decide whether to show pointer labels\n * @default true\n * @type {Boolean}\n */\n showLabels: {\n type: Boolean,\n default: true\n },\n /**\n * Limit the display of selected options. The rest will be hidden within the limitText string.\n * @default 99999\n * @type {Integer}\n */\n limit: {\n type: Number,\n default: 99999\n },\n /**\n * Sets maxHeight style value of the dropdown\n * @default 300\n * @type {Integer}\n */\n maxHeight: {\n type: Number,\n default: 300\n },\n /**\n * Function that process the message shown when selected\n * elements pass the defined limit.\n * @default 'and * more'\n * @param {Int} count Number of elements more than limit\n * @type {Function}\n */\n limitText: {\n type: Function,\n default: (count) => `and ${count} more`\n },\n /**\n * Set true to trigger the loading spinner.\n * @default False\n * @type {Boolean}\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Disables the multiselect if true.\n * @default false\n * @type {Boolean}\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Fixed opening direction\n * @default ''\n * @type {String}\n */\n openDirection: {\n type: String,\n default: ''\n },\n /**\n * Shows slot with message about empty options\n * @default true\n * @type {Boolean}\n */\n showNoOptions: {\n type: Boolean,\n default: true\n },\n showNoResults: {\n type: Boolean,\n default: true\n },\n tabindex: {\n type: Number,\n default: 0\n }\n },\n computed: {\n hasOptionGroup () {\n return this.groupValues && this.groupLabel && this.groupSelect\n },\n isSingleLabelVisible () {\n return (\n (this.singleValue || this.singleValue === 0) &&\n (!this.isOpen || !this.searchable) &&\n !this.visibleValues.length\n )\n },\n isPlaceholderVisible () {\n return !this.internalValue.length && (!this.searchable || !this.isOpen)\n },\n visibleValues () {\n return this.multiple ? this.internalValue.slice(0, this.limit) : []\n },\n singleValue () {\n return this.internalValue[0]\n },\n deselectLabelText () {\n return this.showLabels ? this.deselectLabel : ''\n },\n deselectGroupLabelText () {\n return this.showLabels ? this.deselectGroupLabel : ''\n },\n selectLabelText () {\n return this.showLabels ? this.selectLabel : ''\n },\n selectGroupLabelText () {\n return this.showLabels ? this.selectGroupLabel : ''\n },\n selectedLabelText () {\n return this.showLabels ? this.selectedLabel : ''\n },\n inputStyle () {\n if (\n this.searchable ||\n (this.multiple && this.modelValue && this.modelValue.length)\n ) {\n // Hide input by setting the width to 0 allowing it to receive focus\n return this.isOpen\n ? {width: '100%'}\n : {width: '0', position: 'absolute', padding: '0'}\n }\n return ''\n },\n contentStyle () {\n return this.options.length\n ? {display: 'inline-block'}\n : {display: 'block'}\n },\n isAbove () {\n if (this.openDirection === 'above' || this.openDirection === 'top') {\n return true\n } else if (\n this.openDirection === 'below' ||\n this.openDirection === 'bottom'\n ) {\n return false\n } else {\n return this.preferredOpenDirection === 'above'\n }\n },\n showSearchInput () {\n return (\n this.searchable &&\n (this.hasSingleSelectedSlot &&\n (this.visibleSingleValue || this.visibleSingleValue === 0)\n ? this.isOpen\n : true)\n )\n }\n }\n}\n</script>\n\n<style>\n\n fieldset[disabled] .multiselect {\n pointer-events: none;\n }\n\n .multiselect__spinner {\n position: absolute;\n right: 1px;\n top: 1px;\n width: 40px;\n height: 38px;\n background: #fff;\n display: block;\n }\n\n .multiselect__spinner::before,\n .multiselect__spinner::after {\n position: absolute;\n content: \"\";\n top: 50%;\n left: 50%;\n margin: -8px 0 0 -8px;\n width: 16px;\n height: 16px;\n border-radius: 100%;\n border-color: #41b883 transparent transparent;\n border-style: solid;\n border-width: 2px;\n box-shadow: 0 0 0 1px transparent;\n }\n\n .multiselect__spinner::before {\n animation: spinning 2.4s cubic-bezier(0.41, 0.26, 0.2, 0.62);\n animation-iteration-count: infinite;\n }\n\n .multiselect__spinner::after {\n animation: spinning 2.4s cubic-bezier(0.51, 0.09, 0.21, 0.8);\n animation-iteration-count: infinite;\n }\n\n .multiselect__loading-enter-active,\n .multiselect__loading-leave-active {\n transition: opacity 0.4s ease-in-out;\n opacity: 1;\n }\n\n .multiselect__loading-enter,\n .multiselect__loading-leave-active {\n opacity: 0;\n }\n\n .multiselect,\n .multiselect__input,\n .multiselect__single {\n font-family: inherit;\n touch-action: manipulation;\n }\n\n .multiselect {\n display: block;\n position: relative;\n width: 100%;\n min-height: 40px;\n }\n\n .multiselect * {\n box-sizing: border-box;\n }\n\n .multiselect:focus {\n outline: none;\n }\n\n .multiselect--disabled {\n background: #ededed;\n pointer-events: none;\n opacity: 0.6;\n }\n\n .multiselect--active {\n z-index: 50;\n }\n\n .multiselect--active:not(.multiselect--above) .multiselect__current,\n .multiselect--active:not(.multiselect--above) .multiselect__input,\n .multiselect--active:not(.multiselect--above) .multiselect__tags {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .multiselect--active .multiselect__select {\n transform: rotateZ(180deg);\n }\n\n .multiselect--above.multiselect--active .multiselect__current,\n .multiselect--above.multiselect--active .multiselect__input,\n .multiselect--above.multiselect--active .multiselect__tags {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n .multiselect__input,\n .multiselect__single,\n .multiselect__placeholder {\n position: relative;\n display: inline-block;\n min-height: 20px;\n line-height: 20px;\n border: none;\n width: calc(100%);\n height: inherit;\n box-sizing: border-box;\n vertical-align: top;\n display: flex;\n align-items: center;\n }\n\n .multiselect__input::placeholder {\n color: #35495e;\n }\n\n .multiselect__tag ~ .multiselect__input,\n .multiselect__tag ~ .multiselect__single {\n width: auto;\n }\n\n .multiselect__input:hover,\n .multiselect__single:hover {\n border-color: #cfcfcf;\n }\n\n .multiselect__input:focus,\n .multiselect__single:focus {\n border-color: #a8a8a8;\n outline: none;\n }\n\n .multiselect__tags-wrap {\n display: inline;\n }\n\n .multiselect__tags {\n display: block;\n height: inherit;\n }\n\n .multiselect__tag {\n position: relative;\n display: inline-block;\n padding: 4px 26px 4px 10px;\n border-radius: 5px;\n margin-right: 10px;\n color: #fff;\n line-height: 1;\n background: #41b883;\n margin-bottom: 5px;\n white-space: nowrap;\n overflow: hidden;\n max-width: 100%;\n text-overflow: ellipsis;\n }\n\n .multiselect__tag-icon {\n cursor: pointer;\n margin-left: 7px;\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n font-weight: 700;\n font-style: initial;\n width: 22px;\n text-align: center;\n line-height: 22px;\n transition: all 0.2s ease;\n border-radius: 5px;\n }\n\n .multiselect__tag-icon::after {\n content: \"×\";\n color: #266d4d;\n font-size: 14px;\n }\n\n /* // Remove these lines to avoid green closing button\n //.multiselect__tag-icon:focus,\n //.multiselect__tag-icon:hover {\n // background: #369a6e;\n //} */\n\n .multiselect__tag-icon:focus::after,\n .multiselect__tag-icon:hover::after {\n color: white;\n }\n\n .multiselect__current {\n line-height: 16px;\n min-height: 40px;\n box-sizing: border-box;\n display: block;\n overflow: hidden;\n padding: 8px 12px 0;\n padding-right: 30px;\n white-space: nowrap;\n margin: 0;\n text-decoration: none;\n border-radius: 5px;\n border: 1px solid #e8e8e8;\n cursor: pointer;\n }\n\n .multiselect__select {\n line-height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: center;\n position: absolute;\n box-sizing: border-box;\n width: 40px;\n height: 38px;\n right: 1px;\n top: calc( 50% - 19px);\n padding: 4px 8px;\n margin: 0;\n text-decoration: none;\n text-align: center;\n cursor: pointer;\n transition: transform 0.2s ease;\n }\n\n .multiselect__select::before {\n position: relative;\n color: #999;\n margin-top: 4px;\n border-style: solid;\n border-width: 5px 5px 0 5px;\n border-color: #999 transparent transparent transparent;\n content: \"\";\n }\n\n\n .multiselect--active .multiselect__placeholder {\n display: none;\n }\n\n .multiselect__content-wrapper {\n position: absolute;\n display: block;\n background: #fff;\n width: 100%;\n max-height: 240px;\n height: min-content;\n overflow: auto;\n left: 0;\n border-top: none;\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: 5px;\n z-index: 50;\n -webkit-overflow-scrolling: touch;\n }\n\n .multiselect__content {\n list-style: none;\n display: inline-block;\n padding: 0;\n margin: 0;\n min-width: 100%;\n vertical-align: top;\n }\n\n .multiselect--above .multiselect__content-wrapper {\n bottom: 100%;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n border-bottom: none;\n border-top: 1px solid #e8e8e8;\n }\n\n .multiselect__content::-webkit-scrollbar {\n display: none;\n }\n\n .multiselect__element {\n display: block;\n }\n\n .multiselect__option {\n display: block;\n padding: 12px;\n min-height: 40px;\n line-height: 16px;\n text-decoration: none;\n text-transform: none;\n vertical-align: middle;\n position: relative;\n cursor: pointer;\n white-space: nowrap;\n }\n\n .multiselect__option::after {\n top: 0;\n right: 0;\n position: absolute;\n line-height: 40px;\n padding-right: 12px;\n padding-left: 20px;\n font-size: 13px;\n }\n\n .multiselect__option--highlight {\n background: rgba(var(--main),0.1);\n outline: none;\n }\n\n .multiselect__option--highlight::after {\n content: attr(data-select);\n }\n\n .multiselect__option--selected {\n background: #f3f3f3;\n color: #35495e;\n font-weight: bold;\n }\n\n .multiselect__option--selected::after {\n content: attr(data-selected);\n color: silver;\n background: inherit;\n }\n\n .multiselect__option--selected.multiselect__option--highlight {\n background: rgba(var(--red),0.1);\n }\n\n .multiselect__option--selected.multiselect__option--highlight::after {\n content: attr(data-deselect);\n }\n\n .multiselect--disabled .multiselect__current,\n .multiselect--disabled .multiselect__select {\n background: #ededed;\n color: #a6a6a6;\n }\n\n .multiselect__option--disabled {\n background: #ededed !important;\n color: #a6a6a6 !important;\n cursor: text;\n pointer-events: none;\n }\n\n .multiselect__option--group {\n background: #ededed;\n color: #35495e;\n }\n\n .multiselect__option--group.multiselect__option--highlight {\n background: #35495e;\n color: #fff;\n }\n\n .multiselect__option--group.multiselect__option--highlight::after {\n background: #35495e;\n }\n\n .multiselect__option--disabled.multiselect__option--highlight {\n background: #dedede;\n }\n\n .multiselect__option--group-selected.multiselect__option--highlight {\n background: #ff6a6a;\n color: #fff;\n }\n\n .multiselect__option--group-selected.multiselect__option--highlight::after {\n background: #ff6a6a;\n content: attr(data-deselect);\n color: #fff;\n }\n\n .multiselect-enter-active,\n .multiselect-leave-active {\n transition: all 0.15s ease;\n }\n\n .multiselect-enter,\n .multiselect-leave-active {\n opacity: 0;\n }\n\n .multiselect__strong {\n margin-bottom: 8px;\n line-height: 20px;\n display: inline-block;\n vertical-align: top;\n }\n\n *[dir=\"rtl\"] .multiselect {\n text-align: right;\n }\n\n *[dir=\"rtl\"] .multiselect__select {\n right: auto;\n left: 1px;\n }\n\n *[dir=\"rtl\"] .multiselect__tags {\n padding: 8px 8px 0 40px;\n }\n\n *[dir=\"rtl\"] .multiselect__content {\n text-align: right;\n }\n\n *[dir=\"rtl\"] .multiselect__option::after {\n right: auto;\n left: 0;\n }\n\n *[dir=\"rtl\"] .multiselect__clear {\n right: auto;\n left: 12px;\n }\n\n *[dir=\"rtl\"] .multiselect__spinner {\n right: auto;\n left: 1px;\n }\n\n @keyframes spinning {\n from {\n transform: rotate(0);\n }\n\n to {\n transform: rotate(2turn);\n }\n }\n</style>\n"],"names":["_createElementBlock","_normalizeClass","_withKeys","_withModifiers","_renderSlot","_createElementVNode","_withDirectives","_openBlock","_Fragment","_renderList","_toDisplayString","_vShow","_createVNode","_Transition"],"mappings":"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"}