{"version":3,"file":"index.mjs","sources":["../../src/select/BaseSelect.vue","../../src/select/Select.vue","../../src/select/Select.vue?vue&type=template&id=3766dda1&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport SelectStyle from 'primevue/select/style';\n\nexport default {\n    name: 'BaseSelect',\n    extends: BaseComponent,\n    props: {\n        modelValue: null,\n        options: Array,\n        optionLabel: [String, Function],\n        optionValue: [String, Function],\n        optionDisabled: [String, Function],\n        optionGroupLabel: [String, Function],\n        optionGroupChildren: [String, Function],\n        scrollHeight: {\n            type: String,\n            default: '14rem'\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        editable: Boolean,\n        placeholder: {\n            type: String,\n            default: null\n        },\n        variant: {\n            type: String,\n            default: null\n        },\n        invalid: {\n            type: Boolean,\n            default: false\n        },\n        disabled: {\n            type: Boolean,\n            default: false\n        },\n        dataKey: null,\n        showClear: {\n            type: Boolean,\n            default: false\n        },\n        fluid: {\n            type: Boolean,\n            default: null\n        },\n        inputId: {\n            type: String,\n            default: null\n        },\n        inputClass: {\n            type: [String, Object],\n            default: null\n        },\n        inputStyle: {\n            type: Object,\n            default: null\n        },\n        labelId: {\n            type: String,\n            default: null\n        },\n        labelClass: {\n            type: [String, Object],\n            default: null\n        },\n        labelStyle: {\n            type: Object,\n            default: null\n        },\n        panelClass: {\n            type: [String, Object],\n            default: null\n        },\n        overlayStyle: {\n            type: Object,\n            default: null\n        },\n        overlayClass: {\n            type: [String, Object],\n            default: null\n        },\n        panelStyle: {\n            type: Object,\n            default: null\n        },\n        appendTo: {\n            type: [String, Object],\n            default: 'body'\n        },\n        loading: {\n            type: Boolean,\n            default: false\n        },\n        clearIcon: {\n            type: String,\n            default: undefined\n        },\n        dropdownIcon: {\n            type: String,\n            default: undefined\n        },\n        filterIcon: {\n            type: String,\n            default: undefined\n        },\n        loadingIcon: {\n            type: String,\n            default: undefined\n        },\n        resetFilterOnHide: {\n            type: Boolean,\n            default: false\n        },\n        resetFilterOnClear: {\n            type: Boolean,\n            default: false\n        },\n        virtualScrollerOptions: {\n            type: Object,\n            default: null\n        },\n        autoOptionFocus: {\n            type: Boolean,\n            default: false\n        },\n        autoFilterFocus: {\n            type: Boolean,\n            default: false\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        tabindex: {\n            type: Number,\n            default: 0\n        },\n        ariaLabel: {\n            type: String,\n            default: null\n        },\n        ariaLabelledby: {\n            type: String,\n            default: null\n        }\n    },\n    style: SelectStyle,\n    provide() {\n        return {\n            $pcSelect: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <div ref=\"container\" :id=\"id\" :class=\"cx('root')\" @click=\"onContainerClick\" v-bind=\"ptmi('root')\">\n        <input\n            v-if=\"editable\"\n            ref=\"focusInput\"\n            :id=\"labelId || inputId\"\n            type=\"text\"\n            :class=\"[cx('label'), inputClass, labelClass]\"\n            :style=\"[inputStyle, labelStyle]\"\n            :value=\"editableInputValue\"\n            :placeholder=\"placeholder\"\n            :tabindex=\"!disabled ? tabindex : -1\"\n            :disabled=\"disabled\"\n            autocomplete=\"off\"\n            role=\"combobox\"\n            :aria-label=\"ariaLabel\"\n            :aria-labelledby=\"ariaLabelledby\"\n            aria-haspopup=\"listbox\"\n            :aria-expanded=\"overlayVisible\"\n            :aria-controls=\"id + '_list'\"\n            :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n            :aria-invalid=\"invalid || undefined\"\n            @focus=\"onFocus\"\n            @blur=\"onBlur\"\n            @keydown=\"onKeyDown\"\n            @input=\"onEditableInput\"\n            v-bind=\"ptm('label')\"\n        />\n        <span\n            v-else\n            ref=\"focusInput\"\n            :id=\"labelId || inputId\"\n            :class=\"[cx('label'), inputClass, labelClass]\"\n            :style=\"[inputStyle, labelStyle]\"\n            :tabindex=\"!disabled ? tabindex : -1\"\n            role=\"combobox\"\n            :aria-label=\"ariaLabel || (label === 'p-emptylabel' ? undefined : label)\"\n            :aria-labelledby=\"ariaLabelledby\"\n            aria-haspopup=\"listbox\"\n            :aria-expanded=\"overlayVisible\"\n            :aria-controls=\"id + '_list'\"\n            :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n            :aria-disabled=\"disabled\"\n            @focus=\"onFocus\"\n            @blur=\"onBlur\"\n            @keydown=\"onKeyDown\"\n            v-bind=\"ptm('label')\"\n        >\n            <slot name=\"value\" :value=\"modelValue\" :placeholder=\"placeholder\">{{ label === 'p-emptylabel' ? '&nbsp;' : label || 'empty' }}</slot>\n        </span>\n        <slot v-if=\"isClearIconVisible\" name=\"clearicon\" :class=\"cx('clearIcon')\" :clearCallback=\"onClearClick\">\n            <component :is=\"clearIcon ? 'i' : 'TimesIcon'\" ref=\"clearIcon\" :class=\"[cx('clearIcon'), clearIcon]\" @click=\"onClearClick\" v-bind=\"ptm('clearIcon')\" data-pc-section=\"clearicon\" />\n        </slot>\n        <div :class=\"cx('dropdown')\" v-bind=\"ptm('dropdown')\">\n            <slot v-if=\"loading\" name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n                <span v-if=\"loadingIcon\" :class=\"[cx('loadingIcon'), 'pi-spin', loadingIcon]\" aria-hidden=\"true\" v-bind=\"ptm('loadingIcon')\" />\n                <SpinnerIcon v-else :class=\"cx('loadingIcon')\" spin aria-hidden=\"true\" v-bind=\"ptm('loadingIcon')\" />\n            </slot>\n            <slot v-else name=\"dropdownicon\" :class=\"cx('dropdownIcon')\">\n                <component :is=\"dropdownIcon ? 'span' : 'ChevronDownIcon'\" :class=\"[cx('dropdownIcon'), dropdownIcon]\" aria-hidden=\"true\" v-bind=\"ptm('dropdownIcon')\" />\n            </slot>\n        </div>\n        <Portal :appendTo=\"appendTo\">\n            <transition name=\"p-connected-overlay\" @enter=\"onOverlayEnter\" @after-enter=\"onOverlayAfterEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"ptm('transition')\">\n                <div v-if=\"overlayVisible\" :ref=\"overlayRef\" :class=\"[cx('overlay'), panelClass, overlayClass]\" :style=\"[panelStyle, overlayStyle]\" @click=\"onOverlayClick\" @keydown=\"onOverlayKeyDown\" v-bind=\"ptm('overlay')\">\n                    <span\n                        ref=\"firstHiddenFocusableElementOnOverlay\"\n                        role=\"presentation\"\n                        aria-hidden=\"true\"\n                        class=\"p-hidden-accessible p-hidden-focusable\"\n                        :tabindex=\"0\"\n                        @focus=\"onFirstHiddenFocus\"\n                        v-bind=\"ptm('hiddenFirstFocusableEl')\"\n                        :data-p-hidden-accessible=\"true\"\n                        :data-p-hidden-focusable=\"true\"\n                    ></span>\n                    <slot name=\"header\" :value=\"modelValue\" :options=\"visibleOptions\"></slot>\n                    <div v-if=\"filter\" :class=\"cx('header')\" v-bind=\"ptm('header')\">\n                        <IconField :unstyled=\"unstyled\" :pt=\"ptm('pcFilterContainer')\">\n                            <InputText\n                                ref=\"filterInput\"\n                                type=\"text\"\n                                :value=\"filterValue\"\n                                @vue:mounted=\"onFilterUpdated\"\n                                @vue:updated=\"onFilterUpdated\"\n                                :class=\"cx('pcFilter')\"\n                                :placeholder=\"filterPlaceholder\"\n                                :variant=\"variant\"\n                                :unstyled=\"unstyled\"\n                                role=\"searchbox\"\n                                autocomplete=\"off\"\n                                :aria-owns=\"id + '_list'\"\n                                :aria-activedescendant=\"focusedOptionId\"\n                                @keydown=\"onFilterKeyDown\"\n                                @blur=\"onFilterBlur\"\n                                @input=\"onFilterChange\"\n                                :pt=\"ptm('pcFilter')\"\n                            />\n                            <InputIcon :unstyled=\"unstyled\" v-bind=\"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 : '' }\" v-bind=\"ptm('listContainer')\">\n                        <VirtualScroller :ref=\"virtualScrollerRef\" v-bind=\"virtualScrollerOptions\" :items=\"visibleOptions\" :style=\"{ height: scrollHeight }\" :tabindex=\"-1\" :disabled=\"virtualScrollerDisabled\" :pt=\"ptm('virtualScroller')\">\n                            <template v-slot:content=\"{ styleClass, contentRef, items, getItemOptions, contentStyle, itemSize }\">\n                                <ul :ref=\"(el) => listRef(el, contentRef)\" :id=\"id + '_list'\" :class=\"[cx('list'), styleClass]\" :style=\"contentStyle\" role=\"listbox\" v-bind=\"ptm('list')\">\n                                    <template v-for=\"(option, i) of items\" :key=\"getOptionRenderKey(option, getOptionIndex(i, getItemOptions))\">\n                                        <li\n                                            v-if=\"isOptionGroup(option)\"\n                                            :id=\"id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n                                            :class=\"cx('optionGroup')\"\n                                            role=\"option\"\n                                            v-bind=\"ptm('optionGroup')\"\n                                        >\n                                            <slot name=\"optiongroup\" :option=\"option.optionGroup\" :index=\"getOptionIndex(i, getItemOptions)\">\n                                                <span :class=\"cx('optionGroupLabel')\" v-bind=\"ptm('optionGroupLabel')\">{{ getOptionGroupLabel(option.optionGroup) }}</span>\n                                            </slot>\n                                        </li>\n                                        <li\n                                            v-else\n                                            :id=\"id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            v-ripple\n                                            :class=\"cx('option', { option, focusedOption: getOptionIndex(i, getItemOptions) })\"\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\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)\"\n                                            @mousemove=\"onOptionMouseMove($event, getOptionIndex(i, getItemOptions))\"\n                                            :data-p-selected=\"isSelected(option)\"\n                                            :data-p-focused=\"focusedOptionIndex === getOptionIndex(i, getItemOptions)\"\n                                            :data-p-disabled=\"isOptionDisabled(option)\"\n                                            v-bind=\"getPTItemOptions(option, getItemOptions, i, '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)\">\n                                                <span :class=\"cx('optionLabel')\" v-bind=\"ptm('optionLabel')\">{{ getOptionLabel(option) }}</span>\n                                            </slot>\n                                        </li>\n                                    </template>\n                                    <li v-if=\"filterValue && (!items || (items && items.length === 0))\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\" :data-p-hidden-accessible=\"true\">\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')\" :data-p-hidden-accessible=\"true\">\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=\"modelValue\" :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=\"lastHiddenFocusableElementOnOverlay\"\n                        role=\"presentation\"\n                        aria-hidden=\"true\"\n                        class=\"p-hidden-accessible p-hidden-focusable\"\n                        :tabindex=\"0\"\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            </transition>\n        </Portal>\n    </div>\n</template>\n\n<script>\nimport { absolutePosition, addStyle, findSingle, focus, getFirstFocusableElement, getFocusableElements, getLastFocusableElement, getOuterWidth, isAndroid, isTouchDevice, isVisible, relativePosition } from '@primeuix/utils/dom';\nimport { equals, findLastIndex, isEmpty, isNotEmpty, isPrintableCharacter, resolveFieldData } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { FilterService } from '@primevue/core/api';\nimport { ConnectedOverlayScrollHandler, UniqueComponentId } from '@primevue/core/utils';\nimport BlankIcon from '@primevue/icons/blank';\nimport CheckIcon from '@primevue/icons/check';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport SearchIcon from '@primevue/icons/search';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport TimesIcon from '@primevue/icons/times';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport Ripple from 'primevue/ripple';\nimport VirtualScroller from 'primevue/virtualscroller';\nimport BaseSelect from './BaseSelect.vue';\n\nexport default {\n    name: 'Select',\n    extends: BaseSelect,\n    inheritAttrs: false,\n    emits: ['update:modelValue', 'change', 'focus', 'blur', 'before-show', 'before-hide', 'show', 'hide', 'filter'],\n    inject: {\n        $pcFluid: { default: null }\n    },\n    outsideClickListener: null,\n    scrollHandler: null,\n    resizeListener: null,\n    labelClickListener: null,\n    overlay: null,\n    list: null,\n    virtualScroller: null,\n    searchTimeout: null,\n    searchValue: null,\n    isModelValueChanged: false,\n    data() {\n        return {\n            id: this.$attrs.id,\n            clicked: false,\n            focused: false,\n            focusedOptionIndex: -1,\n            filterValue: null,\n            overlayVisible: false\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        },\n        modelValue() {\n            this.isModelValueChanged = true;\n        },\n        options() {\n            this.autoUpdateModel();\n        }\n    },\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n        this.autoUpdateModel();\n        this.bindLabelClickListener();\n    },\n    updated() {\n        if (this.overlayVisible && this.isModelValueChanged) {\n            this.scrollInView(this.findSelectedOptionIndex());\n        }\n\n        this.isModelValueChanged = false;\n    },\n    beforeUnmount() {\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n        this.unbindLabelClickListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndex.clear(this.overlay);\n            this.overlay = null;\n        }\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) : option;\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        getPTItemOptions(option, itemOptions, index, key) {\n            return this.ptm(key, {\n                context: {\n                    option,\n                    index,\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        show(isFocus) {\n            this.$emit('before-show');\n            this.overlayVisible = true;\n            this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.editable ? -1 : this.findSelectedOptionIndex();\n\n            isFocus && focus(this.$refs.focusInput);\n        },\n        hide(isFocus) {\n            const _hide = () => {\n                this.$emit('before-hide');\n                this.overlayVisible = false;\n                this.clicked = false;\n                this.focusedOptionIndex = -1;\n                this.searchValue = '';\n\n                this.resetFilterOnHide && (this.filterValue = null);\n                isFocus && focus(this.$refs.focusInput);\n            };\n\n            setTimeout(() => {\n                _hide();\n            }, 0); // For ScreenReaders\n        },\n        onFocus(event) {\n            if (this.disabled) {\n                // For ScreenReaders\n                return;\n            }\n\n            this.focused = true;\n\n            if (this.overlayVisible) {\n                this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.editable ? -1 : this.findSelectedOptionIndex();\n                this.scrollInView(this.focusedOptionIndex);\n            }\n\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.focused = false;\n            this.focusedOptionIndex = -1;\n            this.searchValue = '';\n            this.$emit('blur', event);\n        },\n        onKeyDown(event) {\n            if (this.disabled || isAndroid()) {\n                event.preventDefault();\n\n                return;\n            }\n\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, this.editable);\n                    break;\n\n                case 'ArrowLeft':\n                case 'ArrowRight':\n                    this.onArrowLeftKey(event, this.editable);\n                    break;\n\n                case 'Home':\n                    this.onHomeKey(event, this.editable);\n                    break;\n\n                case 'End':\n                    this.onEndKey(event, this.editable);\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 'Space':\n                    this.onSpaceKey(event, this.editable);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                    this.onEnterKey(event);\n                    break;\n\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event);\n                    break;\n\n                case 'Backspace':\n                    this.onBackspaceKey(event, this.editable);\n                    break;\n\n                case 'ShiftLeft':\n                case 'ShiftRight':\n                    //NOOP\n                    break;\n\n                default:\n                    if (!metaKey && isPrintableCharacter(event.key)) {\n                        !this.overlayVisible && this.show();\n                        !this.editable && this.searchOptions(event, event.key);\n                    }\n\n                    break;\n            }\n\n            this.clicked = false;\n        },\n        onEditableInput(event) {\n            const value = event.target.value;\n\n            this.searchValue = '';\n            const matched = this.searchOptions(event, value);\n\n            !matched && (this.focusedOptionIndex = -1);\n\n            this.updateModel(event, value);\n\n            !this.overlayVisible && isNotEmpty(value) && this.show();\n        },\n        onContainerClick(event) {\n            if (this.disabled || this.loading) {\n                return;\n            }\n\n            if (event.target.tagName === 'INPUT' || event.target.getAttribute('data-pc-section') === 'clearicon' || event.target.closest('[data-pc-section=\"clearicon\"]')) {\n                return;\n            } else if (!this.overlay || !this.overlay.contains(event.target)) {\n                this.overlayVisible ? this.hide(true) : this.show(true);\n            }\n\n            this.clicked = true;\n        },\n        onClearClick(event) {\n            this.updateModel(event, null);\n            this.resetFilterOnClear && (this.filterValue = null);\n        },\n        onFirstHiddenFocus(event) {\n            const focusableEl = event.relatedTarget === this.$refs.focusInput ? getFirstFocusableElement(this.overlay, ':not([data-p-hidden-focusable=\"true\"])') : this.$refs.focusInput;\n\n            focus(focusableEl);\n        },\n        onLastHiddenFocus(event) {\n            const focusableEl = event.relatedTarget === this.$refs.focusInput ? getLastFocusableElement(this.overlay, ':not([data-p-hidden-focusable=\"true\"])') : this.$refs.focusInput;\n\n            focus(focusableEl);\n        },\n        onOptionSelect(event, option, isHide = true) {\n            const value = this.getOptionValue(option);\n\n            this.updateModel(event, value);\n            isHide && this.hide(true);\n        },\n        onOptionMouseMove(event, index) {\n            if (this.focusOnHover) {\n                this.changeFocusedOptionIndex(event, index);\n            }\n        },\n        onFilterChange(event) {\n            const value = event.target.value;\n\n            this.filterValue = value;\n            this.focusedOptionIndex = -1;\n            this.$emit('filter', { originalEvent: event, value });\n\n            !this.virtualScrollerDisabled && this.virtualScroller.scrollToIndex(0);\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, true);\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 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event, true);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onFilterBlur() {\n            this.focusedOptionIndex = -1;\n        },\n        onFilterUpdated() {\n            if (this.overlayVisible) {\n                this.alignOverlay();\n            }\n        },\n        onOverlayClick(event) {\n            OverlayEventBus.emit('overlay-click', {\n                originalEvent: event,\n                target: this.$el\n            });\n        },\n        onOverlayKeyDown(event) {\n            switch (event.code) {\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            if (!this.overlayVisible) {\n                this.show();\n                this.editable && this.changeFocusedOptionIndex(event, this.findSelectedOptionIndex());\n            } else {\n                const optionIndex = this.focusedOptionIndex !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex) : this.clicked ? this.findFirstOptionIndex() : this.findFirstFocusedOptionIndex();\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n            }\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event, pressedInInputText = false) {\n            if (event.altKey && !pressedInInputText) {\n                if (this.focusedOptionIndex !== -1) {\n                    this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                }\n\n                this.overlayVisible && this.hide();\n                event.preventDefault();\n            } else {\n                const optionIndex = this.focusedOptionIndex !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex) : this.clicked ? this.findLastOptionIndex() : this.findLastFocusedOptionIndex();\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                !this.overlayVisible && this.show();\n                event.preventDefault();\n            }\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                this.changeFocusedOptionIndex(event, this.findFirstOptionIndex());\n\n                !this.overlayVisible && this.show();\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                this.changeFocusedOptionIndex(event, this.findLastOptionIndex());\n\n                !this.overlayVisible && this.show();\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.overlayVisible) {\n                this.focusedOptionIndex = -1; // reset\n                this.onArrowDownKey(event);\n            } else {\n                if (this.focusedOptionIndex !== -1) {\n                    this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                }\n\n                this.hide();\n            }\n\n            event.preventDefault();\n        },\n        onSpaceKey(event, pressedInInputText = false) {\n            !pressedInInputText && this.onEnterKey(event);\n        },\n        onEscapeKey(event) {\n            this.overlayVisible && this.hide(true);\n            event.preventDefault();\n            event.stopPropagation(); //@todo will be changed next versionss\n        },\n        onTabKey(event, pressedInInputText = false) {\n            if (!pressedInInputText) {\n                if (this.overlayVisible && this.hasFocusableElements()) {\n                    focus(this.$refs.firstHiddenFocusableElementOnOverlay);\n\n                    event.preventDefault();\n                } else {\n                    if (this.focusedOptionIndex !== -1) {\n                        this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                    }\n\n                    this.overlayVisible && this.hide(this.filter);\n                }\n            }\n        },\n        onBackspaceKey(event, pressedInInputText = false) {\n            if (pressedInInputText) {\n                !this.overlayVisible && this.show();\n            }\n        },\n        onOverlayEnter(el) {\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n\n            addStyle(el, { position: 'absolute', top: '0', left: '0' });\n            this.alignOverlay();\n            this.scrollInView();\n\n            this.autoFilterFocus && focus(this.$refs.filterInput.$el);\n        },\n        onOverlayAfterEnter() {\n            this.bindOutsideClickListener();\n            this.bindScrollListener();\n            this.bindResizeListener();\n\n            this.$emit('show');\n        },\n        onOverlayLeave() {\n            this.unbindOutsideClickListener();\n            this.unbindScrollListener();\n            this.unbindResizeListener();\n\n            this.$emit('hide');\n            this.overlay = null;\n        },\n        onOverlayAfterLeave(el) {\n            ZIndex.clear(el);\n        },\n        alignOverlay() {\n            if (this.appendTo === 'self') {\n                relativePosition(this.overlay, this.$el);\n            } else {\n                this.overlay.style.minWidth = getOuterWidth(this.$el) + 'px';\n                absolutePosition(this.overlay, this.$el);\n            }\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    if (this.overlayVisible && this.overlay && !this.$el.contains(event.target) && !this.overlay.contains(event.target)) {\n                        this.hide();\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener);\n                this.outsideClickListener = null;\n            }\n        },\n        bindScrollListener() {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.container, () => {\n                    if (this.overlayVisible) {\n                        this.hide();\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        },\n        unbindScrollListener() {\n            if (this.scrollHandler) {\n                this.scrollHandler.unbindScrollListener();\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        },\n        bindLabelClickListener() {\n            if (!this.editable && !this.labelClickListener) {\n                const label = document.querySelector(`label[for=\"${this.inputId}\"]`);\n\n                if (label && isVisible(label)) {\n                    this.labelClickListener = () => {\n                        focus(this.$refs.focusInput);\n                    };\n\n                    label.addEventListener('click', this.labelClickListener);\n                }\n            }\n        },\n        unbindLabelClickListener() {\n            if (this.labelClickListener) {\n                const label = document.querySelector(`label[for=\"${this.inputId}\"]`);\n\n                if (label && isVisible(label)) {\n                    label.removeEventListener('click', this.labelClickListener);\n                }\n            }\n        },\n        hasFocusableElements() {\n            return getFocusableElements(this.overlay, ':not([data-p-hidden-focusable=\"true\"])').length > 0;\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        isSelected(option) {\n            return this.isValidOption(option) && equals(this.modelValue, this.getOptionValue(option), this.equalityKey);\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            return this.hasSelectedOption ? this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option)) : -1;\n        },\n        findFirstFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\n\n            return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n        },\n        findLastFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\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            let matched = false;\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) {\n                    matched = true;\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            return matched;\n        },\n        changeFocusedOptionIndex(event, index) {\n            if (this.focusedOptionIndex !== index) {\n                this.focusedOptionIndex = index;\n                this.scrollInView();\n\n                if (this.selectOnFocus) {\n                    this.onOptionSelect(event, this.visibleOptions[index], false);\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: 'start' });\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.hasSelectedOption) {\n                this.focusedOptionIndex = this.findFirstFocusedOptionIndex();\n                this.onOptionSelect(null, this.visibleOptions[this.focusedOptionIndex], false);\n            }\n        },\n        updateModel(event, value) {\n            this.$emit('update:modelValue', value);\n            this.$emit('change', { originalEvent: event, value });\n        },\n        flatOptions(options) {\n            return (options || []).reduce((result, option, index) => {\n                result.push({ optionGroup: option, group: true, index });\n\n                const optionGroupChildren = this.getOptionGroupChildren(option);\n\n                optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));\n\n                return result;\n            }, []);\n        },\n        overlayRef(el) {\n            this.overlay = el;\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        visibleOptions() {\n            const options = this.optionGroupLabel ? this.flatOptions(this.options) : this.options || [];\n\n            if (this.filterValue) {\n                const filteredOptions = FilterService.filter(options, this.searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n\n                if (this.optionGroupLabel) {\n                    const optionGroups = this.options || [];\n                    const filtered = [];\n\n                    optionGroups.forEach((group) => {\n                        const groupChildren = this.getOptionGroupChildren(group);\n                        const filteredItems = groupChildren.filter((item) => filteredOptions.includes(item));\n\n                        if (filteredItems.length > 0) filtered.push({ ...group, [typeof this.optionGroupChildren === 'string' ? this.optionGroupChildren : 'items']: [...filteredItems] });\n                    });\n\n                    return this.flatOptions(filtered);\n                }\n\n                return filteredOptions;\n            }\n\n            return options;\n        },\n        hasSelectedOption() {\n            return isNotEmpty(this.modelValue);\n        },\n        label() {\n            const selectedOptionIndex = this.findSelectedOptionIndex();\n\n            return selectedOptionIndex !== -1 ? this.getOptionLabel(this.visibleOptions[selectedOptionIndex]) : this.placeholder || 'p-emptylabel';\n        },\n        editableInputValue() {\n            const selectedOptionIndex = this.findSelectedOptionIndex();\n\n            return selectedOptionIndex !== -1 ? this.getOptionLabel(this.visibleOptions[selectedOptionIndex]) : this.modelValue || '';\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.hasSelectedOption ? this.selectionMessageText.replaceAll('{0}', '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        isClearIconVisible() {\n            return this.showClear && this.modelValue != null && isNotEmpty(this.options);\n        },\n        virtualScrollerDisabled() {\n            return !this.virtualScrollerOptions;\n        },\n        hasFluid() {\n            return isEmpty(this.fluid) ? !!this.$pcFluid : this.fluid;\n        }\n    },\n    directives: {\n        ripple: Ripple\n    },\n    components: {\n        InputText,\n        VirtualScroller,\n        Portal,\n        InputIcon,\n        IconField,\n        TimesIcon,\n        ChevronDownIcon,\n        SpinnerIcon,\n        SearchIcon,\n        CheckIcon,\n        BlankIcon\n    }\n};\n</script>\n","<template>\n    <div ref=\"container\" :id=\"id\" :class=\"cx('root')\" @click=\"onContainerClick\" v-bind=\"ptmi('root')\">\n        <input\n            v-if=\"editable\"\n            ref=\"focusInput\"\n            :id=\"labelId || inputId\"\n            type=\"text\"\n            :class=\"[cx('label'), inputClass, labelClass]\"\n            :style=\"[inputStyle, labelStyle]\"\n            :value=\"editableInputValue\"\n            :placeholder=\"placeholder\"\n            :tabindex=\"!disabled ? tabindex : -1\"\n            :disabled=\"disabled\"\n            autocomplete=\"off\"\n            role=\"combobox\"\n            :aria-label=\"ariaLabel\"\n            :aria-labelledby=\"ariaLabelledby\"\n            aria-haspopup=\"listbox\"\n            :aria-expanded=\"overlayVisible\"\n            :aria-controls=\"id + '_list'\"\n            :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n            :aria-invalid=\"invalid || undefined\"\n            @focus=\"onFocus\"\n            @blur=\"onBlur\"\n            @keydown=\"onKeyDown\"\n            @input=\"onEditableInput\"\n            v-bind=\"ptm('label')\"\n        />\n        <span\n            v-else\n            ref=\"focusInput\"\n            :id=\"labelId || inputId\"\n            :class=\"[cx('label'), inputClass, labelClass]\"\n            :style=\"[inputStyle, labelStyle]\"\n            :tabindex=\"!disabled ? tabindex : -1\"\n            role=\"combobox\"\n            :aria-label=\"ariaLabel || (label === 'p-emptylabel' ? undefined : label)\"\n            :aria-labelledby=\"ariaLabelledby\"\n            aria-haspopup=\"listbox\"\n            :aria-expanded=\"overlayVisible\"\n            :aria-controls=\"id + '_list'\"\n            :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n            :aria-disabled=\"disabled\"\n            @focus=\"onFocus\"\n            @blur=\"onBlur\"\n            @keydown=\"onKeyDown\"\n            v-bind=\"ptm('label')\"\n        >\n            <slot name=\"value\" :value=\"modelValue\" :placeholder=\"placeholder\">{{ label === 'p-emptylabel' ? '&nbsp;' : label || 'empty' }}</slot>\n        </span>\n        <slot v-if=\"isClearIconVisible\" name=\"clearicon\" :class=\"cx('clearIcon')\" :clearCallback=\"onClearClick\">\n            <component :is=\"clearIcon ? 'i' : 'TimesIcon'\" ref=\"clearIcon\" :class=\"[cx('clearIcon'), clearIcon]\" @click=\"onClearClick\" v-bind=\"ptm('clearIcon')\" data-pc-section=\"clearicon\" />\n        </slot>\n        <div :class=\"cx('dropdown')\" v-bind=\"ptm('dropdown')\">\n            <slot v-if=\"loading\" name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n                <span v-if=\"loadingIcon\" :class=\"[cx('loadingIcon'), 'pi-spin', loadingIcon]\" aria-hidden=\"true\" v-bind=\"ptm('loadingIcon')\" />\n                <SpinnerIcon v-else :class=\"cx('loadingIcon')\" spin aria-hidden=\"true\" v-bind=\"ptm('loadingIcon')\" />\n            </slot>\n            <slot v-else name=\"dropdownicon\" :class=\"cx('dropdownIcon')\">\n                <component :is=\"dropdownIcon ? 'span' : 'ChevronDownIcon'\" :class=\"[cx('dropdownIcon'), dropdownIcon]\" aria-hidden=\"true\" v-bind=\"ptm('dropdownIcon')\" />\n            </slot>\n        </div>\n        <Portal :appendTo=\"appendTo\">\n            <transition name=\"p-connected-overlay\" @enter=\"onOverlayEnter\" @after-enter=\"onOverlayAfterEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"ptm('transition')\">\n                <div v-if=\"overlayVisible\" :ref=\"overlayRef\" :class=\"[cx('overlay'), panelClass, overlayClass]\" :style=\"[panelStyle, overlayStyle]\" @click=\"onOverlayClick\" @keydown=\"onOverlayKeyDown\" v-bind=\"ptm('overlay')\">\n                    <span\n                        ref=\"firstHiddenFocusableElementOnOverlay\"\n                        role=\"presentation\"\n                        aria-hidden=\"true\"\n                        class=\"p-hidden-accessible p-hidden-focusable\"\n                        :tabindex=\"0\"\n                        @focus=\"onFirstHiddenFocus\"\n                        v-bind=\"ptm('hiddenFirstFocusableEl')\"\n                        :data-p-hidden-accessible=\"true\"\n                        :data-p-hidden-focusable=\"true\"\n                    ></span>\n                    <slot name=\"header\" :value=\"modelValue\" :options=\"visibleOptions\"></slot>\n                    <div v-if=\"filter\" :class=\"cx('header')\" v-bind=\"ptm('header')\">\n                        <IconField :unstyled=\"unstyled\" :pt=\"ptm('pcFilterContainer')\">\n                            <InputText\n                                ref=\"filterInput\"\n                                type=\"text\"\n                                :value=\"filterValue\"\n                                @vue:mounted=\"onFilterUpdated\"\n                                @vue:updated=\"onFilterUpdated\"\n                                :class=\"cx('pcFilter')\"\n                                :placeholder=\"filterPlaceholder\"\n                                :variant=\"variant\"\n                                :unstyled=\"unstyled\"\n                                role=\"searchbox\"\n                                autocomplete=\"off\"\n                                :aria-owns=\"id + '_list'\"\n                                :aria-activedescendant=\"focusedOptionId\"\n                                @keydown=\"onFilterKeyDown\"\n                                @blur=\"onFilterBlur\"\n                                @input=\"onFilterChange\"\n                                :pt=\"ptm('pcFilter')\"\n                            />\n                            <InputIcon :unstyled=\"unstyled\" v-bind=\"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 : '' }\" v-bind=\"ptm('listContainer')\">\n                        <VirtualScroller :ref=\"virtualScrollerRef\" v-bind=\"virtualScrollerOptions\" :items=\"visibleOptions\" :style=\"{ height: scrollHeight }\" :tabindex=\"-1\" :disabled=\"virtualScrollerDisabled\" :pt=\"ptm('virtualScroller')\">\n                            <template v-slot:content=\"{ styleClass, contentRef, items, getItemOptions, contentStyle, itemSize }\">\n                                <ul :ref=\"(el) => listRef(el, contentRef)\" :id=\"id + '_list'\" :class=\"[cx('list'), styleClass]\" :style=\"contentStyle\" role=\"listbox\" v-bind=\"ptm('list')\">\n                                    <template v-for=\"(option, i) of items\" :key=\"getOptionRenderKey(option, getOptionIndex(i, getItemOptions))\">\n                                        <li\n                                            v-if=\"isOptionGroup(option)\"\n                                            :id=\"id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n                                            :class=\"cx('optionGroup')\"\n                                            role=\"option\"\n                                            v-bind=\"ptm('optionGroup')\"\n                                        >\n                                            <slot name=\"optiongroup\" :option=\"option.optionGroup\" :index=\"getOptionIndex(i, getItemOptions)\">\n                                                <span :class=\"cx('optionGroupLabel')\" v-bind=\"ptm('optionGroupLabel')\">{{ getOptionGroupLabel(option.optionGroup) }}</span>\n                                            </slot>\n                                        </li>\n                                        <li\n                                            v-else\n                                            :id=\"id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            v-ripple\n                                            :class=\"cx('option', { option, focusedOption: getOptionIndex(i, getItemOptions) })\"\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\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)\"\n                                            @mousemove=\"onOptionMouseMove($event, getOptionIndex(i, getItemOptions))\"\n                                            :data-p-selected=\"isSelected(option)\"\n                                            :data-p-focused=\"focusedOptionIndex === getOptionIndex(i, getItemOptions)\"\n                                            :data-p-disabled=\"isOptionDisabled(option)\"\n                                            v-bind=\"getPTItemOptions(option, getItemOptions, i, '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)\">\n                                                <span :class=\"cx('optionLabel')\" v-bind=\"ptm('optionLabel')\">{{ getOptionLabel(option) }}</span>\n                                            </slot>\n                                        </li>\n                                    </template>\n                                    <li v-if=\"filterValue && (!items || (items && items.length === 0))\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\" :data-p-hidden-accessible=\"true\">\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')\" :data-p-hidden-accessible=\"true\">\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=\"modelValue\" :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=\"lastHiddenFocusableElementOnOverlay\"\n                        role=\"presentation\"\n                        aria-hidden=\"true\"\n                        class=\"p-hidden-accessible p-hidden-focusable\"\n                        :tabindex=\"0\"\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            </transition>\n        </Portal>\n    </div>\n</template>\n\n<script>\nimport { absolutePosition, addStyle, findSingle, focus, getFirstFocusableElement, getFocusableElements, getLastFocusableElement, getOuterWidth, isAndroid, isTouchDevice, isVisible, relativePosition } from '@primeuix/utils/dom';\nimport { equals, findLastIndex, isEmpty, isNotEmpty, isPrintableCharacter, resolveFieldData } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { FilterService } from '@primevue/core/api';\nimport { ConnectedOverlayScrollHandler, UniqueComponentId } from '@primevue/core/utils';\nimport BlankIcon from '@primevue/icons/blank';\nimport CheckIcon from '@primevue/icons/check';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport SearchIcon from '@primevue/icons/search';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport TimesIcon from '@primevue/icons/times';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport Ripple from 'primevue/ripple';\nimport VirtualScroller from 'primevue/virtualscroller';\nimport BaseSelect from './BaseSelect.vue';\n\nexport default {\n    name: 'Select',\n    extends: BaseSelect,\n    inheritAttrs: false,\n    emits: ['update:modelValue', 'change', 'focus', 'blur', 'before-show', 'before-hide', 'show', 'hide', 'filter'],\n    inject: {\n        $pcFluid: { default: null }\n    },\n    outsideClickListener: null,\n    scrollHandler: null,\n    resizeListener: null,\n    labelClickListener: null,\n    overlay: null,\n    list: null,\n    virtualScroller: null,\n    searchTimeout: null,\n    searchValue: null,\n    isModelValueChanged: false,\n    data() {\n        return {\n            id: this.$attrs.id,\n            clicked: false,\n            focused: false,\n            focusedOptionIndex: -1,\n            filterValue: null,\n            overlayVisible: false\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        },\n        modelValue() {\n            this.isModelValueChanged = true;\n        },\n        options() {\n            this.autoUpdateModel();\n        }\n    },\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n        this.autoUpdateModel();\n        this.bindLabelClickListener();\n    },\n    updated() {\n        if (this.overlayVisible && this.isModelValueChanged) {\n            this.scrollInView(this.findSelectedOptionIndex());\n        }\n\n        this.isModelValueChanged = false;\n    },\n    beforeUnmount() {\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n        this.unbindLabelClickListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndex.clear(this.overlay);\n            this.overlay = null;\n        }\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) : option;\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        getPTItemOptions(option, itemOptions, index, key) {\n            return this.ptm(key, {\n                context: {\n                    option,\n                    index,\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        show(isFocus) {\n            this.$emit('before-show');\n            this.overlayVisible = true;\n            this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.editable ? -1 : this.findSelectedOptionIndex();\n\n            isFocus && focus(this.$refs.focusInput);\n        },\n        hide(isFocus) {\n            const _hide = () => {\n                this.$emit('before-hide');\n                this.overlayVisible = false;\n                this.clicked = false;\n                this.focusedOptionIndex = -1;\n                this.searchValue = '';\n\n                this.resetFilterOnHide && (this.filterValue = null);\n                isFocus && focus(this.$refs.focusInput);\n            };\n\n            setTimeout(() => {\n                _hide();\n            }, 0); // For ScreenReaders\n        },\n        onFocus(event) {\n            if (this.disabled) {\n                // For ScreenReaders\n                return;\n            }\n\n            this.focused = true;\n\n            if (this.overlayVisible) {\n                this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : this.editable ? -1 : this.findSelectedOptionIndex();\n                this.scrollInView(this.focusedOptionIndex);\n            }\n\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.focused = false;\n            this.focusedOptionIndex = -1;\n            this.searchValue = '';\n            this.$emit('blur', event);\n        },\n        onKeyDown(event) {\n            if (this.disabled || isAndroid()) {\n                event.preventDefault();\n\n                return;\n            }\n\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, this.editable);\n                    break;\n\n                case 'ArrowLeft':\n                case 'ArrowRight':\n                    this.onArrowLeftKey(event, this.editable);\n                    break;\n\n                case 'Home':\n                    this.onHomeKey(event, this.editable);\n                    break;\n\n                case 'End':\n                    this.onEndKey(event, this.editable);\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 'Space':\n                    this.onSpaceKey(event, this.editable);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                    this.onEnterKey(event);\n                    break;\n\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event);\n                    break;\n\n                case 'Backspace':\n                    this.onBackspaceKey(event, this.editable);\n                    break;\n\n                case 'ShiftLeft':\n                case 'ShiftRight':\n                    //NOOP\n                    break;\n\n                default:\n                    if (!metaKey && isPrintableCharacter(event.key)) {\n                        !this.overlayVisible && this.show();\n                        !this.editable && this.searchOptions(event, event.key);\n                    }\n\n                    break;\n            }\n\n            this.clicked = false;\n        },\n        onEditableInput(event) {\n            const value = event.target.value;\n\n            this.searchValue = '';\n            const matched = this.searchOptions(event, value);\n\n            !matched && (this.focusedOptionIndex = -1);\n\n            this.updateModel(event, value);\n\n            !this.overlayVisible && isNotEmpty(value) && this.show();\n        },\n        onContainerClick(event) {\n            if (this.disabled || this.loading) {\n                return;\n            }\n\n            if (event.target.tagName === 'INPUT' || event.target.getAttribute('data-pc-section') === 'clearicon' || event.target.closest('[data-pc-section=\"clearicon\"]')) {\n                return;\n            } else if (!this.overlay || !this.overlay.contains(event.target)) {\n                this.overlayVisible ? this.hide(true) : this.show(true);\n            }\n\n            this.clicked = true;\n        },\n        onClearClick(event) {\n            this.updateModel(event, null);\n            this.resetFilterOnClear && (this.filterValue = null);\n        },\n        onFirstHiddenFocus(event) {\n            const focusableEl = event.relatedTarget === this.$refs.focusInput ? getFirstFocusableElement(this.overlay, ':not([data-p-hidden-focusable=\"true\"])') : this.$refs.focusInput;\n\n            focus(focusableEl);\n        },\n        onLastHiddenFocus(event) {\n            const focusableEl = event.relatedTarget === this.$refs.focusInput ? getLastFocusableElement(this.overlay, ':not([data-p-hidden-focusable=\"true\"])') : this.$refs.focusInput;\n\n            focus(focusableEl);\n        },\n        onOptionSelect(event, option, isHide = true) {\n            const value = this.getOptionValue(option);\n\n            this.updateModel(event, value);\n            isHide && this.hide(true);\n        },\n        onOptionMouseMove(event, index) {\n            if (this.focusOnHover) {\n                this.changeFocusedOptionIndex(event, index);\n            }\n        },\n        onFilterChange(event) {\n            const value = event.target.value;\n\n            this.filterValue = value;\n            this.focusedOptionIndex = -1;\n            this.$emit('filter', { originalEvent: event, value });\n\n            !this.virtualScrollerDisabled && this.virtualScroller.scrollToIndex(0);\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, true);\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 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event, true);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onFilterBlur() {\n            this.focusedOptionIndex = -1;\n        },\n        onFilterUpdated() {\n            if (this.overlayVisible) {\n                this.alignOverlay();\n            }\n        },\n        onOverlayClick(event) {\n            OverlayEventBus.emit('overlay-click', {\n                originalEvent: event,\n                target: this.$el\n            });\n        },\n        onOverlayKeyDown(event) {\n            switch (event.code) {\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            if (!this.overlayVisible) {\n                this.show();\n                this.editable && this.changeFocusedOptionIndex(event, this.findSelectedOptionIndex());\n            } else {\n                const optionIndex = this.focusedOptionIndex !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex) : this.clicked ? this.findFirstOptionIndex() : this.findFirstFocusedOptionIndex();\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n            }\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event, pressedInInputText = false) {\n            if (event.altKey && !pressedInInputText) {\n                if (this.focusedOptionIndex !== -1) {\n                    this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                }\n\n                this.overlayVisible && this.hide();\n                event.preventDefault();\n            } else {\n                const optionIndex = this.focusedOptionIndex !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex) : this.clicked ? this.findLastOptionIndex() : this.findLastFocusedOptionIndex();\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                !this.overlayVisible && this.show();\n                event.preventDefault();\n            }\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                this.changeFocusedOptionIndex(event, this.findFirstOptionIndex());\n\n                !this.overlayVisible && this.show();\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                this.changeFocusedOptionIndex(event, this.findLastOptionIndex());\n\n                !this.overlayVisible && this.show();\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.overlayVisible) {\n                this.focusedOptionIndex = -1; // reset\n                this.onArrowDownKey(event);\n            } else {\n                if (this.focusedOptionIndex !== -1) {\n                    this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                }\n\n                this.hide();\n            }\n\n            event.preventDefault();\n        },\n        onSpaceKey(event, pressedInInputText = false) {\n            !pressedInInputText && this.onEnterKey(event);\n        },\n        onEscapeKey(event) {\n            this.overlayVisible && this.hide(true);\n            event.preventDefault();\n            event.stopPropagation(); //@todo will be changed next versionss\n        },\n        onTabKey(event, pressedInInputText = false) {\n            if (!pressedInInputText) {\n                if (this.overlayVisible && this.hasFocusableElements()) {\n                    focus(this.$refs.firstHiddenFocusableElementOnOverlay);\n\n                    event.preventDefault();\n                } else {\n                    if (this.focusedOptionIndex !== -1) {\n                        this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                    }\n\n                    this.overlayVisible && this.hide(this.filter);\n                }\n            }\n        },\n        onBackspaceKey(event, pressedInInputText = false) {\n            if (pressedInInputText) {\n                !this.overlayVisible && this.show();\n            }\n        },\n        onOverlayEnter(el) {\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n\n            addStyle(el, { position: 'absolute', top: '0', left: '0' });\n            this.alignOverlay();\n            this.scrollInView();\n\n            this.autoFilterFocus && focus(this.$refs.filterInput.$el);\n        },\n        onOverlayAfterEnter() {\n            this.bindOutsideClickListener();\n            this.bindScrollListener();\n            this.bindResizeListener();\n\n            this.$emit('show');\n        },\n        onOverlayLeave() {\n            this.unbindOutsideClickListener();\n            this.unbindScrollListener();\n            this.unbindResizeListener();\n\n            this.$emit('hide');\n            this.overlay = null;\n        },\n        onOverlayAfterLeave(el) {\n            ZIndex.clear(el);\n        },\n        alignOverlay() {\n            if (this.appendTo === 'self') {\n                relativePosition(this.overlay, this.$el);\n            } else {\n                this.overlay.style.minWidth = getOuterWidth(this.$el) + 'px';\n                absolutePosition(this.overlay, this.$el);\n            }\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    if (this.overlayVisible && this.overlay && !this.$el.contains(event.target) && !this.overlay.contains(event.target)) {\n                        this.hide();\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener);\n                this.outsideClickListener = null;\n            }\n        },\n        bindScrollListener() {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.container, () => {\n                    if (this.overlayVisible) {\n                        this.hide();\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        },\n        unbindScrollListener() {\n            if (this.scrollHandler) {\n                this.scrollHandler.unbindScrollListener();\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        },\n        bindLabelClickListener() {\n            if (!this.editable && !this.labelClickListener) {\n                const label = document.querySelector(`label[for=\"${this.inputId}\"]`);\n\n                if (label && isVisible(label)) {\n                    this.labelClickListener = () => {\n                        focus(this.$refs.focusInput);\n                    };\n\n                    label.addEventListener('click', this.labelClickListener);\n                }\n            }\n        },\n        unbindLabelClickListener() {\n            if (this.labelClickListener) {\n                const label = document.querySelector(`label[for=\"${this.inputId}\"]`);\n\n                if (label && isVisible(label)) {\n                    label.removeEventListener('click', this.labelClickListener);\n                }\n            }\n        },\n        hasFocusableElements() {\n            return getFocusableElements(this.overlay, ':not([data-p-hidden-focusable=\"true\"])').length > 0;\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        isSelected(option) {\n            return this.isValidOption(option) && equals(this.modelValue, this.getOptionValue(option), this.equalityKey);\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            return this.hasSelectedOption ? this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option)) : -1;\n        },\n        findFirstFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\n\n            return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n        },\n        findLastFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\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            let matched = false;\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) {\n                    matched = true;\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            return matched;\n        },\n        changeFocusedOptionIndex(event, index) {\n            if (this.focusedOptionIndex !== index) {\n                this.focusedOptionIndex = index;\n                this.scrollInView();\n\n                if (this.selectOnFocus) {\n                    this.onOptionSelect(event, this.visibleOptions[index], false);\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: 'start' });\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.hasSelectedOption) {\n                this.focusedOptionIndex = this.findFirstFocusedOptionIndex();\n                this.onOptionSelect(null, this.visibleOptions[this.focusedOptionIndex], false);\n            }\n        },\n        updateModel(event, value) {\n            this.$emit('update:modelValue', value);\n            this.$emit('change', { originalEvent: event, value });\n        },\n        flatOptions(options) {\n            return (options || []).reduce((result, option, index) => {\n                result.push({ optionGroup: option, group: true, index });\n\n                const optionGroupChildren = this.getOptionGroupChildren(option);\n\n                optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));\n\n                return result;\n            }, []);\n        },\n        overlayRef(el) {\n            this.overlay = el;\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        visibleOptions() {\n            const options = this.optionGroupLabel ? this.flatOptions(this.options) : this.options || [];\n\n            if (this.filterValue) {\n                const filteredOptions = FilterService.filter(options, this.searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n\n                if (this.optionGroupLabel) {\n                    const optionGroups = this.options || [];\n                    const filtered = [];\n\n                    optionGroups.forEach((group) => {\n                        const groupChildren = this.getOptionGroupChildren(group);\n                        const filteredItems = groupChildren.filter((item) => filteredOptions.includes(item));\n\n                        if (filteredItems.length > 0) filtered.push({ ...group, [typeof this.optionGroupChildren === 'string' ? this.optionGroupChildren : 'items']: [...filteredItems] });\n                    });\n\n                    return this.flatOptions(filtered);\n                }\n\n                return filteredOptions;\n            }\n\n            return options;\n        },\n        hasSelectedOption() {\n            return isNotEmpty(this.modelValue);\n        },\n        label() {\n            const selectedOptionIndex = this.findSelectedOptionIndex();\n\n            return selectedOptionIndex !== -1 ? this.getOptionLabel(this.visibleOptions[selectedOptionIndex]) : this.placeholder || 'p-emptylabel';\n        },\n        editableInputValue() {\n            const selectedOptionIndex = this.findSelectedOptionIndex();\n\n            return selectedOptionIndex !== -1 ? this.getOptionLabel(this.visibleOptions[selectedOptionIndex]) : this.modelValue || '';\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.hasSelectedOption ? this.selectionMessageText.replaceAll('{0}', '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        isClearIconVisible() {\n            return this.showClear && this.modelValue != null && isNotEmpty(this.options);\n        },\n        virtualScrollerDisabled() {\n            return !this.virtualScrollerOptions;\n        },\n        hasFluid() {\n            return isEmpty(this.fluid) ? !!this.$pcFluid : this.fluid;\n        }\n    },\n    directives: {\n        ripple: Ripple\n    },\n    components: {\n        InputText,\n        VirtualScroller,\n        Portal,\n        InputIcon,\n        IconField,\n        TimesIcon,\n        ChevronDownIcon,\n        SpinnerIcon,\n        SearchIcon,\n        CheckIcon,\n        BlankIcon\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","modelValue","options","Array","optionLabel","String","Function","optionValue","optionDisabled","optionGroupLabel","optionGroupChildren","scrollHeight","type","filter","Boolean","filterPlaceholder","filterLocale","filterMatchMode","filterFields","editable","placeholder","variant","invalid","disabled","dataKey","showClear","fluid","inputId","inputClass","Object","inputStyle","labelId","labelClass","labelStyle","panelClass","overlayStyle","overlayClass","panelStyle","appendTo","loading","clearIcon","undefined","dropdownIcon","filterIcon","loadingIcon","resetFilterOnHide","resetFilterOnClear","virtualScrollerOptions","autoOptionFocus","autoFilterFocus","selectOnFocus","focusOnHover","highlightOnSelect","checkmark","filterMessage","selectionMessage","emptySelectionMessage","emptyFilterMessage","emptyMessage","tabindex","Number","ariaLabel","ariaLabelledby","style","SelectStyle","provide","$pcSelect","$parentInstance","BaseSelect","inheritAttrs","emits","inject","$pcFluid","outsideClickListener","scrollHandler","resizeListener","labelClickListener","overlay","list","virtualScroller","searchTimeout","searchValue","isModelValueChanged","data","id","$attrs","clicked","focused","focusedOptionIndex","filterValue","overlayVisible","watch","$attrsId","newValue","UniqueComponentId","autoUpdateModel","mounted","bindLabelClickListener","updated","scrollInView","findSelectedOptionIndex","beforeUnmount","unbindOutsideClickListener","unbindResizeListener","unbindLabelClickListener","destroy","ZIndex","clear","methods","getOptionIndex","index","fn","virtualScrollerDisabled","getOptionLabel","option","resolveFieldData","getOptionValue","getOptionRenderKey","getPTItemOptions","itemOptions","key","ptm","context","selected","isSelected","isOptionDisabled","isOptionGroup","optionGroup","group","getOptionGroupLabel","getOptionGroupChildren","getAriaPosInset","_this","visibleOptions","slice","length","show","isFocus","$emit","findFirstFocusedOptionIndex","focus","$refs","focusInput","hide","_this2","_hide","setTimeout","onFocus","event","onBlur","onKeyDown","isAndroid","preventDefault","metaKey","ctrlKey","code","onArrowDownKey","onArrowUpKey","onArrowLeftKey","onHomeKey","onEndKey","onPageDownKey","onPageUpKey","onSpaceKey","onEnterKey","onEscapeKey","onTabKey","onBackspaceKey","isPrintableCharacter","searchOptions","onEditableInput","value","target","matched","updateModel","isNotEmpty","onContainerClick","tagName","getAttribute","closest","contains","onClearClick","onFirstHiddenFocus","focusableEl","relatedTarget","getFirstFocusableElement","onLastHiddenFocus","getLastFocusableElement","onOptionSelect","isHide","arguments","onOptionMouseMove","changeFocusedOptionIndex","onFilterChange","originalEvent","scrollToIndex","onFilterKeyDown","onFilterBlur","onFilterUpdated","alignOverlay","onOverlayClick","OverlayEventBus","emit","$el","onOverlayKeyDown","optionIndex","findNextOptionIndex","findFirstOptionIndex","pressedInInputText","altKey","findPrevOptionIndex","findLastOptionIndex","findLastFocusedOptionIndex","currentTarget","shiftKey","setSelectionRange","selectionStart","len","stopPropagation","hasFocusableElements","firstHiddenFocusableElementOnOverlay","onOverlayEnter","el","set","$primevue","config","zIndex","addStyle","position","top","left","filterInput","onOverlayAfterEnter","bindOutsideClickListener","bindScrollListener","bindResizeListener","onOverlayLeave","unbindScrollListener","onOverlayAfterLeave","relativePosition","minWidth","getOuterWidth","absolutePosition","_this3","document","addEventListener","removeEventListener","_this4","ConnectedOverlayScrollHandler","container","_this5","isTouchDevice","window","_this6","label","querySelector","concat","isVisible","getFocusableElements","isOptionMatched","_this$getOptionLabel","isValidOption","toLocaleLowerCase","startsWith","isValidSelectedOption","equals","equalityKey","_this7","findIndex","_this8","findLastIndex","_this9","matchedOptionIndex","_this10","_this11","hasSelectedOption","selectedIndex","char","_this12","clearTimeout","_this13","$nextTick","focusedOptionId","element","findSingle","scrollIntoView","block","inline","flatOptions","_this14","reduce","result","push","forEach","o","overlayRef","listRef","contentRef","virtualScrollerRef","computed","_this15","filteredOptions","FilterService","searchFields","optionGroups","filtered","groupChildren","filteredItems","item","includes","_objectSpread","_defineProperty","_toConsumableArray","selectedOptionIndex","editableInputValue","filterResultMessageText","filterMessageText","replaceAll","emptyFilterMessageText","locale","searchMessage","emptySearchMessage","emptyMessageText","selectionMessageText","emptySelectionMessageText","selectedMessageText","ariaSetSize","_this16","isClearIconVisible","hasFluid","isEmpty","directives","ripple","Ripple","components","InputText","VirtualScroller","Portal","InputIcon","IconField","TimesIcon","ChevronDownIcon","SpinnerIcon","SearchIcon","CheckIcon","BlankIcon","_openBlock","_createElementBlock","_mergeProps","ref","$data","_ctx","cx","onClick","$options","apply","ptmi","autocomplete","role","onKeydown","onInput","_hoisted_2","_renderSlot","$slots","_createTextVNode","_toDisplayString","clearCallback","_createBlock","_resolveDynamicComponent","_createElementVNode","_component_SpinnerIcon","spin","_createVNode","_component_Portal","_Transition","onEnter","onAfterEnter","onLeave","onAfterLeave","_component_IconField","unstyled","pt","_component_InputText","onVnodeMounted","onVnodeUpdated","_component_InputIcon","_component_SearchIcon","_component_VirtualScroller","items","content","_withCtx","_ref","styleClass","getItemOptions","contentStyle","itemSize","_Fragment","_renderList","i","height","_withDirectives","$event","onMousemove","_component_CheckIcon","_component_BlankIcon","loader","_ref2"],"mappings":"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"}