1 line
115 KiB
Plaintext
1 line
115 KiB
Plaintext
{"version":3,"file":"index.mjs","sources":["../../src/listbox/BaseListbox.vue","../../src/listbox/Listbox.vue","../../src/listbox/Listbox.vue?vue&type=template&id=f01e6df0&lang.js"],"sourcesContent":["<script>\nimport BaseEditableHolder from '@primevue/core/baseeditableholder';\nimport ListboxStyle from 'primevue/listbox/style';\n\nexport default {\n name: 'BaseListbox',\n extends: BaseEditableHolder,\n props: {\n options: Array,\n optionLabel: null,\n optionValue: null,\n optionDisabled: null,\n optionGroupLabel: null,\n optionGroupChildren: null,\n listStyle: null,\n scrollHeight: {\n type: String,\n default: '14rem'\n },\n dataKey: null,\n multiple: {\n type: Boolean,\n default: false\n },\n metaKeySelection: {\n type: Boolean,\n default: false\n },\n filter: Boolean,\n filterPlaceholder: String,\n filterLocale: String,\n filterMatchMode: {\n type: String,\n default: 'contains'\n },\n filterFields: {\n type: Array,\n default: null\n },\n virtualScrollerOptions: {\n type: Object,\n default: null\n },\n autoOptionFocus: {\n type: Boolean,\n default: true\n },\n selectOnFocus: {\n type: Boolean,\n default: false\n },\n focusOnHover: {\n type: Boolean,\n default: true\n },\n highlightOnSelect: {\n type: Boolean,\n default: true\n },\n checkmark: {\n type: Boolean,\n default: false\n },\n filterMessage: {\n type: String,\n default: null\n },\n selectionMessage: {\n type: String,\n default: null\n },\n emptySelectionMessage: {\n type: String,\n default: null\n },\n emptyFilterMessage: {\n type: String,\n default: null\n },\n emptyMessage: {\n type: String,\n default: null\n },\n filterIcon: {\n type: String,\n default: undefined\n },\n striped: {\n type: Boolean,\n default: false\n },\n tabindex: {\n type: Number,\n default: 0\n },\n fluid: {\n type: Boolean,\n default: null\n },\n ariaLabel: {\n type: String,\n default: null\n },\n ariaLabelledby: {\n type: String,\n default: null\n }\n },\n style: ListboxStyle,\n provide() {\n return {\n $pcListbox: this,\n $parentInstance: this\n };\n }\n};\n</script>\n","<template>\n <div :id=\"$id\" :class=\"cx('root')\" @focusout=\"onFocusout\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n <span\n ref=\"firstHiddenFocusableElement\"\n role=\"presentation\"\n aria-hidden=\"true\"\n class=\"p-hidden-accessible p-hidden-focusable\"\n :tabindex=\"!disabled ? tabindex : -1\"\n @focus=\"onFirstHiddenFocus\"\n v-bind=\"ptm('hiddenFirstFocusableEl')\"\n :data-p-hidden-accessible=\"true\"\n :data-p-hidden-focusable=\"true\"\n ></span>\n <div v-if=\"$slots.header\" :class=\"cx('header')\" v-bind=\"ptm('header')\">\n <slot name=\"header\" :value=\"d_value\" :options=\"visibleOptions\"></slot>\n </div>\n <div v-if=\"filter\" :class=\"cx('header')\" v-bind=\"ptm('header')\">\n <IconField :unstyled=\"unstyled\" :pt=\"ptm('pcFilterContainer')\">\n <InputText\n v-model=\"filterValue\"\n type=\"text\"\n :class=\"cx('pcFilter')\"\n :placeholder=\"filterPlaceholder\"\n role=\"searchbox\"\n autocomplete=\"off\"\n :disabled=\"disabled\"\n :unstyled=\"unstyled\"\n :aria-owns=\"$id + '_list'\"\n :aria-activedescendant=\"focusedOptionId\"\n :tabindex=\"!disabled && !focused ? tabindex : -1\"\n @input=\"onFilterChange\"\n @keydown=\"onFilterKeyDown\"\n :pt=\"ptm('pcFilter')\"\n />\n <InputIcon :unstyled=\"unstyled\" :pt=\"ptm('pcFilterIconContainer')\">\n <slot name=\"filtericon\">\n <span v-if=\"filterIcon\" :class=\"filterIcon\" v-bind=\"ptm('filterIcon')\" />\n <SearchIcon v-else v-bind=\"ptm('filterIcon')\" />\n </slot>\n </InputIcon>\n </IconField>\n <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenFilterResult')\" :data-p-hidden-accessible=\"true\">\n {{ filterResultMessageText }}\n </span>\n </div>\n <div :class=\"cx('listContainer')\" :style=\"[{ 'max-height': virtualScrollerDisabled ? scrollHeight : '' }, listStyle]\" v-bind=\"ptm('listContainer')\">\n <VirtualScroller :ref=\"virtualScrollerRef\" v-bind=\"virtualScrollerOptions\" :items=\"visibleOptions\" :style=\"[{ height: scrollHeight }, listStyle]\" :tabindex=\"-1\" :disabled=\"virtualScrollerDisabled\" :pt=\"ptm('virtualScroller')\">\n <template v-slot:content=\"{ styleClass, contentRef, items, getItemOptions, contentStyle, itemSize }\">\n <ul\n :ref=\"(el) => listRef(el, contentRef)\"\n :id=\"$id + '_list'\"\n :class=\"[cx('list'), styleClass]\"\n :style=\"contentStyle\"\n :tabindex=\"-1\"\n role=\"listbox\"\n :aria-multiselectable=\"multiple\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n :aria-disabled=\"disabled\"\n @focus=\"onListFocus\"\n @blur=\"onListBlur\"\n @keydown=\"onListKeyDown\"\n v-bind=\"ptm('list')\"\n >\n <template v-for=\"(option, i) of items\" :key=\"getOptionRenderKey(option, getOptionIndex(i, getItemOptions))\">\n <li v-if=\"isOptionGroup(option)\" :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\" :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\" :class=\"cx('optionGroup')\" role=\"option\" v-bind=\"ptm('optionGroup')\">\n <slot name=\"optiongroup\" :option=\"option.optionGroup\" :index=\"getOptionIndex(i, getItemOptions)\">{{ getOptionGroupLabel(option.optionGroup) }}</slot>\n </li>\n <li\n v-else\n :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\"\n v-ripple\n :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n :class=\"cx('option', { option, index: i, getItemOptions })\"\n role=\"option\"\n :aria-label=\"getOptionLabel(option)\"\n :aria-selected=\"isSelected(option)\"\n :aria-disabled=\"isOptionDisabled(option)\"\n :aria-setsize=\"ariaSetSize\"\n :aria-posinset=\"getAriaPosInset(getOptionIndex(i, getItemOptions))\"\n @click=\"onOptionSelect($event, option, getOptionIndex(i, getItemOptions))\"\n @mousedown=\"onOptionMouseDown($event, getOptionIndex(i, getItemOptions))\"\n @mousemove=\"onOptionMouseMove($event, getOptionIndex(i, getItemOptions))\"\n @touchend=\"onOptionTouchEnd()\"\n @dblclick=\"onOptionDblClick($event, option)\"\n v-bind=\"getPTOptions(option, getItemOptions, i, 'option')\"\n :data-p-selected=\"!checkmark && isSelected(option)\"\n :data-p-focused=\"focusedOptionIndex === getOptionIndex(i, getItemOptions)\"\n :data-p-disabled=\"isOptionDisabled(option)\"\n >\n <template v-if=\"checkmark\">\n <CheckIcon v-if=\"isSelected(option)\" :class=\"cx('optionCheckIcon')\" v-bind=\"ptm('optionCheckIcon')\" />\n <BlankIcon v-else :class=\"cx('optionBlankIcon')\" v-bind=\"ptm('optionBlankIcon')\" />\n </template>\n <slot name=\"option\" :option=\"option\" :selected=\"isSelected(option)\" :index=\"getOptionIndex(i, getItemOptions)\">{{ getOptionLabel(option) }}</slot>\n </li>\n </template>\n <li v-if=\"filterValue && (!items || (items && items.length === 0))\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\">\n <slot name=\"emptyfilter\">{{ emptyFilterMessageText }}</slot>\n </li>\n <li v-else-if=\"!options || (options && options.length === 0)\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\">\n <slot name=\"empty\">{{ emptyMessageText }}</slot>\n </li>\n </ul>\n </template>\n <template v-if=\"$slots.loader\" v-slot:loader=\"{ options }\">\n <slot name=\"loader\" :options=\"options\"></slot>\n </template>\n </VirtualScroller>\n </div>\n <slot name=\"footer\" :value=\"d_value\" :options=\"visibleOptions\"></slot>\n <span v-if=\"!options || (options && options.length === 0)\" role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenEmptyMessage')\" :data-p-hidden-accessible=\"true\">\n {{ emptyMessageText }}\n </span>\n <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenSelectedMessage')\" :data-p-hidden-accessible=\"true\">\n {{ selectedMessageText }}\n </span>\n <span\n ref=\"lastHiddenFocusableElement\"\n role=\"presentation\"\n aria-hidden=\"true\"\n class=\"p-hidden-accessible p-hidden-focusable\"\n :tabindex=\"!disabled ? tabindex : -1\"\n @focus=\"onLastHiddenFocus\"\n v-bind=\"ptm('hiddenLastFocusableEl')\"\n :data-p-hidden-accessible=\"true\"\n :data-p-hidden-focusable=\"true\"\n ></span>\n </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { findSingle, focus, getFirstFocusableElement, isElement } from '@primeuix/utils/dom';\nimport { equals, findLastIndex, isNotEmpty, isPrintableCharacter, resolveFieldData } from '@primeuix/utils/object';\nimport { FilterService } from '@primevue/core/api';\nimport BlankIcon from '@primevue/icons/blank';\nimport CheckIcon from '@primevue/icons/check';\nimport SearchIcon from '@primevue/icons/search';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport Ripple from 'primevue/ripple';\nimport VirtualScroller from 'primevue/virtualscroller';\nimport BaseListbox from './BaseListbox.vue';\n\nexport default {\n name: 'Listbox',\n extends: BaseListbox,\n inheritAttrs: false,\n emits: ['change', 'focus', 'blur', 'filter', 'item-dblclick', 'option-dblclick'],\n list: null,\n virtualScroller: null,\n optionTouched: false,\n startRangeIndex: -1,\n searchTimeout: null,\n searchValue: '',\n data() {\n return {\n filterValue: null,\n focused: false,\n focusedOptionIndex: -1\n };\n },\n watch: {\n options() {\n this.autoUpdateModel();\n }\n },\n mounted() {\n this.autoUpdateModel();\n },\n methods: {\n getOptionIndex(index, fn) {\n return this.virtualScrollerDisabled ? index : fn && fn(index)['index'];\n },\n getOptionLabel(option) {\n return this.optionLabel ? resolveFieldData(option, this.optionLabel) : typeof option === 'string' || typeof option === 'number' || typeof option === 'boolean' ? option : null;\n },\n getOptionValue(option) {\n return this.optionValue ? resolveFieldData(option, this.optionValue) : option;\n },\n getOptionRenderKey(option, index) {\n return (this.dataKey ? resolveFieldData(option, this.dataKey) : this.getOptionLabel(option)) + '_' + index;\n },\n getPTOptions(option, itemOptions, index, key) {\n return this.ptm(key, {\n context: {\n selected: this.isSelected(option),\n focused: this.focusedOptionIndex === this.getOptionIndex(index, itemOptions),\n disabled: this.isOptionDisabled(option)\n }\n });\n },\n isOptionDisabled(option) {\n return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n },\n isOptionGroup(option) {\n return this.optionGroupLabel && option.optionGroup && option.group;\n },\n getOptionGroupLabel(optionGroup) {\n return resolveFieldData(optionGroup, this.optionGroupLabel);\n },\n getOptionGroupChildren(optionGroup) {\n return resolveFieldData(optionGroup, this.optionGroupChildren);\n },\n getAriaPosInset(index) {\n return (this.optionGroupLabel ? index - this.visibleOptions.slice(0, index).filter((option) => this.isOptionGroup(option)).length : index) + 1;\n },\n onFirstHiddenFocus() {\n focus(this.list);\n\n const firstFocusableEl = getFirstFocusableElement(this.$el, ':not([data-p-hidden-focusable=\"true\"])');\n\n this.$refs.lastHiddenFocusableElement.tabIndex = isElement(firstFocusableEl) ? undefined : -1;\n this.$refs.firstHiddenFocusableElement.tabIndex = -1;\n },\n onLastHiddenFocus(event) {\n const relatedTarget = event.relatedTarget;\n\n if (relatedTarget === this.list) {\n const firstFocusableEl = getFirstFocusableElement(this.$el, ':not([data-p-hidden-focusable=\"true\"])');\n\n focus(firstFocusableEl);\n this.$refs.firstHiddenFocusableElement.tabIndex = undefined;\n } else {\n focus(this.$refs.firstHiddenFocusableElement);\n }\n\n this.$refs.lastHiddenFocusableElement.tabIndex = -1;\n },\n onFocusout(event) {\n if (!this.$el.contains(event.relatedTarget) && this.$refs.lastHiddenFocusableElement && this.$refs.firstHiddenFocusableElement) {\n this.$refs.lastHiddenFocusableElement.tabIndex = this.$refs.firstHiddenFocusableElement.tabIndex = undefined;\n }\n },\n onListFocus(event) {\n this.focused = true;\n this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex();\n this.autoUpdateModel();\n this.scrollInView(this.focusedOptionIndex);\n this.$emit('focus', event);\n },\n onListBlur(event) {\n this.focused = false;\n this.focusedOptionIndex = this.startRangeIndex = -1;\n this.searchValue = '';\n this.$emit('blur', event);\n },\n onListKeyDown(event) {\n const metaKey = event.metaKey || event.ctrlKey;\n\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n\n case 'Home':\n this.onHomeKey(event);\n break;\n\n case 'End':\n this.onEndKey(event);\n break;\n\n case 'PageDown':\n this.onPageDownKey(event);\n break;\n\n case 'PageUp':\n this.onPageUpKey(event);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n this.onSpaceKey(event);\n break;\n\n case 'Tab':\n //NOOP\n break;\n\n case 'ShiftLeft':\n case 'ShiftRight':\n this.onShiftKey(event);\n break;\n\n default:\n if (this.multiple && event.code === 'KeyA' && metaKey) {\n const value = this.visibleOptions.filter((option) => this.isValidOption(option)).map((option) => this.getOptionValue(option));\n\n this.updateModel(event, value);\n\n event.preventDefault();\n break;\n }\n\n if (!metaKey && isPrintableCharacter(event.key)) {\n this.searchOptions(event, event.key);\n event.preventDefault();\n }\n\n break;\n }\n },\n onOptionSelect(event, option, index = -1) {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n\n this.multiple ? this.onOptionSelectMultiple(event, option) : this.onOptionSelectSingle(event, option);\n this.optionTouched = false;\n index !== -1 && (this.focusedOptionIndex = index);\n },\n onOptionMouseDown(event, index) {\n this.changeFocusedOptionIndex(event, index);\n },\n onOptionMouseMove(event, index) {\n if (this.focusOnHover && this.focused) {\n this.changeFocusedOptionIndex(event, index);\n }\n },\n onOptionTouchEnd() {\n if (this.disabled) {\n return;\n }\n\n this.optionTouched = true;\n },\n onOptionDblClick(event, item) {\n this.$emit('item-dblclick', {\n originalEvent: event,\n value: item\n });\n this.$emit('option-dblclick', {\n originalEvent: event,\n value: item\n });\n },\n onOptionSelectSingle(event, option) {\n let selected = this.isSelected(option);\n let valueChanged = false;\n let value = null;\n let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = event && (event.metaKey || event.ctrlKey);\n\n if (selected) {\n if (metaKey) {\n value = null;\n valueChanged = true;\n }\n } else {\n value = this.getOptionValue(option);\n valueChanged = true;\n }\n } else {\n value = selected ? null : this.getOptionValue(option);\n valueChanged = true;\n }\n\n if (valueChanged) {\n this.updateModel(event, value);\n }\n },\n onOptionSelectMultiple(event, option) {\n let selected = this.isSelected(option);\n let value = null;\n let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = event.metaKey || event.ctrlKey;\n\n if (selected) {\n value = metaKey ? this.removeOption(option) : [this.getOptionValue(option)];\n } else {\n value = metaKey ? this.d_value || [] : [];\n value = [...value, this.getOptionValue(option)];\n }\n } else {\n value = selected ? this.removeOption(option) : [...(this.d_value || []), this.getOptionValue(option)];\n }\n\n this.updateModel(event, value);\n },\n onOptionSelectRange(event, start = -1, end = -1) {\n start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));\n end === -1 && (end = this.findNearestSelectedOptionIndex(start));\n\n if (start !== -1 && end !== -1) {\n const rangeStart = Math.min(start, end);\n const rangeEnd = Math.max(start, end);\n const value = this.visibleOptions\n .slice(rangeStart, rangeEnd + 1)\n .filter((option) => this.isValidOption(option))\n .map((option) => this.getOptionValue(option));\n\n this.updateModel(event, value);\n }\n },\n onFilterChange(event) {\n this.$emit('filter', { originalEvent: event, value: event.target.value, filterValue: this.visibleOptions });\n this.focusedOptionIndex = this.startRangeIndex = -1;\n },\n onFilterKeyDown(event) {\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n\n case 'ArrowLeft':\n case 'ArrowRight':\n this.onArrowLeftKey(event, true);\n break;\n\n case 'Home':\n this.onHomeKey(event, true);\n break;\n\n case 'End':\n this.onEndKey(event, true);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n this.onEnterKey(event);\n break;\n\n case 'ShiftLeft':\n case 'ShiftRight':\n this.onShiftKey(event);\n break;\n\n default:\n break;\n }\n },\n onArrowDownKey(event) {\n const optionIndex = this.focusedOptionIndex !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex) : this.findFirstFocusedOptionIndex();\n\n if (this.multiple && event.shiftKey) {\n this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n }\n\n this.changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n },\n onArrowUpKey(event) {\n const optionIndex = this.focusedOptionIndex !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex) : this.findLastFocusedOptionIndex();\n\n if (this.multiple && event.shiftKey) {\n this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n }\n\n this.changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n },\n onArrowLeftKey(event, pressedInInputText = false) {\n pressedInInputText && (this.focusedOptionIndex = -1);\n },\n onHomeKey(event, pressedInInputText = false) {\n if (pressedInInputText) {\n const target = event.currentTarget;\n\n if (event.shiftKey) {\n target.setSelectionRange(0, event.target.selectionStart);\n } else {\n target.setSelectionRange(0, 0);\n this.focusedOptionIndex = -1;\n }\n } else {\n let metaKey = event.metaKey || event.ctrlKey;\n let optionIndex = this.findFirstOptionIndex();\n\n if (this.multiple && event.shiftKey && metaKey) {\n this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n }\n\n this.changeFocusedOptionIndex(event, optionIndex);\n }\n\n event.preventDefault();\n },\n onEndKey(event, pressedInInputText = false) {\n if (pressedInInputText) {\n const target = event.currentTarget;\n\n if (event.shiftKey) {\n target.setSelectionRange(event.target.selectionStart, target.value.length);\n } else {\n const len = target.value.length;\n\n target.setSelectionRange(len, len);\n this.focusedOptionIndex = -1;\n }\n } else {\n let metaKey = event.metaKey || event.ctrlKey;\n let optionIndex = this.findLastOptionIndex();\n\n if (this.multiple && event.shiftKey && metaKey) {\n this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n }\n\n this.changeFocusedOptionIndex(event, optionIndex);\n }\n\n event.preventDefault();\n },\n onPageUpKey(event) {\n this.scrollInView(0);\n event.preventDefault();\n },\n onPageDownKey(event) {\n this.scrollInView(this.visibleOptions.length - 1);\n event.preventDefault();\n },\n onEnterKey(event) {\n if (this.focusedOptionIndex !== -1) {\n if (this.multiple && event.shiftKey) this.onOptionSelectRange(event, this.focusedOptionIndex);\n else this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n }\n },\n onSpaceKey(event) {\n event.preventDefault();\n this.onEnterKey(event);\n },\n onShiftKey() {\n this.startRangeIndex = this.focusedOptionIndex;\n },\n isOptionMatched(option) {\n return this.isValidOption(option) && typeof this.getOptionLabel(option) === 'string' && this.getOptionLabel(option)?.toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));\n },\n isValidOption(option) {\n return isNotEmpty(option) && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n },\n isValidSelectedOption(option) {\n return this.isValidOption(option) && this.isSelected(option);\n },\n isEquals(value1, value2) {\n return equals(value1, value2, this.equalityKey);\n },\n isSelected(option) {\n const optionValue = this.getOptionValue(option);\n\n if (this.multiple) return (this.d_value || []).some((value) => this.isEquals(value, optionValue));\n else return this.isEquals(this.d_value, optionValue);\n },\n findFirstOptionIndex() {\n return this.visibleOptions.findIndex((option) => this.isValidOption(option));\n },\n findLastOptionIndex() {\n return findLastIndex(this.visibleOptions, (option) => this.isValidOption(option));\n },\n findNextOptionIndex(index) {\n const matchedOptionIndex = index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n },\n findPrevOptionIndex(index) {\n const matchedOptionIndex = index > 0 ? findLastIndex(this.visibleOptions.slice(0, index), (option) => this.isValidOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n },\n findSelectedOptionIndex() {\n if (this.$filled) {\n if (this.multiple) {\n for (let index = this.d_value.length - 1; index >= 0; index--) {\n const value = this.d_value[index];\n const matchedOptionIndex = this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option) && this.isEquals(value, this.getOptionValue(option)));\n\n if (matchedOptionIndex > -1) return matchedOptionIndex;\n }\n } else {\n return this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option));\n }\n }\n\n return -1;\n },\n findFirstSelectedOptionIndex() {\n return this.$filled ? this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option)) : -1;\n },\n findLastSelectedOptionIndex() {\n return this.$filled ? findLastIndex(this.visibleOptions, (option) => this.isValidSelectedOption(option)) : -1;\n },\n findNextSelectedOptionIndex(index) {\n const matchedOptionIndex = this.$filled && index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidSelectedOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n },\n findPrevSelectedOptionIndex(index) {\n const matchedOptionIndex = this.$filled && index > 0 ? findLastIndex(this.visibleOptions.slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n },\n findNearestSelectedOptionIndex(index, firstCheckUp = false) {\n let matchedOptionIndex = -1;\n\n if (this.$filled) {\n if (firstCheckUp) {\n matchedOptionIndex = this.findPrevSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;\n } else {\n matchedOptionIndex = this.findNextSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n }\n }\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n },\n findFirstFocusedOptionIndex() {\n const selectedIndex = this.findFirstSelectedOptionIndex();\n\n return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n },\n findLastFocusedOptionIndex() {\n const selectedIndex = this.findLastSelectedOptionIndex();\n\n return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n },\n searchOptions(event, char) {\n this.searchValue = (this.searchValue || '') + char;\n\n let optionIndex = -1;\n\n if (isNotEmpty(this.searchValue)) {\n if (this.focusedOptionIndex !== -1) {\n optionIndex = this.visibleOptions.slice(this.focusedOptionIndex).findIndex((option) => this.isOptionMatched(option));\n optionIndex = optionIndex === -1 ? this.visibleOptions.slice(0, this.focusedOptionIndex).findIndex((option) => this.isOptionMatched(option)) : optionIndex + this.focusedOptionIndex;\n } else {\n optionIndex = this.visibleOptions.findIndex((option) => this.isOptionMatched(option));\n }\n\n if (optionIndex === -1 && this.focusedOptionIndex === -1) {\n optionIndex = this.findFirstFocusedOptionIndex();\n }\n\n if (optionIndex !== -1) {\n this.changeFocusedOptionIndex(event, optionIndex);\n }\n }\n\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n\n this.searchTimeout = setTimeout(() => {\n this.searchValue = '';\n this.searchTimeout = null;\n }, 500);\n },\n removeOption(option) {\n return this.d_value.filter((val) => !equals(val, this.getOptionValue(option), this.equalityKey));\n },\n changeFocusedOptionIndex(event, index) {\n if (this.focusedOptionIndex !== index) {\n this.focusedOptionIndex = index;\n this.scrollInView();\n\n if (this.selectOnFocus && !this.multiple) {\n this.onOptionSelect(event, this.visibleOptions[index]);\n }\n }\n },\n scrollInView(index = -1) {\n this.$nextTick(() => {\n const id = index !== -1 ? `${this.$id}_${index}` : this.focusedOptionId;\n const element = findSingle(this.list, `li[id=\"${id}\"]`);\n\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n } else if (!this.virtualScrollerDisabled) {\n this.virtualScroller && this.virtualScroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex);\n }\n });\n },\n autoUpdateModel() {\n if (this.selectOnFocus && this.autoOptionFocus && !this.$filled && !this.multiple && this.focused) {\n this.focusedOptionIndex = this.findFirstFocusedOptionIndex();\n this.onOptionSelect(null, this.visibleOptions[this.focusedOptionIndex]);\n }\n },\n updateModel(event, value) {\n this.writeValue(value, event);\n this.$emit('change', { originalEvent: event, value });\n },\n listRef(el, contentRef) {\n this.list = el;\n contentRef && contentRef(el); // For VirtualScroller\n },\n virtualScrollerRef(el) {\n this.virtualScroller = el;\n }\n },\n computed: {\n optionsListFlat() {\n return this.filterValue ? FilterService.filter(this.options, this.searchFields, this.filterValue, this.filterMatchMode, this.filterLocale) : this.options;\n },\n optionsListGroup() {\n const filteredOptions = [];\n\n (this.options || []).forEach((optionGroup) => {\n const optionGroupChildren = this.getOptionGroupChildren(optionGroup) || [];\n const filteredChildren = this.filterValue ? FilterService.filter(optionGroupChildren, this.searchFields, this.filterValue, this.filterMatchMode, this.filterLocale) : optionGroupChildren;\n\n if (filteredChildren?.length) {\n filteredOptions.push({ optionGroup, group: true }, ...filteredChildren);\n }\n });\n\n return filteredOptions;\n },\n visibleOptions() {\n return this.optionGroupLabel ? this.optionsListGroup : this.optionsListFlat;\n },\n // @deprecated use $filled instead\n hasSelectedOption() {\n return isNotEmpty(this.d_value);\n },\n equalityKey() {\n return this.optionValue ? null : this.dataKey;\n },\n searchFields() {\n return this.filterFields || [this.optionLabel];\n },\n filterResultMessageText() {\n return isNotEmpty(this.visibleOptions) ? this.filterMessageText.replaceAll('{0}', this.visibleOptions.length) : this.emptyFilterMessageText;\n },\n filterMessageText() {\n return this.filterMessage || this.$primevue.config.locale.searchMessage || '';\n },\n emptyFilterMessageText() {\n return this.emptyFilterMessage || this.$primevue.config.locale.emptySearchMessage || this.$primevue.config.locale.emptyFilterMessage || '';\n },\n emptyMessageText() {\n return this.emptyMessage || this.$primevue.config.locale.emptyMessage || '';\n },\n selectionMessageText() {\n return this.selectionMessage || this.$primevue.config.locale.selectionMessage || '';\n },\n emptySelectionMessageText() {\n return this.emptySelectionMessage || this.$primevue.config.locale.emptySelectionMessage || '';\n },\n selectedMessageText() {\n return this.$filled ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.d_value.length : '1') : this.emptySelectionMessageText;\n },\n focusedOptionId() {\n return this.focusedOptionIndex !== -1 ? `${this.$id}_${this.focusedOptionIndex}` : null;\n },\n ariaSetSize() {\n return this.visibleOptions.filter((option) => !this.isOptionGroup(option)).length;\n },\n virtualScrollerDisabled() {\n return !this.virtualScrollerOptions;\n },\n containerDataP() {\n return cn({\n invalid: this.$invalid,\n disabled: this.disabled\n });\n }\n },\n directives: {\n ripple: Ripple\n },\n components: {\n InputText,\n VirtualScroller,\n InputIcon,\n IconField,\n SearchIcon,\n CheckIcon,\n BlankIcon\n }\n};\n</script>\n","<template>\n <div :id=\"$id\" :class=\"cx('root')\" @focusout=\"onFocusout\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n <span\n ref=\"firstHiddenFocusableElement\"\n role=\"presentation\"\n aria-hidden=\"true\"\n class=\"p-hidden-accessible p-hidden-focusable\"\n :tabindex=\"!disabled ? tabindex : -1\"\n @focus=\"onFirstHiddenFocus\"\n v-bind=\"ptm('hiddenFirstFocusableEl')\"\n :data-p-hidden-accessible=\"true\"\n :data-p-hidden-focusable=\"true\"\n ></span>\n <div v-if=\"$slots.header\" :class=\"cx('header')\" v-bind=\"ptm('header')\">\n <slot name=\"header\" :value=\"d_value\" :options=\"visibleOptions\"></slot>\n </div>\n <div v-if=\"filter\" :class=\"cx('header')\" v-bind=\"ptm('header')\">\n <IconField :unstyled=\"unstyled\" :pt=\"ptm('pcFilterContainer')\">\n <InputText\n v-model=\"filterValue\"\n type=\"text\"\n :class=\"cx('pcFilter')\"\n :placeholder=\"filterPlaceholder\"\n role=\"searchbox\"\n autocomplete=\"off\"\n :disabled=\"disabled\"\n :unstyled=\"unstyled\"\n :aria-owns=\"$id + '_list'\"\n :aria-activedescendant=\"focusedOptionId\"\n :tabindex=\"!disabled && !focused ? tabindex : -1\"\n @input=\"onFilterChange\"\n @keydown=\"onFilterKeyDown\"\n :pt=\"ptm('pcFilter')\"\n />\n <InputIcon :unstyled=\"unstyled\" :pt=\"ptm('pcFilterIconContainer')\">\n <slot name=\"filtericon\">\n <span v-if=\"filterIcon\" :class=\"filterIcon\" v-bind=\"ptm('filterIcon')\" />\n <SearchIcon v-else v-bind=\"ptm('filterIcon')\" />\n </slot>\n </InputIcon>\n </IconField>\n <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenFilterResult')\" :data-p-hidden-accessible=\"true\">\n {{ filterResultMessageText }}\n </span>\n </div>\n <div :class=\"cx('listContainer')\" :style=\"[{ 'max-height': virtualScrollerDisabled ? scrollHeight : '' }, listStyle]\" v-bind=\"ptm('listContainer')\">\n <VirtualScroller :ref=\"virtualScrollerRef\" v-bind=\"virtualScrollerOptions\" :items=\"visibleOptions\" :style=\"[{ height: scrollHeight }, listStyle]\" :tabindex=\"-1\" :disabled=\"virtualScrollerDisabled\" :pt=\"ptm('virtualScroller')\">\n <template v-slot:content=\"{ styleClass, contentRef, items, getItemOptions, contentStyle, itemSize }\">\n <ul\n :ref=\"(el) => listRef(el, contentRef)\"\n :id=\"$id + '_list'\"\n :class=\"[cx('list'), styleClass]\"\n :style=\"contentStyle\"\n :tabindex=\"-1\"\n role=\"listbox\"\n :aria-multiselectable=\"multiple\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n :aria-disabled=\"disabled\"\n @focus=\"onListFocus\"\n @blur=\"onListBlur\"\n @keydown=\"onListKeyDown\"\n v-bind=\"ptm('list')\"\n >\n <template v-for=\"(option, i) of items\" :key=\"getOptionRenderKey(option, getOptionIndex(i, getItemOptions))\">\n <li v-if=\"isOptionGroup(option)\" :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\" :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\" :class=\"cx('optionGroup')\" role=\"option\" v-bind=\"ptm('optionGroup')\">\n <slot name=\"optiongroup\" :option=\"option.optionGroup\" :index=\"getOptionIndex(i, getItemOptions)\">{{ getOptionGroupLabel(option.optionGroup) }}</slot>\n </li>\n <li\n v-else\n :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\"\n v-ripple\n :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n :class=\"cx('option', { option, index: i, getItemOptions })\"\n role=\"option\"\n :aria-label=\"getOptionLabel(option)\"\n :aria-selected=\"isSelected(option)\"\n :aria-disabled=\"isOptionDisabled(option)\"\n :aria-setsize=\"ariaSetSize\"\n :aria-posinset=\"getAriaPosInset(getOptionIndex(i, getItemOptions))\"\n @click=\"onOptionSelect($event, option, getOptionIndex(i, getItemOptions))\"\n @mousedown=\"onOptionMouseDown($event, getOptionIndex(i, getItemOptions))\"\n @mousemove=\"onOptionMouseMove($event, getOptionIndex(i, getItemOptions))\"\n @touchend=\"onOptionTouchEnd()\"\n @dblclick=\"onOptionDblClick($event, option)\"\n v-bind=\"getPTOptions(option, getItemOptions, i, 'option')\"\n :data-p-selected=\"!checkmark && isSelected(option)\"\n :data-p-focused=\"focusedOptionIndex === getOptionIndex(i, getItemOptions)\"\n :data-p-disabled=\"isOptionDisabled(option)\"\n >\n <template v-if=\"checkmark\">\n <CheckIcon v-if=\"isSelected(option)\" :class=\"cx('optionCheckIcon')\" v-bind=\"ptm('optionCheckIcon')\" />\n <BlankIcon v-else :class=\"cx('optionBlankIcon')\" v-bind=\"ptm('optionBlankIcon')\" />\n </template>\n <slot name=\"option\" :option=\"option\" :selected=\"isSelected(option)\" :index=\"getOptionIndex(i, getItemOptions)\">{{ getOptionLabel(option) }}</slot>\n </li>\n </template>\n <li v-if=\"filterValue && (!items || (items && items.length === 0))\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\">\n <slot name=\"emptyfilter\">{{ emptyFilterMessageText }}</slot>\n </li>\n <li v-else-if=\"!options || (options && options.length === 0)\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\">\n <slot name=\"empty\">{{ emptyMessageText }}</slot>\n </li>\n </ul>\n </template>\n <template v-if=\"$slots.loader\" v-slot:loader=\"{ options }\">\n <slot name=\"loader\" :options=\"options\"></slot>\n </template>\n </VirtualScroller>\n </div>\n <slot name=\"footer\" :value=\"d_value\" :options=\"visibleOptions\"></slot>\n <span v-if=\"!options || (options && options.length === 0)\" role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenEmptyMessage')\" :data-p-hidden-accessible=\"true\">\n {{ emptyMessageText }}\n </span>\n <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenSelectedMessage')\" :data-p-hidden-accessible=\"true\">\n {{ selectedMessageText }}\n </span>\n <span\n ref=\"lastHiddenFocusableElement\"\n role=\"presentation\"\n aria-hidden=\"true\"\n class=\"p-hidden-accessible p-hidden-focusable\"\n :tabindex=\"!disabled ? tabindex : -1\"\n @focus=\"onLastHiddenFocus\"\n v-bind=\"ptm('hiddenLastFocusableEl')\"\n :data-p-hidden-accessible=\"true\"\n :data-p-hidden-focusable=\"true\"\n ></span>\n </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { findSingle, focus, getFirstFocusableElement, isElement } from '@primeuix/utils/dom';\nimport { equals, findLastIndex, isNotEmpty, isPrintableCharacter, resolveFieldData } from '@primeuix/utils/object';\nimport { FilterService } from '@primevue/core/api';\nimport BlankIcon from '@primevue/icons/blank';\nimport CheckIcon from '@primevue/icons/check';\nimport SearchIcon from '@primevue/icons/search';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport Ripple from 'primevue/ripple';\nimport VirtualScroller from 'primevue/virtualscroller';\nimport BaseListbox from './BaseListbox.vue';\n\nexport default {\n name: 'Listbox',\n extends: BaseListbox,\n inheritAttrs: false,\n emits: ['change', 'focus', 'blur', 'filter', 'item-dblclick', 'option-dblclick'],\n list: null,\n virtualScroller: null,\n optionTouched: false,\n startRangeIndex: -1,\n searchTimeout: null,\n searchValue: '',\n data() {\n return {\n filterValue: null,\n focused: false,\n focusedOptionIndex: -1\n };\n },\n watch: {\n options() {\n this.autoUpdateModel();\n }\n },\n mounted() {\n this.autoUpdateModel();\n },\n methods: {\n getOptionIndex(index, fn) {\n return this.virtualScrollerDisabled ? index : fn && fn(index)['index'];\n },\n getOptionLabel(option) {\n return this.optionLabel ? resolveFieldData(option, this.optionLabel) : typeof option === 'string' || typeof option === 'number' || typeof option === 'boolean' ? option : null;\n },\n getOptionValue(option) {\n return this.optionValue ? resolveFieldData(option, this.optionValue) : option;\n },\n getOptionRenderKey(option, index) {\n return (this.dataKey ? resolveFieldData(option, this.dataKey) : this.getOptionLabel(option)) + '_' + index;\n },\n getPTOptions(option, itemOptions, index, key) {\n return this.ptm(key, {\n context: {\n selected: this.isSelected(option),\n focused: this.focusedOptionIndex === this.getOptionIndex(index, itemOptions),\n disabled: this.isOptionDisabled(option)\n }\n });\n },\n isOptionDisabled(option) {\n return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n },\n isOptionGroup(option) {\n return this.optionGroupLabel && option.optionGroup && option.group;\n },\n getOptionGroupLabel(optionGroup) {\n return resolveFieldData(optionGroup, this.optionGroupLabel);\n },\n getOptionGroupChildren(optionGroup) {\n return resolveFieldData(optionGroup, this.optionGroupChildren);\n },\n getAriaPosInset(index) {\n return (this.optionGroupLabel ? index - this.visibleOptions.slice(0, index).filter((option) => this.isOptionGroup(option)).length : index) + 1;\n },\n onFirstHiddenFocus() {\n focus(this.list);\n\n const firstFocusableEl = getFirstFocusableElement(this.$el, ':not([data-p-hidden-focusable=\"true\"])');\n\n this.$refs.lastHiddenFocusableElement.tabIndex = isElement(firstFocusableEl) ? undefined : -1;\n this.$refs.firstHiddenFocusableElement.tabIndex = -1;\n },\n onLastHiddenFocus(event) {\n const relatedTarget = event.relatedTarget;\n\n if (relatedTarget === this.list) {\n const firstFocusableEl = getFirstFocusableElement(this.$el, ':not([data-p-hidden-focusable=\"true\"])');\n\n focus(firstFocusableEl);\n this.$refs.firstHiddenFocusableElement.tabIndex = undefined;\n } else {\n focus(this.$refs.firstHiddenFocusableElement);\n }\n\n this.$refs.lastHiddenFocusableElement.tabIndex = -1;\n },\n onFocusout(event) {\n if (!this.$el.contains(event.relatedTarget) && this.$refs.lastHiddenFocusableElement && this.$refs.firstHiddenFocusableElement) {\n this.$refs.lastHiddenFocusableElement.tabIndex = this.$refs.firstHiddenFocusableElement.tabIndex = undefined;\n }\n },\n onListFocus(event) {\n this.focused = true;\n this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.findSelectedOptionIndex();\n this.autoUpdateModel();\n this.scrollInView(this.focusedOptionIndex);\n this.$emit('focus', event);\n },\n onListBlur(event) {\n this.focused = false;\n this.focusedOptionIndex = this.startRangeIndex = -1;\n this.searchValue = '';\n this.$emit('blur', event);\n },\n onListKeyDown(event) {\n const metaKey = event.metaKey || event.ctrlKey;\n\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n\n case 'Home':\n this.onHomeKey(event);\n break;\n\n case 'End':\n this.onEndKey(event);\n break;\n\n case 'PageDown':\n this.onPageDownKey(event);\n break;\n\n case 'PageUp':\n this.onPageUpKey(event);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n this.onSpaceKey(event);\n break;\n\n case 'Tab':\n //NOOP\n break;\n\n case 'ShiftLeft':\n case 'ShiftRight':\n this.onShiftKey(event);\n break;\n\n default:\n if (this.multiple && event.code === 'KeyA' && metaKey) {\n const value = this.visibleOptions.filter((option) => this.isValidOption(option)).map((option) => this.getOptionValue(option));\n\n this.updateModel(event, value);\n\n event.preventDefault();\n break;\n }\n\n if (!metaKey && isPrintableCharacter(event.key)) {\n this.searchOptions(event, event.key);\n event.preventDefault();\n }\n\n break;\n }\n },\n onOptionSelect(event, option, index = -1) {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n\n this.multiple ? this.onOptionSelectMultiple(event, option) : this.onOptionSelectSingle(event, option);\n this.optionTouched = false;\n index !== -1 && (this.focusedOptionIndex = index);\n },\n onOptionMouseDown(event, index) {\n this.changeFocusedOptionIndex(event, index);\n },\n onOptionMouseMove(event, index) {\n if (this.focusOnHover && this.focused) {\n this.changeFocusedOptionIndex(event, index);\n }\n },\n onOptionTouchEnd() {\n if (this.disabled) {\n return;\n }\n\n this.optionTouched = true;\n },\n onOptionDblClick(event, item) {\n this.$emit('item-dblclick', {\n originalEvent: event,\n value: item\n });\n this.$emit('option-dblclick', {\n originalEvent: event,\n value: item\n });\n },\n onOptionSelectSingle(event, option) {\n let selected = this.isSelected(option);\n let valueChanged = false;\n let value = null;\n let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = event && (event.metaKey || event.ctrlKey);\n\n if (selected) {\n if (metaKey) {\n value = null;\n valueChanged = true;\n }\n } else {\n value = this.getOptionValue(option);\n valueChanged = true;\n }\n } else {\n value = selected ? null : this.getOptionValue(option);\n valueChanged = true;\n }\n\n if (valueChanged) {\n this.updateModel(event, value);\n }\n },\n onOptionSelectMultiple(event, option) {\n let selected = this.isSelected(option);\n let value = null;\n let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = event.metaKey || event.ctrlKey;\n\n if (selected) {\n value = metaKey ? this.removeOption(option) : [this.getOptionValue(option)];\n } else {\n value = metaKey ? this.d_value || [] : [];\n value = [...value, this.getOptionValue(option)];\n }\n } else {\n value = selected ? this.removeOption(option) : [...(this.d_value || []), this.getOptionValue(option)];\n }\n\n this.updateModel(event, value);\n },\n onOptionSelectRange(event, start = -1, end = -1) {\n start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));\n end === -1 && (end = this.findNearestSelectedOptionIndex(start));\n\n if (start !== -1 && end !== -1) {\n const rangeStart = Math.min(start, end);\n const rangeEnd = Math.max(start, end);\n const value = this.visibleOptions\n .slice(rangeStart, rangeEnd + 1)\n .filter((option) => this.isValidOption(option))\n .map((option) => this.getOptionValue(option));\n\n this.updateModel(event, value);\n }\n },\n onFilterChange(event) {\n this.$emit('filter', { originalEvent: event, value: event.target.value, filterValue: this.visibleOptions });\n this.focusedOptionIndex = this.startRangeIndex = -1;\n },\n onFilterKeyDown(event) {\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n\n case 'ArrowLeft':\n case 'ArrowRight':\n this.onArrowLeftKey(event, true);\n break;\n\n case 'Home':\n this.onHomeKey(event, true);\n break;\n\n case 'End':\n this.onEndKey(event, true);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n this.onEnterKey(event);\n break;\n\n case 'ShiftLeft':\n case 'ShiftRight':\n this.onShiftKey(event);\n break;\n\n default:\n break;\n }\n },\n onArrowDownKey(event) {\n const optionIndex = this.focusedOptionIndex !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex) : this.findFirstFocusedOptionIndex();\n\n if (this.multiple && event.shiftKey) {\n this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n }\n\n this.changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n },\n onArrowUpKey(event) {\n const optionIndex = this.focusedOptionIndex !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex) : this.findLastFocusedOptionIndex();\n\n if (this.multiple && event.shiftKey) {\n this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n }\n\n this.changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n },\n onArrowLeftKey(event, pressedInInputText = false) {\n pressedInInputText && (this.focusedOptionIndex = -1);\n },\n onHomeKey(event, pressedInInputText = false) {\n if (pressedInInputText) {\n const target = event.currentTarget;\n\n if (event.shiftKey) {\n target.setSelectionRange(0, event.target.selectionStart);\n } else {\n target.setSelectionRange(0, 0);\n this.focusedOptionIndex = -1;\n }\n } else {\n let metaKey = event.metaKey || event.ctrlKey;\n let optionIndex = this.findFirstOptionIndex();\n\n if (this.multiple && event.shiftKey && metaKey) {\n this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n }\n\n this.changeFocusedOptionIndex(event, optionIndex);\n }\n\n event.preventDefault();\n },\n onEndKey(event, pressedInInputText = false) {\n if (pressedInInputText) {\n const target = event.currentTarget;\n\n if (event.shiftKey) {\n target.setSelectionRange(event.target.selectionStart, target.value.length);\n } else {\n const len = target.value.length;\n\n target.setSelectionRange(len, len);\n this.focusedOptionIndex = -1;\n }\n } else {\n let metaKey = event.metaKey || event.ctrlKey;\n let optionIndex = this.findLastOptionIndex();\n\n if (this.multiple && event.shiftKey && metaKey) {\n this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n }\n\n this.changeFocusedOptionIndex(event, optionIndex);\n }\n\n event.preventDefault();\n },\n onPageUpKey(event) {\n this.scrollInView(0);\n event.preventDefault();\n },\n onPageDownKey(event) {\n this.scrollInView(this.visibleOptions.length - 1);\n event.preventDefault();\n },\n onEnterKey(event) {\n if (this.focusedOptionIndex !== -1) {\n if (this.multiple && event.shiftKey) this.onOptionSelectRange(event, this.focusedOptionIndex);\n else this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n }\n },\n onSpaceKey(event) {\n event.preventDefault();\n this.onEnterKey(event);\n },\n onShiftKey() {\n this.startRangeIndex = this.focusedOptionIndex;\n },\n isOptionMatched(option) {\n return this.isValidOption(option) && typeof this.getOptionLabel(option) === 'string' && this.getOptionLabel(option)?.toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));\n },\n isValidOption(option) {\n return isNotEmpty(option) && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n },\n isValidSelectedOption(option) {\n return this.isValidOption(option) && this.isSelected(option);\n },\n isEquals(value1, value2) {\n return equals(value1, value2, this.equalityKey);\n },\n isSelected(option) {\n const optionValue = this.getOptionValue(option);\n\n if (this.multiple) return (this.d_value || []).some((value) => this.isEquals(value, optionValue));\n else return this.isEquals(this.d_value, optionValue);\n },\n findFirstOptionIndex() {\n return this.visibleOptions.findIndex((option) => this.isValidOption(option));\n },\n findLastOptionIndex() {\n return findLastIndex(this.visibleOptions, (option) => this.isValidOption(option));\n },\n findNextOptionIndex(index) {\n const matchedOptionIndex = index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n },\n findPrevOptionIndex(index) {\n const matchedOptionIndex = index > 0 ? findLastIndex(this.visibleOptions.slice(0, index), (option) => this.isValidOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n },\n findSelectedOptionIndex() {\n if (this.$filled) {\n if (this.multiple) {\n for (let index = this.d_value.length - 1; index >= 0; index--) {\n const value = this.d_value[index];\n const matchedOptionIndex = this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option) && this.isEquals(value, this.getOptionValue(option)));\n\n if (matchedOptionIndex > -1) return matchedOptionIndex;\n }\n } else {\n return this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option));\n }\n }\n\n return -1;\n },\n findFirstSelectedOptionIndex() {\n return this.$filled ? this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option)) : -1;\n },\n findLastSelectedOptionIndex() {\n return this.$filled ? findLastIndex(this.visibleOptions, (option) => this.isValidSelectedOption(option)) : -1;\n },\n findNextSelectedOptionIndex(index) {\n const matchedOptionIndex = this.$filled && index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidSelectedOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n },\n findPrevSelectedOptionIndex(index) {\n const matchedOptionIndex = this.$filled && index > 0 ? findLastIndex(this.visibleOptions.slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n },\n findNearestSelectedOptionIndex(index, firstCheckUp = false) {\n let matchedOptionIndex = -1;\n\n if (this.$filled) {\n if (firstCheckUp) {\n matchedOptionIndex = this.findPrevSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;\n } else {\n matchedOptionIndex = this.findNextSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n }\n }\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n },\n findFirstFocusedOptionIndex() {\n const selectedIndex = this.findFirstSelectedOptionIndex();\n\n return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n },\n findLastFocusedOptionIndex() {\n const selectedIndex = this.findLastSelectedOptionIndex();\n\n return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n },\n searchOptions(event, char) {\n this.searchValue = (this.searchValue || '') + char;\n\n let optionIndex = -1;\n\n if (isNotEmpty(this.searchValue)) {\n if (this.focusedOptionIndex !== -1) {\n optionIndex = this.visibleOptions.slice(this.focusedOptionIndex).findIndex((option) => this.isOptionMatched(option));\n optionIndex = optionIndex === -1 ? this.visibleOptions.slice(0, this.focusedOptionIndex).findIndex((option) => this.isOptionMatched(option)) : optionIndex + this.focusedOptionIndex;\n } else {\n optionIndex = this.visibleOptions.findIndex((option) => this.isOptionMatched(option));\n }\n\n if (optionIndex === -1 && this.focusedOptionIndex === -1) {\n optionIndex = this.findFirstFocusedOptionIndex();\n }\n\n if (optionIndex !== -1) {\n this.changeFocusedOptionIndex(event, optionIndex);\n }\n }\n\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n\n this.searchTimeout = setTimeout(() => {\n this.searchValue = '';\n this.searchTimeout = null;\n }, 500);\n },\n removeOption(option) {\n return this.d_value.filter((val) => !equals(val, this.getOptionValue(option), this.equalityKey));\n },\n changeFocusedOptionIndex(event, index) {\n if (this.focusedOptionIndex !== index) {\n this.focusedOptionIndex = index;\n this.scrollInView();\n\n if (this.selectOnFocus && !this.multiple) {\n this.onOptionSelect(event, this.visibleOptions[index]);\n }\n }\n },\n scrollInView(index = -1) {\n this.$nextTick(() => {\n const id = index !== -1 ? `${this.$id}_${index}` : this.focusedOptionId;\n const element = findSingle(this.list, `li[id=\"${id}\"]`);\n\n if (element) {\n element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n } else if (!this.virtualScrollerDisabled) {\n this.virtualScroller && this.virtualScroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex);\n }\n });\n },\n autoUpdateModel() {\n if (this.selectOnFocus && this.autoOptionFocus && !this.$filled && !this.multiple && this.focused) {\n this.focusedOptionIndex = this.findFirstFocusedOptionIndex();\n this.onOptionSelect(null, this.visibleOptions[this.focusedOptionIndex]);\n }\n },\n updateModel(event, value) {\n this.writeValue(value, event);\n this.$emit('change', { originalEvent: event, value });\n },\n listRef(el, contentRef) {\n this.list = el;\n contentRef && contentRef(el); // For VirtualScroller\n },\n virtualScrollerRef(el) {\n this.virtualScroller = el;\n }\n },\n computed: {\n optionsListFlat() {\n return this.filterValue ? FilterService.filter(this.options, this.searchFields, this.filterValue, this.filterMatchMode, this.filterLocale) : this.options;\n },\n optionsListGroup() {\n const filteredOptions = [];\n\n (this.options || []).forEach((optionGroup) => {\n const optionGroupChildren = this.getOptionGroupChildren(optionGroup) || [];\n const filteredChildren = this.filterValue ? FilterService.filter(optionGroupChildren, this.searchFields, this.filterValue, this.filterMatchMode, this.filterLocale) : optionGroupChildren;\n\n if (filteredChildren?.length) {\n filteredOptions.push({ optionGroup, group: true }, ...filteredChildren);\n }\n });\n\n return filteredOptions;\n },\n visibleOptions() {\n return this.optionGroupLabel ? this.optionsListGroup : this.optionsListFlat;\n },\n // @deprecated use $filled instead\n hasSelectedOption() {\n return isNotEmpty(this.d_value);\n },\n equalityKey() {\n return this.optionValue ? null : this.dataKey;\n },\n searchFields() {\n return this.filterFields || [this.optionLabel];\n },\n filterResultMessageText() {\n return isNotEmpty(this.visibleOptions) ? this.filterMessageText.replaceAll('{0}', this.visibleOptions.length) : this.emptyFilterMessageText;\n },\n filterMessageText() {\n return this.filterMessage || this.$primevue.config.locale.searchMessage || '';\n },\n emptyFilterMessageText() {\n return this.emptyFilterMessage || this.$primevue.config.locale.emptySearchMessage || this.$primevue.config.locale.emptyFilterMessage || '';\n },\n emptyMessageText() {\n return this.emptyMessage || this.$primevue.config.locale.emptyMessage || '';\n },\n selectionMessageText() {\n return this.selectionMessage || this.$primevue.config.locale.selectionMessage || '';\n },\n emptySelectionMessageText() {\n return this.emptySelectionMessage || this.$primevue.config.locale.emptySelectionMessage || '';\n },\n selectedMessageText() {\n return this.$filled ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.d_value.length : '1') : this.emptySelectionMessageText;\n },\n focusedOptionId() {\n return this.focusedOptionIndex !== -1 ? `${this.$id}_${this.focusedOptionIndex}` : null;\n },\n ariaSetSize() {\n return this.visibleOptions.filter((option) => !this.isOptionGroup(option)).length;\n },\n virtualScrollerDisabled() {\n return !this.virtualScrollerOptions;\n },\n containerDataP() {\n return cn({\n invalid: this.$invalid,\n disabled: this.disabled\n });\n }\n },\n directives: {\n ripple: Ripple\n },\n components: {\n InputText,\n VirtualScroller,\n InputIcon,\n IconField,\n SearchIcon,\n CheckIcon,\n BlankIcon\n }\n};\n</script>\n"],"names":["name","BaseEditableHolder","props","options","Array","optionLabel","optionValue","optionDisabled","optionGroupLabel","optionGroupChildren","listStyle","scrollHeight","type","String","dataKey","multiple","Boolean","metaKeySelection","filter","filterPlaceholder","filterLocale","filterMatchMode","filterFields","virtualScrollerOptions","Object","autoOptionFocus","selectOnFocus","focusOnHover","highlightOnSelect","checkmark","filterMessage","selectionMessage","emptySelectionMessage","emptyFilterMessage","emptyMessage","filterIcon","undefined","striped","tabindex","Number","fluid","ariaLabel","ariaLabelledby","style","ListboxStyle","provide","$pcListbox","$parentInstance","BaseListbox","inheritAttrs","emits","list","virtualScroller","optionTouched","startRangeIndex","searchTimeout","searchValue","data","filterValue","focused","focusedOptionIndex","watch","autoUpdateModel","mounted","methods","getOptionIndex","index","fn","virtualScrollerDisabled","getOptionLabel","option","resolveFieldData","getOptionValue","getOptionRenderKey","getPTOptions","itemOptions","key","ptm","context","selected","isSelected","disabled","isOptionDisabled","isOptionGroup","optionGroup","group","getOptionGroupLabel","getOptionGroupChildren","getAriaPosInset","_this","visibleOptions","slice","length","onFirstHiddenFocus","focus","firstFocusableEl","getFirstFocusableElement","$el","$refs","lastHiddenFocusableElement","tabIndex","isElement","firstHiddenFocusableElement","onLastHiddenFocus","event","relatedTarget","onFocusout","contains","onListFocus","findFirstFocusedOptionIndex","findSelectedOptionIndex","scrollInView","$emit","onListBlur","onListKeyDown","_this2","metaKey","ctrlKey","code","onArrowDownKey","onArrowUpKey","onHomeKey","onEndKey","onPageDownKey","onPageUpKey","onSpaceKey","onShiftKey","value","isValidOption","map","updateModel","preventDefault","isPrintableCharacter","searchOptions","onOptionSelect","arguments","onOptionSelectMultiple","onOptionSelectSingle","onOptionMouseDown","changeFocusedOptionIndex","onOptionMouseMove","onOptionTouchEnd","onOptionDblClick","item","originalEvent","valueChanged","metaSelection","removeOption","d_value","concat","_toConsumableArray","onOptionSelectRange","_this3","start","end","findNearestSelectedOptionIndex","rangeStart","Math","min","rangeEnd","max","onFilterChange","target","onFilterKeyDown","onArrowLeftKey","onEnterKey","optionIndex","findNextOptionIndex","shiftKey","findPrevOptionIndex","findLastFocusedOptionIndex","pressedInInputText","currentTarget","setSelectionRange","selectionStart","findFirstOptionIndex","len","findLastOptionIndex","isOptionMatched","_this$getOptionLabel","toLocaleLowerCase","startsWith","isNotEmpty","isValidSelectedOption","isEquals","value1","value2","equals","equalityKey","_this4","some","_this5","findIndex","_this6","findLastIndex","_this7","matchedOptionIndex","_this8","_this9","$filled","_loop","v","_ret","findFirstSelectedOptionIndex","_this0","findLastSelectedOptionIndex","_this1","findNextSelectedOptionIndex","_this10","findPrevSelectedOptionIndex","_this11","firstCheckUp","selectedIndex","char","_this12","clearTimeout","setTimeout","_this13","val","_this14","$nextTick","id","$id","focusedOptionId","element","findSingle","scrollIntoView","block","inline","behavior","scrollToIndex","writeValue","listRef","el","contentRef","virtualScrollerRef","computed","optionsListFlat","FilterService","searchFields","optionsListGroup","_this15","filteredOptions","forEach","filteredChildren","push","apply","hasSelectedOption","filterResultMessageText","filterMessageText","replaceAll","emptyFilterMessageText","$primevue","config","locale","searchMessage","emptySearchMessage","emptyMessageText","selectionMessageText","emptySelectionMessageText","selectedMessageText","ariaSetSize","_this16","containerDataP","cn","invalid","$invalid","directives","ripple","Ripple","components","InputText","VirtualScroller","InputIcon","IconField","SearchIcon","CheckIcon","BlankIcon","_openBlock","_createElementBlock","_mergeProps","_ctx","cx","$options","ptmi","_createElementVNode","ref","role","onFocus","$slots","header","_renderSlot","_createVNode","_component_IconField","unstyled","pt","_component_InputText","$data","$event","placeholder","autocomplete","onInput","onKeydown","_component_InputIcon","_createBlock","_component_SearchIcon","_component_VirtualScroller","items","height","content","_withCtx","_ref","styleClass","getItemOptions","contentStyle","itemSize","onBlur","_Fragment","_renderList","i","_withDirectives","onClick","onMousedown","onMousemove","onTouchend","onDblclick","ref_for","_component_CheckIcon","_component_BlankIcon","_createTextVNode","_toDisplayString","loader","_ref2"],"mappings":"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"} |