gamutable/js/vue-next-select.js

1565 lines
54 KiB
JavaScript

this.VueNextSelect = (function (vue) {
'use strict';
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _createForOfIteratorHelper(o, allowArrayLike) {
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
if (!it) {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (it) o = it;
var i = 0;
var F = function () {};
return {
s: F,
n: function () {
if (i >= o.length) return {
done: true
};
return {
done: false,
value: o[i++]
};
},
e: function (e) {
throw e;
},
f: F
};
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var normalCompletion = true,
didErr = false,
err;
return {
s: function () {
it = it.call(o);
},
n: function () {
var step = it.next();
normalCompletion = step.done;
return step;
},
e: function (e) {
didErr = true;
err = e;
},
f: function () {
try {
if (!normalCompletion && it.return != null) it.return();
} finally {
if (didErr) throw err;
}
}
};
}
var script$2 = {
inheritAttrs: false,
name: 'vue-input',
props: {
autocomplete: {
required: false,
type: String
},
modelValue: {
required: true,
type: String
},
placeholder: {
required: true,
type: String
},
disabled: {
required: true,
type: Boolean
},
tabindex: {
required: true,
type: Number
},
autofocus: {
required: true,
type: Boolean
},
comboboxUid: {
required: true,
type: Number
}
},
emits: ['update:modelValue', 'input', 'change', 'focus', 'blur', 'escape'],
setup: function setup(props, context) {
var handleInput = function handleInput(event) {
context.emit('input', event);
context.emit('update:modelValue', event.target.value);
};
var handleChange = function handleChange(event) {
context.emit('change', event);
context.emit('update:modelValue', event.target.value);
};
var handleFocus = function handleFocus(event) {
context.emit('focus', event);
};
var handleBlur = function handleBlur(event) {
context.emit('blur', event);
};
var input = vue.ref(null);
var handleEscape = function handleEscape(event) {
input.value.blur();
context.emit('escape', event);
};
vue.onMounted(function () {
if (props.autofocus) input.value.focus();
});
vue.onUpdated(function () {
if (props.autofocus) input.value.focus();
});
return {
handleInput: handleInput,
handleChange: handleChange,
handleFocus: handleFocus,
handleBlur: handleBlur,
input: input,
handleEscape: handleEscape
};
}
};
var _hoisted_1$2 = {
"class": "vue-input"
};
var _hoisted_2$2 = ["autocomplete", "modelValue", "placeholder", "disabled", "tabindex", "autofocus", "aria-controls", "aria-labelledby"];
function render$3(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [vue.renderSlot(_ctx.$slots, "prepend"), vue.createElementVNode("input", {
ref: "input",
autocomplete: $props.autocomplete,
modelValue: $props.modelValue,
placeholder: $props.placeholder,
disabled: $props.disabled,
onInput: _cache[0] || (_cache[0] = function () {
return $setup.handleInput && $setup.handleInput.apply($setup, arguments);
}),
onChange: _cache[1] || (_cache[1] = function () {
return $setup.handleChange && $setup.handleChange.apply($setup, arguments);
}),
onFocus: _cache[2] || (_cache[2] = function () {
return $setup.handleFocus && $setup.handleFocus.apply($setup, arguments);
}),
onBlur: _cache[3] || (_cache[3] = function () {
return $setup.handleBlur && $setup.handleBlur.apply($setup, arguments);
}),
onKeyup: _cache[4] || (_cache[4] = vue.withKeys(vue.withModifiers(function () {
return $setup.handleEscape && $setup.handleEscape.apply($setup, arguments);
}, ["exact"]), ["esc"])),
tabindex: $props.tabindex,
autofocus: $props.autofocus,
"aria-autocomplete": "list",
"aria-controls": "vs".concat($props.comboboxUid, "-listbox"),
"aria-labelledby": "vs".concat($props.comboboxUid, "-combobox")
}, null, 40
/* PROPS, HYDRATE_EVENTS */
, _hoisted_2$2), vue.renderSlot(_ctx.$slots, "append")]);
}
script$2.render = render$3;
script$2.__file = "src/components/input.vue";
var script$1 = {
inheritAttrs: false,
name: 'vue-tags',
props: {
modelValue: {
required: true,
type: Array,
validator: function validator(modelValue) {
return modelValue.every(function (option) {
return _typeof(option.key) !== undefined && option.label !== undefined && typeof option.selected === 'boolean';
});
}
},
collapseTags: {
type: Boolean
}
},
emits: ['click'],
setup: function setup(props, context) {
var dataAttrs = vue.inject('dataAttrs');
var handleClick = function handleClick(event) {
context.emit('click', event);
};
return {
dataAttrs: dataAttrs,
handleClick: handleClick
};
}
};
function render$2(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("ul", vue.mergeProps({
"class": ["vue-tags", {
collapsed: $props.collapseTags
}],
onMousedown: _cache[0] || (_cache[0] = vue.withModifiers(function () {}, ["prevent"])),
tabindex: "-1",
onClick: _cache[1] || (_cache[1] = function () {
return $setup.handleClick && $setup.handleClick.apply($setup, arguments);
})
}, $setup.dataAttrs), [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($props.modelValue, function (option) {
return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
key: option.key
}, [!option.group ? (vue.openBlock(), vue.createElementBlock("li", {
key: 0,
"class": vue.normalizeClass(["vue-tag", {
selected: option.selected
}])
}, [vue.renderSlot(_ctx.$slots, "default", {
option: option
}, function () {
return [vue.createElementVNode("span", null, vue.toDisplayString(option.label), 1
/* TEXT */
)];
})], 2
/* CLASS */
)) : vue.createCommentVNode("v-if", true)], 64
/* STABLE_FRAGMENT */
);
}), 128
/* KEYED_FRAGMENT */
))], 16
/* FULL_PROPS */
);
}
script$1.render = render$2;
script$1.__file = "src/components/tags.vue";
var script = {
inheritAttrs: false,
name: 'vue-dropdown',
props: {
modelValue: {
required: true,
type: Array,
validator: function validator(modelValue) {
return modelValue.every(function (option) {
return _typeof(option.key) !== undefined && option.label !== undefined && typeof option.selected === 'boolean';
});
}
},
comboboxUid: {
required: true,
type: Number
},
maxHeight: {
required: true
},
highlightedOriginalIndex: {
required: true
}
},
emits: ['click-item', 'mouseenter'],
setup: function setup(props, context) {
var dataAttrs = vue.inject('dataAttrs');
var handleClickItem = function handleClickItem(event, option) {
if (option.disabled) return;
context.emit('click-item', event, option);
};
var handleMouseenter = function handleMouseenter(event, option) {
context.emit('mouseenter', event, option);
};
return {
dataAttrs: dataAttrs,
handleClickItem: handleClickItem,
handleMouseenter: handleMouseenter
};
}
};
var _hoisted_1$1 = ["id", "aria-multiselectable", "aria-busy", "aria-disabled"];
var _hoisted_2$1 = ["onClick", "onMouseenter", "id", "aria-selected", "aria-disabled"];
function render$1(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("ul", vue.mergeProps({
"class": "vue-dropdown",
style: {
maxHeight: $props.maxHeight + 'px'
},
onMousedown: _cache[0] || (_cache[0] = vue.withModifiers(function () {}, ["prevent"]))
}, $setup.dataAttrs, {
role: "listbox",
id: "vs".concat($props.comboboxUid, "-listbox"),
"aria-multiselectable": $setup.dataAttrs['data-multiple'],
"aria-busy": $setup.dataAttrs['data-loading'],
"aria-disabled": $setup.dataAttrs['data-disabled']
}), [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($props.modelValue, function (option, index) {
return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
key: option.key
}, [option.visible && option.hidden === false ? (vue.openBlock(), vue.createElementBlock("li", {
key: 0,
onClick: function onClick($event) {
return $setup.handleClickItem($event, option);
},
"class": vue.normalizeClass(["vue-dropdown-item", {
selected: option.selected,
disabled: option.disabled,
highlighted: option.originalIndex === $props.highlightedOriginalIndex,
group: option.group
}]),
onMouseenter: function onMouseenter($event) {
return $setup.handleMouseenter($event, option);
},
role: "option",
id: "vs".concat($props.comboboxUid, "-option-").concat(index),
"aria-selected": option.selected ? true : option.disabled ? undefined : false,
"aria-disabled": option.disabled
}, [vue.renderSlot(_ctx.$slots, "default", {
option: option
}, function () {
return [vue.createElementVNode("span", null, vue.toDisplayString(option.label), 1
/* TEXT */
)];
})], 42
/* CLASS, PROPS, HYDRATE_EVENTS */
, _hoisted_2$1)) : vue.createCommentVNode("v-if", true)], 64
/* STABLE_FRAGMENT */
);
}), 128
/* KEYED_FRAGMENT */
))], 16
/* FULL_PROPS */
, _hoisted_1$1);
}
script.render = render$1;
script.__file = "src/components/dropdown.vue";
var isSameOption = function isSameOption(option1, option2, _ref) {
var valueBy = _ref.valueBy;
return valueBy(option1) === valueBy(option2);
};
var hasOption = function hasOption(options, option, _ref2) {
var valueBy = _ref2.valueBy;
return options.some(function (_option) {
return isSameOption(_option, option, {
valueBy: valueBy
});
});
};
var getOptionByValue = function getOptionByValue(options, value, _ref3) {
var valueBy = _ref3.valueBy;
return options.find(function (option) {
return valueBy(option) === value;
});
};
var addOption = function addOption(selectedOptions, option, _ref4) {
var max = _ref4.max,
valueBy = _ref4.valueBy;
if (hasOption(selectedOptions, option, {
valueBy: valueBy
})) return selectedOptions;
if (selectedOptions.length >= max) return selectedOptions;
return selectedOptions.concat(option);
};
var removeOption = function removeOption(selectedOptions, option, _ref5) {
var min = _ref5.min,
valueBy = _ref5.valueBy;
if (hasOption(selectedOptions, option, {
valueBy: valueBy
}) === false) return selectedOptions;
if (selectedOptions.length <= min) return selectedOptions;
return selectedOptions.filter(function (_option) {
return isSameOption(_option, option, {
valueBy: valueBy
}) === false;
});
};
var createComputedForGetterFunction = function createComputedForGetterFunction(maybePathFunc) {
return vue.computed(function () {
return typeof maybePathFunc.value === 'function' ? maybePathFunc.value : typeof maybePathFunc.value === 'string' ? function (option) {
return maybePathFunc.value.split('.').reduce(function (value, key) {
return value[key];
}, option);
} : function (option) {
return option;
};
});
};
var normalize = (function (props) {
var normalized = vue.reactive({});
var labelBy = createComputedForGetterFunction(vue.toRef(props, 'labelBy'));
vue.watchEffect(function () {
return normalized.labelBy = labelBy.value;
});
var valueBy = createComputedForGetterFunction(vue.toRef(props, 'valueBy'));
vue.watchEffect(function () {
return normalized.valueBy = valueBy.value;
});
var disabledBy = createComputedForGetterFunction(vue.toRef(props, 'disabledBy'));
vue.watchEffect(function () {
return normalized.disabledBy = disabledBy.value;
});
var groupBy = createComputedForGetterFunction(vue.toRef(props, 'groupBy'));
vue.watchEffect(function () {
return normalized.groupBy = groupBy.value;
});
var min = vue.computed(function () {
return props.multiple ? props.min : Math.min(1, props.min);
});
vue.watchEffect(function () {
return normalized.min = min.value;
});
var max = vue.computed(function () {
return props.multiple ? props.max : 1;
});
vue.watchEffect(function () {
return normalized.max = max.value;
});
vue.watchEffect(function () {
return normalized.options = props.options;
});
return normalized;
});
var usePointer = function usePointer(options, highlightedOriginalIndex) {
var pointerForward = function pointerForward() {
if (isSomeSelectable.value === false) return;
if (highlightedOriginalIndex.value === null) return;
var tempOriginalIndex = highlightedOriginalIndex.value + 1;
var safeCount = 0;
while (tempOriginalIndex !== highlightedOriginalIndex.value && safeCount++ < options.value.length) {
if (options.value.length <= tempOriginalIndex) tempOriginalIndex = 0;
if (pointerSet(tempOriginalIndex)) break;
++tempOriginalIndex;
}
};
var pointerBackward = function pointerBackward() {
if (isSomeSelectable.value === false) return;
if (highlightedOriginalIndex.value === null) return;
var tempOriginalIndex = highlightedOriginalIndex.value - 1;
var safeCount = 0;
while (tempOriginalIndex !== highlightedOriginalIndex.value && safeCount++ < options.value.length) {
if (tempOriginalIndex < 0) tempOriginalIndex = options.value.length - 1;
if (pointerSet(tempOriginalIndex)) break;
--tempOriginalIndex;
}
};
var originalIndexToOption = vue.computed(function () {
return options.value.reduce(function (acc, option) {
return Object.assign(acc, _defineProperty({}, option.originalIndex, option));
}, {});
});
var pointerSet = function pointerSet(originalIndex) {
var option = originalIndexToOption.value[originalIndex];
if (option === undefined) return false;
if (isSelectable(option) === false) return false;
highlightedOriginalIndex.value = originalIndex;
return true;
};
var isSelectable = function isSelectable(option) {
return !option.disabled && !option.hidden && option.visible;
};
var isSomeSelectable = vue.computed(function () {
return options.value.some(function (option) {
return isSelectable(option);
});
});
vue.watchEffect(function () {
if (isSomeSelectable.value === false) highlightedOriginalIndex.value = null;
if (highlightedOriginalIndex.value !== null && options.value.length <= highlightedOriginalIndex.value) {
var _iterator = _createForOfIteratorHelper(options.value.reverse()),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var option = _step.value;
if (pointerSet(option.originalIndex)) break;
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
if (highlightedOriginalIndex.value === null || isSelectable(options.value[highlightedOriginalIndex.value]) === false) {
var _iterator2 = _createForOfIteratorHelper(options.value),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var _option = _step2.value;
if (pointerSet(_option.originalIndex)) break;
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
}
});
return {
pointerForward: pointerForward,
pointerBackward: pointerBackward,
pointerSet: pointerSet
};
};
var version = "2.10.4";
function escapeRegExp(pattern) {
// $& means the whole matched string
return pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
var VueSelect = vue.defineComponent({
name: 'vue-select',
inheritAttrs: false,
props: {
// modelValue
modelValue: {
required: true
},
// TODO: default to `undefined` in next major version
// https://github.com/vuejs/vue-next/issues/3744
emptyModelValue: {},
// options
options: {
required: true,
type: Array
},
// TODO: default to `'label'` in next major version
labelBy: {
type: [String, Function]
},
// TODO: default to `'value'` in next major version
valueBy: {
type: [String, Function]
},
disabledBy: {
"default": 'disabled',
type: [String, Function]
},
groupBy: {
"default": 'group',
type: [String, Function]
},
// TODO: default to `undefined` in next major version
visibleOptions: {
type: Array,
"default": null
},
// multiple
multiple: {
"default": false,
type: Boolean
},
min: {
"default": 0,
type: Number
},
max: {
"default": Infinity,
type: Number
},
// search
searchable: {
"default": false,
type: Boolean
},
searchPlaceholder: {
"default": 'Type to search',
type: String
},
clearOnSelect: {
"default": false,
type: Boolean
},
clearOnClose: {
"default": false,
type: Boolean
},
// tag
taggable: {
"default": false,
type: Boolean
},
collapseTags: {
"default": false,
type: Boolean
},
// misc
autocomplete: {
"default": 'off',
type: String
},
disabled: {
"default": false,
type: Boolean
},
loading: {
"default": false,
type: Boolean
},
closeOnSelect: {
"default": false,
type: Boolean
},
hideSelected: {
"default": false,
type: Boolean
},
placeholder: {
"default": 'Select option',
type: String
},
tabindex: {
"default": 0,
type: Number
},
autofocus: {
"default": false,
type: Boolean
},
maxHeight: {
"default": 300,
type: Number
},
openDirection: {
type: String,
validator: function validator(value) {
return ['top', 'bottom'].includes(value);
}
}
},
emits: ['selected', 'removed', 'update:modelValue', 'focus', 'blur', 'toggle', // TODO: remove use `opened` in next major version
'opened', // TODO: remove use `opened` in next major version
'closed', 'search:input', 'search:change', 'search:focus', 'search:blur'],
setup: function setup(props, context) {
var normalized = normalize(props);
var normalizedEmptyModelValue = vue.computed(function () {
var _a;
return (_a = props.emptyModelValue) !== null && _a !== void 0 ? _a : null;
});
var instance = vue.getCurrentInstance();
var wrapper = vue.ref();
var dropdown = vue.ref();
var input = vue.ref();
var inputEl = vue.computed(function () {
var _a;
return (_a = input.value) === null || _a === void 0 ? void 0 : _a._.refs.input;
});
var isFocusing = vue.ref(false);
vue.watch(function () {
return isFocusing.value;
}, function () {
var _a, _b;
if (isFocusing.value) {
context.emit('opened');
context.emit('focus');
if (props.searchable) {
if (inputEl.value !== document.activeElement) {
inputEl.value.focus();
}
context.emit('search:focus');
} else {
(_a = wrapper.value) === null || _a === void 0 ? void 0 : _a.focus();
}
} else {
if (props.searchable) {
if (inputEl.value === document.activeElement) {
inputEl.value.blur();
}
if (props.clearOnClose) clearInput();
context.emit('search:blur');
} else {
(_b = wrapper.value) === null || _b === void 0 ? void 0 : _b.blur();
}
context.emit('closed');
context.emit('blur');
}
context.emit('toggle');
});
var focus = function focus() {
if (props.disabled) return;
isFocusing.value = true;
};
var blur = function blur(e) {
var _a;
if ((_a = wrapper.value) === null || _a === void 0 ? void 0 : _a.contains(e === null || e === void 0 ? void 0 : e.relatedTarget)) {
setTimeout(function () {
var _a;
(_a = wrapper.value) === null || _a === void 0 ? void 0 : _a.focus();
});
return;
}
isFocusing.value = false;
};
var toggle = function toggle() {
if (isFocusing.value) blur();else focus();
};
vue.watch(function () {
return props.disabled;
}, function () {
return blur();
}); // input
var searchingInputValue = vue.ref('');
var handleInputForInput = function handleInputForInput(event) {
context.emit('search:input', event);
};
var handleChangeForInput = function handleChangeForInput(event) {
context.emit('search:change', event);
};
var handleFocusForInput = function handleFocusForInput(event) {
focus();
};
var handleBlurForInput = function handleBlurForInput(event) {
blur();
};
var searchRe = vue.computed(function () {
return new RegExp(escapeRegExp(searchingInputValue.value), 'i');
});
var searchedOptions = vue.computed(function () {
return searchingInputValue.value ? normalized.options.filter(function (option) {
return searchRe.value.test(normalized.labelBy(option));
}) : undefined;
}); // sync model value
var normalizedModelValue = vue.ref([]);
var selectedValueSet = vue.computed(function () {
return new Set(normalizedModelValue.value.map(function (option) {
return normalized.valueBy(option);
}));
});
var isSynchronoused = function isSynchronoused() {
if (props.multiple) {
if (Array.isArray(props.modelValue) === false) return false;
if (normalizedModelValue.value.length !== props.modelValue.length) return false;
if (Object.keys(normalizedModelValue.value).some(function (index) {
return normalizedModelValue.value[index] !== getOptionByValue(normalized.options, props.modelValue[index], {
valueBy: normalized.valueBy
});
})) return false;
} else {
if (normalizedModelValue.value.length === 0 && props.modelValue !== normalizedEmptyModelValue.value) return false;
if (normalizedModelValue.value.length === 1 && props.modelValue === normalizedEmptyModelValue.value) return false;
if (normalizedModelValue.value[0] !== getOptionByValue(normalized.options, props.modelValue, {
valueBy: normalized.valueBy
})) return false;
}
return true;
};
var syncFromModelValue = function syncFromModelValue() {
if (isSynchronoused()) return;
normalizedModelValue.value = [];
var modelValue = props.multiple ? props.modelValue : props.modelValue === normalizedEmptyModelValue.value ? [] : [props.modelValue];
var _iterator = _createForOfIteratorHelper(modelValue),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var value = _step.value;
var option = getOptionByValue(normalized.options, value, {
valueBy: normalized.valueBy
}); // guarantee options has modelValue
if (hasOption(normalized.options, option, {
valueBy: normalized.valueBy
}) === false) continue;
normalizedModelValue.value = addOption(normalizedModelValue.value, option, {
max: Infinity,
valueBy: normalized.valueBy
});
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
};
syncFromModelValue();
vue.watch(function () {
return props.modelValue;
}, function () {
return syncFromModelValue();
}, {
deep: true
}); // guarantee options has modelValue
vue.watch(function () {
return normalized.options;
}, function () {
normalizedModelValue.value = normalized.options.filter(function (option) {
return selectedValueSet.value.has(normalized.valueBy(option));
});
}, {
deep: true
});
var addOrRemoveOption = function addOrRemoveOption(event, option) {
if (props.disabled) return; // TODO: hot spot, improve performance
if (option.group && props.multiple) addOrRemoveOptionForGroupOption(event, option);else addOrRemoveOptionForNonGroupOption(event, option);
syncToModelValue();
if (props.closeOnSelect === true) isFocusing.value = false;
if (props.clearOnSelect === true && searchingInputValue.value) clearInput();
};
var addOrRemoveOptionForGroupOption = function addOrRemoveOptionForGroupOption(event, option) {
option = option.originalOption;
var has = option.value.every(function (value) {
var option = getOptionByValue(normalized.options, value, {
valueBy: normalized.valueBy
});
return hasOption(normalizedModelValue.value, option, {
valueBy: normalized.valueBy
});
});
if (has) {
option.value.forEach(function (value) {
var option = getOptionByValue(normalized.options, value, {
valueBy: normalized.valueBy
});
normalizedModelValue.value = removeOption(normalizedModelValue.value, option, {
min: normalized.min,
valueBy: normalized.valueBy
});
context.emit('removed', option);
});
} else {
option.value.forEach(function (value) {
var option = getOptionByValue(normalized.options, value, {
valueBy: normalized.valueBy
});
if (hasOption(normalizedModelValue.value, option, {
valueBy: normalized.valueBy
})) return;
normalizedModelValue.value = addOption(normalizedModelValue.value, option, {
max: normalized.max,
valueBy: normalized.valueBy
});
context.emit('selected', option);
});
}
};
var addOrRemoveOptionForNonGroupOption = function addOrRemoveOptionForNonGroupOption(event, option) {
option = option.originalOption;
if (hasOption(normalizedModelValue.value, option, {
valueBy: normalized.valueBy
})) {
normalizedModelValue.value = removeOption(normalizedModelValue.value, option, {
min: normalized.min,
valueBy: normalized.valueBy
});
context.emit('removed', option);
} else {
if (!props.multiple && normalizedModelValue.value.length === 1) {
var removingOption = normalizedModelValue.value[0];
normalizedModelValue.value = removeOption(normalizedModelValue.value, normalizedModelValue.value[0], {
min: 0,
valueBy: normalized.valueBy
});
context.emit('removed', removingOption);
}
normalizedModelValue.value = addOption(normalizedModelValue.value, option, {
max: normalized.max,
valueBy: normalized.valueBy
});
context.emit('selected', option);
}
};
var syncToModelValue = function syncToModelValue() {
if (isSynchronoused()) return;
var selectedValues = normalizedModelValue.value.map(function (option) {
return normalized.valueBy(option);
});
if (props.multiple) {
context.emit('update:modelValue', selectedValues);
} else {
if (selectedValues.length) context.emit('update:modelValue', selectedValues[0]);else context.emit('update:modelValue', normalizedEmptyModelValue.value);
}
};
var clearInput = function clearInput() {
// simulate clear input value
inputEl.value.value = '';
inputEl.value.dispatchEvent(new Event('input'));
inputEl.value.dispatchEvent(new Event('change'));
};
var renderedOptions = vue.computed(function () {
var _a, _b;
return (_b = (_a = props.visibleOptions) !== null && _a !== void 0 ? _a : searchedOptions.value) !== null && _b !== void 0 ? _b : normalized.options;
});
var highlightedOriginalIndex = vue.ref(0);
var optionsWithInfo = vue.computed(function () {
var visibleValueSet = new Set(renderedOptions.value.map(function (option) {
return normalized.valueBy(option);
}));
var optionsWithInfo = normalized.options.map(function (option, index) {
var _a;
var optionWithInfo = {
key: normalized.valueBy(option),
label: normalized.labelBy(option),
// selected: selectedValueSet.value.has(normalized.valueBy(option)),
// disabled: normalized.disabledBy(option),
group: (_a = normalized.groupBy(option)) !== null && _a !== void 0 ? _a : false,
// visible: visibleValueSet.has(normalized.valueBy(option)),
// hidden: props.hideSelected ? selectedValueSet.value.has(normalized.valueBy(option)) : false,
originalIndex: index,
originalOption: option
};
optionWithInfo.selected = optionWithInfo.group ? option.value.every(function (value) {
return selectedValueSet.value.has(value);
}) : selectedValueSet.value.has(normalized.valueBy(option));
optionWithInfo.disabled = optionWithInfo.group ? normalized.disabledBy(option) || option.value.every(function (value) {
var option = getOptionByValue(normalized.options, value, {
valueBy: normalized.valueBy
});
return normalized.disabledBy(option);
}) : normalized.disabledBy(option);
optionWithInfo.visible = optionWithInfo.group ? option.value.some(function (value) {
return visibleValueSet.has(value);
}) : visibleValueSet.has(normalized.valueBy(option));
optionWithInfo.hidden = props.hideSelected ? optionWithInfo.group ? option.value.every(function (value) {
return selectedValueSet.value.has(value);
}) : selectedValueSet.value.has(normalized.valueBy(option)) : false;
return optionWithInfo;
});
var _iterator2 = _createForOfIteratorHelper(optionsWithInfo),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var option = _step2.value;
if (option.group === false) continue;
if (option.disabled) {
(function () {
var values = new Set(option.originalOption.value);
optionsWithInfo.filter(function (optionWithInfo) {
return values.has(normalized.valueBy(optionWithInfo.originalOption));
}).forEach(function (optionWithInfo) {
return optionWithInfo.disabled = true;
});
})();
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
return optionsWithInfo;
});
var _usePointer = usePointer(optionsWithInfo, highlightedOriginalIndex),
_pointerForward = _usePointer.pointerForward,
_pointerBackward = _usePointer.pointerBackward,
pointerSet = _usePointer.pointerSet;
var pointerForward = function pointerForward() {
_pointerForward();
vue.nextTick(updateScrollTop);
};
var pointerBackward = function pointerBackward() {
_pointerBackward();
vue.nextTick(updateScrollTop);
};
var pointerFirst = function pointerFirst() {
var _iterator3 = _createForOfIteratorHelper(normalized.options.keys()),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
var index = _step3.value;
if (pointerSet(index)) break;
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
vue.nextTick(updateScrollTop);
};
var pointerLast = function pointerLast() {
var _iterator4 = _createForOfIteratorHelper(_toConsumableArray(normalized.options.keys()).reverse()),
_step4;
try {
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
var index = _step4.value;
if (pointerSet(index)) break;
}
} catch (err) {
_iterator4.e(err);
} finally {
_iterator4.f();
}
vue.nextTick(updateScrollTop);
};
var recentTypedChars = '';
var timerForClearingRecentTypedChars;
var alphanumRe = /^[\w]$/;
var sortedOriginalIndexBaseOnHighlighted = vue.computed(function () {
var indexes = _toConsumableArray(normalized.options.keys());
return indexes.slice(highlightedOriginalIndex.value).concat(indexes.slice(0, highlightedOriginalIndex.value));
});
var typeAhead = function typeAhead(event) {
var _a, _b;
if (props.searchable) return;
var changed = false;
if (alphanumRe.test(event.key)) {
recentTypedChars += event.key.toLowerCase();
changed = true;
} else if (event.code === 'Space') {
recentTypedChars += ' ';
}
if (changed) {
var _iterator5 = _createForOfIteratorHelper(sortedOriginalIndexBaseOnHighlighted.value),
_step5;
try {
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
var index = _step5.value;
if (((_b = (_a = normalized.labelBy(normalized.options[index])) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.startsWith(recentTypedChars)) !== true) continue;
if (pointerSet(index)) break;
}
} catch (err) {
_iterator5.e(err);
} finally {
_iterator5.f();
}
clearTimeout(timerForClearingRecentTypedChars);
timerForClearingRecentTypedChars = setTimeout(function () {
recentTypedChars = '';
}, 500);
}
};
var updateScrollTop = function updateScrollTop() {
var _a;
var highlightedEl = (_a = wrapper.value) === null || _a === void 0 ? void 0 : _a.querySelector('.highlighted');
if (!highlightedEl) return;
if (!dropdown.value) return;
var computedStyle = getComputedStyle(highlightedEl);
var safeCount;
safeCount = 0;
while (highlightedEl.offsetTop + parseFloat(computedStyle.height) + parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom) > dropdown.value.$el.clientHeight + dropdown.value.$el.scrollTop && safeCount++ < optionsWithInfo.value.length) {
dropdown.value.$el.scrollTop = dropdown.value.$el.scrollTop + parseFloat(computedStyle.height) + parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);
}
safeCount = 0;
while (highlightedEl.offsetTop < dropdown.value.$el.scrollTop && safeCount++ < optionsWithInfo.value.length) {
dropdown.value.$el.scrollTop = dropdown.value.$el.scrollTop - parseFloat(computedStyle.height) - parseFloat(computedStyle.paddingTop) - parseFloat(computedStyle.paddingBottom);
}
};
vue.watch(function () {
return [isFocusing.value, normalized.options, selectedValueSet.value];
}, function (_, oldValue) {
if ((oldValue === null || oldValue === void 0 ? void 0 : oldValue[0]) === true) return;
if (isFocusing.value === false) return;
if (normalizedModelValue.value.length === 0) return;
pointerSet(normalized.options.findIndex(function (option) {
return selectedValueSet.value.has(normalized.valueBy(option));
}));
vue.nextTick(updateScrollTop);
}, {
deep: true,
immediate: true
});
var dataAttrs = vue.computed(function () {
return {
'data-is-focusing': isFocusing.value,
'data-visible-length': optionsWithInfo.value.filter(function (option) {
return option.visible && option.hidden === false;
}).length,
'data-not-selected-length': normalized.options.length - optionsWithInfo.value.filter(function (option) {
return option.selected;
}).length,
'data-selected-length': optionsWithInfo.value.filter(function (option) {
return option.selected;
}).length,
'data-addable': optionsWithInfo.value.filter(function (option) {
return option.selected;
}).length < normalized.max,
'data-removable': optionsWithInfo.value.filter(function (option) {
return option.selected;
}).length > normalized.min,
'data-total-length': normalized.options.length,
'data-multiple': props.multiple,
'data-loading': props.loading,
'data-disabled': props.disabled
};
});
vue.provide('dataAttrs', dataAttrs);
var selectedOptions = vue.computed(function () {
return optionsWithInfo.value.filter(function (option) {
return option.selected;
}).filter(function (option) {
return !option.group;
});
});
var innerPlaceholder = vue.computed(function () {
if (props.multiple) {
if (selectedOptions.value.length === 0) {
return props.placeholder;
} else if (selectedOptions.value.length === 1) {
return '1 option selected';
} else {
return selectedOptions.value.length + ' options selected';
}
} else {
if (selectedOptions.value.length === 0) {
return props.placeholder;
} else {
return selectedOptions.value[0].label + '';
}
}
});
var selected = vue.computed(function () {
var selected = selectedOptions.value.map(function (option) {
return option.originalOption;
});
if (props.multiple) return selected;
return selected[0] || normalizedEmptyModelValue.value;
});
var direction = vue.ref();
vue.watch(function () {
return [props.openDirection, isFocusing.value];
}, function () {
var _a, _b;
direction.value = (_b = (_a = props.openDirection) !== null && _a !== void 0 ? _a : calcPreferredDirection()) !== null && _b !== void 0 ? _b : 'bottom';
}, {
immediate: true
});
function calcPreferredDirection() {
if (wrapper.value === undefined) return;
if (window === undefined) return;
var spaceBelow = window.innerHeight - wrapper.value.getBoundingClientRect().bottom;
var hasEnoughSpaceBelow = spaceBelow >= props.maxHeight;
return hasEnoughSpaceBelow ? 'bottom' : 'top';
}
return {
instance: instance,
isFocusing: isFocusing,
wrapper: wrapper,
dropdown: dropdown,
input: input,
focus: focus,
blur: blur,
toggle: toggle,
searchingInputValue: searchingInputValue,
handleInputForInput: handleInputForInput,
handleChangeForInput: handleChangeForInput,
handleFocusForInput: handleFocusForInput,
handleBlurForInput: handleBlurForInput,
optionsWithInfo: optionsWithInfo,
addOrRemoveOption: addOrRemoveOption,
dataAttrs: dataAttrs,
innerPlaceholder: innerPlaceholder,
selected: selected,
highlightedOriginalIndex: highlightedOriginalIndex,
pointerForward: pointerForward,
pointerBackward: pointerBackward,
pointerFirst: pointerFirst,
pointerLast: pointerLast,
typeAhead: typeAhead,
pointerSet: pointerSet,
direction: direction
};
},
components: {
VInput: script$2,
VTags: script$1,
VDropdown: script
}
});
VueSelect.__VERSION__ = version;
var _imports_0 = 'data:image/svg+xml;base64,PHN2ZyBpZD0iZGVsZXRlIiBkYXRhLW5hbWU9ImRlbGV0ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHRpdGxlPmRlbGV0ZTwvdGl0bGU+PHBhdGggZD0iTTI1NiwyNEMzODMuOSwyNCw0ODgsMTI4LjEsNDg4LDI1NlMzODMuOSw0ODgsMjU2LDQ4OCwyNC4wNiwzODMuOSwyNC4wNiwyNTYsMTI4LjEsMjQsMjU2LDI0Wk0wLDI1NkMwLDM5Ny4xNiwxMTQuODQsNTEyLDI1Niw1MTJTNTEyLDM5Ny4xNiw1MTIsMjU2LDM5Ny4xNiwwLDI1NiwwLDAsMTE0Ljg0LDAsMjU2WiIgZmlsbD0iIzViNWI1ZiIvPjxwb2x5Z29uIHBvaW50cz0iMzgyIDE3Mi43MiAzMzkuMjkgMTMwLjAxIDI1NiAyMTMuMjkgMTcyLjcyIDEzMC4wMSAxMzAuMDEgMTcyLjcyIDIxMy4yOSAyNTYgMTMwLjAxIDMzOS4yOCAxNzIuNzIgMzgyIDI1NiAyOTguNzEgMzM5LjI5IDM4MS45OSAzODIgMzM5LjI4IDI5OC43MSAyNTYgMzgyIDE3Mi43MiIgZmlsbD0iIzViNWI1ZiIvPjwvc3ZnPg==';
var _hoisted_1 = ["tabindex", "id", "role", "aria-expanded", "aria-owns", "aria-activedescendant", "aria-busy", "aria-disabled"];
var _hoisted_2 = {
"class": "vue-select-header"
};
var _hoisted_3 = {
key: 0,
"class": "vue-input"
};
var _hoisted_4 = ["placeholder", "autocomplete"];
var _hoisted_5 = ["onClick"];
var _hoisted_6 = /*#__PURE__*/vue.createElementVNode("span", {
"class": "icon loading"
}, [/*#__PURE__*/vue.createElementVNode("div"), /*#__PURE__*/vue.createElementVNode("div"), /*#__PURE__*/vue.createElementVNode("div")], -1
/* HOISTED */
);
var _hoisted_7 = {
key: 0,
"class": "vue-select-input-wrapper"
};
var _hoisted_8 = /*#__PURE__*/vue.createElementVNode("span", {
"class": "icon loading"
}, [/*#__PURE__*/vue.createElementVNode("div"), /*#__PURE__*/vue.createElementVNode("div"), /*#__PURE__*/vue.createElementVNode("div")], -1
/* HOISTED */
);
function render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_v_tags = vue.resolveComponent("v-tags");
var _component_v_input = vue.resolveComponent("v-input");
var _component_v_dropdown = vue.resolveComponent("v-dropdown");
return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
ref: "wrapper",
"class": ["vue-select", ["direction-".concat(_ctx.direction)]],
tabindex: _ctx.isFocusing ? -1 : _ctx.tabindex,
onFocus: _cache[9] || (_cache[9] = function () {
return _ctx.focus && _ctx.focus.apply(_ctx, arguments);
}),
onBlur: _cache[10] || (_cache[10] = function (e) {
return _ctx.searchable ? false : _ctx.blur(e);
})
}, Object.assign({}, _ctx.dataAttrs, _ctx.$attrs), {
onKeypress: _cache[11] || (_cache[11] = vue.withKeys(vue.withModifiers(function () {
return _ctx.highlightedOriginalIndex !== null && _ctx.addOrRemoveOption(_ctx.$event, _ctx.optionsWithInfo[_ctx.highlightedOriginalIndex]);
}, ["prevent", "exact"]), ["enter"])),
onKeydown: [_cache[12] || (_cache[12] = vue.withKeys(vue.withModifiers(function () {
return _ctx.pointerForward && _ctx.pointerForward.apply(_ctx, arguments);
}, ["prevent", "exact"]), ["down"])), _cache[13] || (_cache[13] = vue.withKeys(vue.withModifiers(function () {
return _ctx.pointerBackward && _ctx.pointerBackward.apply(_ctx, arguments);
}, ["prevent", "exact"]), ["up"])), _cache[14] || (_cache[14] = vue.withKeys(vue.withModifiers(function () {
return _ctx.pointerFirst && _ctx.pointerFirst.apply(_ctx, arguments);
}, ["prevent", "exact"]), ["home"])), _cache[15] || (_cache[15] = vue.withKeys(vue.withModifiers(function () {
return _ctx.pointerLast && _ctx.pointerLast.apply(_ctx, arguments);
}, ["prevent", "exact"]), ["end"])), _cache[16] || (_cache[16] = function () {
return _ctx.typeAhead && _ctx.typeAhead.apply(_ctx, arguments);
})],
id: "vs".concat(_ctx.instance.uid, "-combobox"),
role: _ctx.searchable ? 'combobox' : null,
"aria-expanded": _ctx.isFocusing,
"aria-haspopup": "listbox",
"aria-owns": "vs".concat(_ctx.instance.uid, "-listbox"),
"aria-activedescendant": _ctx.highlightedOriginalIndex === null ? null : "vs".concat(_ctx.instance.uid, "-option-").concat(_ctx.highlightedOriginalIndex),
"aria-busy": _ctx.loading,
"aria-disabled": _ctx.disabled
}), [vue.createElementVNode("div", _hoisted_2, [_ctx.multiple && _ctx.taggable && _ctx.modelValue.length === 0 || _ctx.searchable === false && _ctx.taggable === false ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [vue.renderSlot(_ctx.$slots, "label", {
selected: _ctx.selected
}, function () {
return [vue.createElementVNode("input", {
placeholder: _ctx.innerPlaceholder,
autocomplete: _ctx.autocomplete,
readonly: "",
onClick: _cache[0] || (_cache[0] = function () {
return _ctx.focus && _ctx.focus.apply(_ctx, arguments);
})
}, null, 8
/* PROPS */
, _hoisted_4)];
})])) : vue.createCommentVNode("v-if", true), _ctx.multiple && _ctx.taggable ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
key: 1
}, [vue.createVNode(_component_v_tags, {
modelValue: _ctx.optionsWithInfo,
"collapse-tags": _ctx.collapseTags,
tabindex: "-1",
onClick: _ctx.focus
}, {
"default": vue.withCtx(function (_ref) {
var option = _ref.option;
return [vue.renderSlot(_ctx.$slots, "tag", {
option: option.originalOption,
remove: function remove() {
return _ctx.addOrRemoveOption(_ctx.$event, option);
}
}, function () {
return [vue.createElementVNode("span", null, vue.toDisplayString(option.label), 1
/* TEXT */
), vue.createElementVNode("img", {
src: _imports_0,
alt: "delete tag",
"class": "icon delete",
onClick: vue.withModifiers(function () {
return _ctx.addOrRemoveOption(_ctx.$event, option);
}, ["prevent", "stop"])
}, null, 8
/* PROPS */
, _hoisted_5)];
})];
}),
_: 3
/* FORWARDED */
}, 8
/* PROPS */
, ["modelValue", "collapse-tags", "onClick"]), vue.renderSlot(_ctx.$slots, "toggle", {
isFocusing: _ctx.isFocusing,
toggle: _ctx.toggle
}, function () {
return [vue.createElementVNode("span", {
"class": vue.normalizeClass(["icon arrow-downward", {
active: _ctx.isFocusing
}]),
onClick: _cache[1] || (_cache[1] = function () {
return _ctx.toggle && _ctx.toggle.apply(_ctx, arguments);
}),
onMousedown: _cache[2] || (_cache[2] = vue.withModifiers(function () {}, ["prevent", "stop"]))
}, null, 34
/* CLASS, HYDRATE_EVENTS */
)];
})], 64
/* STABLE_FRAGMENT */
)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
key: 2
}, [_ctx.searchable ? (vue.openBlock(), vue.createBlock(_component_v_input, {
key: 0,
ref: "input",
modelValue: _ctx.searchingInputValue,
"onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
return _ctx.searchingInputValue = $event;
}),
disabled: _ctx.disabled,
autocomplete: _ctx.autocomplete,
placeholder: _ctx.isFocusing ? _ctx.searchPlaceholder : _ctx.innerPlaceholder,
onInput: _ctx.handleInputForInput,
onChange: _ctx.handleChangeForInput,
onFocus: _ctx.handleFocusForInput,
onBlur: _ctx.handleBlurForInput,
onEscape: _ctx.blur,
autofocus: _ctx.autofocus || _ctx.taggable && _ctx.searchable,
tabindex: _ctx.tabindex,
comboboxUid: _ctx.instance.uid
}, null, 8
/* PROPS */
, ["modelValue", "disabled", "autocomplete", "placeholder", "onInput", "onChange", "onFocus", "onBlur", "onEscape", "autofocus", "tabindex", "comboboxUid"])) : vue.createCommentVNode("v-if", true), _ctx.loading ? vue.renderSlot(_ctx.$slots, "loading", {
key: 1
}, function () {
return [_hoisted_6];
}) : vue.renderSlot(_ctx.$slots, "toggle", {
key: 2,
isFocusing: _ctx.isFocusing,
toggle: _ctx.toggle
}, function () {
return [vue.createElementVNode("span", {
"class": vue.normalizeClass(["icon arrow-downward", {
active: _ctx.isFocusing
}]),
onClick: _cache[4] || (_cache[4] = function () {
return _ctx.toggle && _ctx.toggle.apply(_ctx, arguments);
}),
onMousedown: _cache[5] || (_cache[5] = vue.withModifiers(function () {}, ["prevent", "stop"]))
}, null, 34
/* CLASS, HYDRATE_EVENTS */
)];
})], 64
/* STABLE_FRAGMENT */
))]), _ctx.multiple && _ctx.taggable && _ctx.searchable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [vue.withDirectives(vue.createVNode(_component_v_input, {
ref: "input",
modelValue: _ctx.searchingInputValue,
"onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
return _ctx.searchingInputValue = $event;
}),
disabled: _ctx.disabled,
autocomplete: _ctx.autocomplete,
placeholder: _ctx.isFocusing ? _ctx.searchPlaceholder : _ctx.innerPlaceholder,
onInput: _ctx.handleInputForInput,
onChange: _ctx.handleChangeForInput,
onFocus: _ctx.handleFocusForInput,
onBlur: _ctx.handleBlurForInput,
onEscape: _ctx.blur,
autofocus: _ctx.autofocus || _ctx.taggable && _ctx.searchable,
tabindex: _ctx.tabindex,
comboboxUid: _ctx.instance.uid
}, null, 8
/* PROPS */
, ["modelValue", "disabled", "autocomplete", "placeholder", "onInput", "onChange", "onFocus", "onBlur", "onEscape", "autofocus", "tabindex", "comboboxUid"]), [[vue.vShow, _ctx.isFocusing]]), _ctx.loading ? vue.renderSlot(_ctx.$slots, "loading", {
key: 0
}, function () {
return [_hoisted_8];
}) : vue.createCommentVNode("v-if", true)])) : vue.createCommentVNode("v-if", true), vue.createVNode(_component_v_dropdown, {
ref: "dropdown",
modelValue: _ctx.optionsWithInfo,
"onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
return _ctx.optionsWithInfo = $event;
}),
onClickItem: _ctx.addOrRemoveOption,
onMouseenter: _cache[8] || (_cache[8] = function (ev, option) {
return _ctx.pointerSet(option.originalIndex);
}),
comboboxUid: _ctx.instance.uid,
maxHeight: _ctx.maxHeight,
highlightedOriginalIndex: _ctx.highlightedOriginalIndex
}, {
"default": vue.withCtx(function (_ref2) {
var option = _ref2.option;
return [vue.renderSlot(_ctx.$slots, "dropdown-item", {
option: option.originalOption
}, function () {
return [vue.createElementVNode("span", null, vue.toDisplayString(option.label), 1
/* TEXT */
)];
})];
}),
_: 3
/* FORWARDED */
}, 8
/* PROPS */
, ["modelValue", "onClickItem", "comboboxUid", "maxHeight", "highlightedOriginalIndex"])], 16
/* FULL_PROPS */
, _hoisted_1);
}
VueSelect.render = render;
VueSelect.__file = "src/index.vue";
return VueSelect;
})(Vue);