{"version":3,"file":"primeng-listbox.mjs","sources":["../../src/listbox/style/listboxstyle.ts","../../src/listbox/listbox.ts","../../src/listbox/primeng-listbox.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst theme = ({ dt }) => `\n.p-listbox {\n    background: ${dt('listbox.background')};\n    color: ${dt('listbox.color')};\n    border: 1px solid ${dt('listbox.border.color')};\n    border-radius: ${dt('listbox.border.radius')};\n    transition: background ${dt('listbox.transition.duration')}, color ${dt('listbox.transition.duration')}, border-color ${dt('listbox.transition.duration')},\n            box-shadow ${dt('listbox.transition.duration')}, outline-color ${dt('listbox.transition.duration')};\n    outline-color: transparent;\n    box-shadow: ${dt('listbox.shadow')};\n}\n\n.p-listbox.p-focus {\n    border-color: ${dt('listbox.focus.border.color')};\n    box-shadow: ${dt('listbox.focus.ring.shadow')};\n    outline: ${dt('listbox.focus.ring.width')} ${dt('listbox.focus.ring.style')} ${dt('listbox.focus.ring.color')};\n    outline-offset: ${dt('listbox.focus.ring.offset')};\n}\n\n.p-listbox.p-disabled {\n    opacity: 1;\n    background: ${dt('listbox.disabled.background')};\n    color: ${dt('listbox.disabled.color')};\n}\n\n.p-listbox.p-disabled .p-listbox-option {\n    color: ${dt('listbox.disabled.color')};\n}\n\n.p-listbox-header {\n    padding: ${dt('listbox.list.header.padding')};\n    display: flex;\n    align-items: center;\n}\n\n.p-listbox-header > * {\n    flex: 1 1 auto;\n}\n\n.p-listbox-header > .p-checkbox {\n    flex: 0 0 auto;\n}\n\n.p-listbox-filter {\n    width: 100%;\n}\n\n.p-listbox-list-container {\n    overflow: auto;\n}\n\n.p-listbox-list {\n    list-style-type: none;\n    margin: 0;\n    padding: ${dt('listbox.list.padding')};\n    outline: 0 none;\n    display: flex;\n    flex-direction: column;\n    gap: ${dt('listbox.list.gap')};\n}\n\n.p-listbox-option {\n    display: flex;\n    align-items: center;\n    cursor: pointer;\n    position: relative;\n    overflow: hidden;\n    padding: ${dt('listbox.option.padding')};\n    border: 0 none;\n    border-radius: ${dt('listbox.option.border.radius')};\n    color: ${dt('listbox.option.color')};\n    transition: background ${dt('listbox.transition.duration')}, color ${dt('listbox.transition.duration')}, border-color ${dt('listbox.transition.duration')},\n            box-shadow ${dt('listbox.transition.duration')}, outline-color ${dt('listbox.transition.duration')};\n}\n\n.p-listbox-striped li:nth-child(even of .p-listbox-option) {\n    background: ${dt('listbox.option.striped.background')};\n}\n\n.p-listbox .p-listbox-list .p-listbox-option.p-listbox-option-selected {\n    background: ${dt('listbox.option.selected.background')};\n    color: ${dt('listbox.option.selected.color')};\n}\n\n.p-listbox:not(.p-disabled) .p-listbox-option.p-listbox-option-selected.p-focus {\n    background: ${dt('listbox.option.selected.focus.background')};\n    color: ${dt('listbox.option.selected.focus.color')};\n}\n\n.p-listbox:not(.p-disabled) .p-listbox-option:not(.p-listbox-option-selected):not(.p-disabled).p-focus {\n    background: ${dt('listbox.option.focus.background')};\n    color: ${dt('listbox.option.focus.color')};\n}\n\n.p-listbox:not(.p-disabled) .p-listbox-option:not(.p-listbox-option-selected):not(.p-disabled):hover {\n    background: ${dt('listbox.option.focus.background')};\n    color: ${dt('listbox.option.focus.color')};\n}\n\n.p-listbox-option-check-icon {\n    position: relative;\n    margin-inline-start: ${dt('listbox.checkmark.gutter.start')};\n    margin-inline-end: ${dt('listbox.checkmark.gutter.end')};\n    color: ${dt('listbox.checkmark.color')};\n}\n\n.p-listbox-option-group {\n    margin: 0;\n    padding: ${dt('listbox.option.group.padding')};\n    color: ${dt('listbox.option.group.color')};\n    background: ${dt('listbox.option.group.background')};\n    font-weight: ${dt('listbox.option.group.font.weight')};\n}\n\n.p-listbox-empty-message {\n    padding: ${dt('listbox.empty.message.padding')};\n}\n\n/* For PrimeNG */\n\np-listbox.ng-invalid.ng-dirty > .p-listbox.p-component {\n    border-color: ${dt('listbox.invalid.border.color')};\n}\n`;\n\nconst classes = {\n    root: ({ props }) => [\n        'p-listbox p-component',\n        {\n            'p-listbox-striped': props.striped,\n            'p-disabled': props.disabled,\n            'p-invalid': props.invalid\n        }\n    ],\n    header: 'p-listbox-header',\n    pcFilter: 'p-listbox-filter',\n    listContainer: 'p-listbox-list-container',\n    list: 'p-listbox-list',\n    optionGroup: 'p-listbox-option-group',\n    option: ({ instance, props, option, index, getItemOptions }) => [\n        'p-listbox-option',\n        {\n            'p-listbox-option-selected': instance.isSelected(option) && props.highlightOnSelect,\n            'p-focus': instance.focusedOptionIndex === instance.getOptionIndex(index, getItemOptions),\n            'p-disabled': instance.isOptionDisabled(option)\n        }\n    ],\n    optionCheckIcon: 'p-listbox-option-check-icon',\n    optionBlankIcon: 'p-listbox-option-blank-icon',\n    emptyMessage: 'p-listbox-empty-message'\n};\n\n@Injectable()\nexport class ListBoxStyle extends BaseStyle {\n    name = 'listbox';\n\n    theme = theme;\n\n    classes = classes;\n}\n\n/**\n *\n * ListBox is used to select one or more values from a list of items.\n *\n * [Live Demo](https://www.primeng.org/listbox/)\n *\n * @module listboxstyle\n *\n */\nexport enum ListboxClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-listbox',\n    /**\n     * Class name of the header element\n     */\n    header = 'p-listbox-header',\n    /**\n     * Class name of the filter element\n     */\n    pcFilter = 'p-listbox-filter',\n    /**\n     * Class name of the list container element\n     */\n    listContainer = 'p-listbox-list-container',\n    /**\n     * Class name of the list element\n     */\n    list = 'p-listbox-list',\n    /**\n     * Class name of the option group element\n     */\n    optionGroup = 'p-listbox-option-group',\n    /**\n     * Class name of the option element\n     */\n    option = 'p-listbox-option',\n    /**\n     * Class name of the option check icon element\n     */\n    optionCheckIcon = 'p-listbox-option-check-icon',\n    /**\n     * Class name of the option blank icon element\n     */\n    optionBlankIcon = 'p-listbox-option-blank-icon',\n    /**\n     * Class name of the empty message element\n     */\n    emptyMessage = 'p-listbox-empty-message'\n}\n\nexport interface ListboxStyle extends BaseStyle {}\n","import { CDK_DRAG_CONFIG, CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    Input,\n    NgModule,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n    booleanAttribute,\n    computed,\n    forwardRef,\n    inject,\n    numberAttribute,\n    signal\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { equals, findLastIndex, findSingle, focus, getFirstFocusableElement, isEmpty, isNotEmpty, isPrintableCharacter, resolveFieldData, uuid } from '@primeuix/utils';\nimport { FilterService, Footer, Header, PrimeTemplate, ScrollerOptions, SharedModule } from 'primeng/api';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Checkbox } from 'primeng/checkbox';\nimport { IconField } from 'primeng/iconfield';\nimport { BlankIcon, CheckIcon, SearchIcon } from 'primeng/icons';\nimport { InputIcon } from 'primeng/inputicon';\nimport { InputText } from 'primeng/inputtext';\nimport { Ripple } from 'primeng/ripple';\nimport { Scroller, ScrollerLazyLoadEvent } from 'primeng/scroller';\nimport { Nullable } from 'primeng/ts-helpers';\nimport { Subscription } from 'rxjs';\nimport { ListboxChangeEvent, ListboxClickEvent, ListboxDoubleClickEvent, ListboxFilterEvent, ListboxFilterOptions, ListboxSelectAllChangeEvent } from './listbox.interface';\nimport { ListBoxStyle } from './style/listboxstyle';\n\nexport const LISTBOX_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Listbox),\n    multi: true\n};\n/**\n * ListBox is used to select one or more values from a list of items.\n * @group Components\n */\n@Component({\n    selector: 'p-listbox, p-listBox, p-list-box',\n    standalone: true,\n    imports: [CommonModule, Ripple, Scroller, InputIcon, SearchIcon, Checkbox, CheckIcon, IconField, InputText, BlankIcon, FormsModule, SharedModule, DragDropModule],\n    template: `\n        <div [attr.id]=\"id\" [ngClass]=\"containerClass\" [ngStyle]=\"style\" [class]=\"styleClass\" (focusout)=\"onFocusout($event)\">\n            <span #firstHiddenFocusableElement role=\"presentation\" class=\"p-hidden-accessible p-hidden-focusable\" [tabindex]=\"!disabled ? tabindex : -1\" (focus)=\"onFirstHiddenFocus($event)\" [attr.data-p-hidden-focusable]=\"true\"> </span>\n            <div class=\"p-listbox-header\" *ngIf=\"headerFacet || headerTemplate || _headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate || _headerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }\"></ng-container>\n            </div>\n            <div class=\"p-listbox-header\" *ngIf=\"(checkbox && multiple && showToggleAll) || filter\">\n                <div *ngIf=\"checkbox && multiple && showToggleAll\" class=\"p-checkbox p-component\" [ngClass]=\"{ 'p-checkbox-disabled': disabled }\" (click)=\"onToggleAll($event)\" (keydown)=\"onHeaderCheckboxKeyDown($event)\">\n                    <div class=\"p-hidden-accessible\" [attr.data-p-hidden-accessible]=\"true\">\n                        <input #headerchkbox type=\"checkbox\" readonly=\"readonly\" [attr.checked]=\"allSelected()\" [disabled]=\"disabled\" (focus)=\"onHeaderCheckboxFocus($event)\" (blur)=\"onHeaderCheckboxBlur()\" [attr.aria-label]=\"toggleAllAriaLabel\" />\n                    </div>\n                    <p-checkbox\n                        *ngIf=\"checkbox && multiple\"\n                        styleClass=\"p-listbox-option-check-icon\"\n                        [ngModel]=\"allSelected()\"\n                        [disabled]=\"disabled\"\n                        [tabindex]=\"-1\"\n                        [variant]=\"config.inputStyle() === 'filled' || config.inputVariant() === 'filled' ? 'filled' : 'outlined'\"\n                        [binary]=\"true\"\n                    >\n                        <ng-container *ngIf=\"checkIconTemplate || _checkIconTemplate\">\n                            <ng-template #icon>\n                                <ng-template *ngTemplateOutlet=\"checkIconTemplate || _checkIconTemplate; context: { $implicit: allSelected() }\"></ng-template>\n                            </ng-template>\n                        </ng-container>\n                    </p-checkbox>\n                </div>\n                <ng-container *ngIf=\"filterTemplate || _filterTemplate; else builtInFilterElement\">\n                    <ng-container *ngTemplateOutlet=\"filterTemplate || _filterTemplate; context: { options: filterOptions }\"></ng-container>\n                </ng-container>\n                <ng-template #builtInFilterElement>\n                    <div class=\"p-listbox-filter-container\" *ngIf=\"filter\">\n                        <p-iconfield>\n                            <input\n                                #filterInput\n                                pInputText\n                                type=\"text\"\n                                class=\"p-listbox-filter\"\n                                role=\"searchbox\"\n                                [value]=\"_filterValue() || ''\"\n                                [disabled]=\"disabled\"\n                                [attr.aria-owns]=\"id + '_list'\"\n                                [attr.aria-activedescendant]=\"focusedOptionId\"\n                                [attr.placeholder]=\"filterPlaceHolder\"\n                                [attr.aria-label]=\"ariaFilterLabel\"\n                                [tabindex]=\"!disabled && !focused ? tabindex : -1\"\n                                (input)=\"onFilterChange($event)\"\n                                (keydown)=\"onFilterKeyDown($event)\"\n                                (focus)=\"onFilterFocus($event)\"\n                                (blur)=\"onFilterBlur($event)\"\n                            />\n                            <p-inputicon>\n                                <SearchIcon *ngIf=\"!filterIconTemplate && !_filterIconTemplate\" [styleClass]=\"'p-listbox-filter-icon'\" [attr.aria-hidden]=\"true\" />\n                                <span *ngIf=\"filterIconTemplate || _filterIconTemplate\" class=\"p-listbox-filter-icon\" [attr.aria-hidden]=\"true\">\n                                    <ng-template *ngTemplateOutlet=\"filterIconTemplate || _filterIconTemplate\"></ng-template>\n                                </span>\n                            </p-inputicon>\n                        </p-iconfield>\n                    </div>\n                    <span role=\"status\" attr.aria-live=\"polite\" class=\"p-hidden-accessible\" [attr.data-p-hidden-accessible]=\"true\">\n                        {{ filterResultMessageText }}\n                    </span>\n                </ng-template>\n            </div>\n            <div [ngClass]=\"'p-listbox-list-container'\" #container [ngStyle]=\"listStyle\" [class]=\"listStyleClass\" [style.max-height]=\"virtualScroll ? 'auto' : scrollHeight || 'auto'\" [attr.tabindex]=\"!disabled && '0'\">\n                <p-scroller\n                    #scroller\n                    *ngIf=\"virtualScroll\"\n                    [items]=\"visibleOptions()\"\n                    [style]=\"{ height: scrollHeight }\"\n                    [itemSize]=\"virtualScrollItemSize\"\n                    [autoSize]=\"true\"\n                    [lazy]=\"lazy\"\n                    [options]=\"virtualScrollOptions\"\n                    (onLazyLoad)=\"onLazyLoad.emit($event)\"\n                    [tabindex]=\"scrollerTabIndex\"\n                >\n                    <ng-template #content let-items let-scrollerOptions=\"options\">\n                        <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: items, options: scrollerOptions }\"></ng-container>\n                    </ng-template>\n                    @if (loaderTemplate || _loaderTemplate) {\n                        <ng-template #loader let-scrollerOptions=\"options\">\n                            <ng-container *ngTemplateOutlet=\"loaderTemplate || _loaderTemplate; context: { options: scrollerOptions }\"></ng-container>\n                        </ng-template>\n                    }\n                </p-scroller>\n                <ng-container *ngIf=\"!virtualScroll\">\n                    <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: visibleOptions(), options: {} }\"></ng-container>\n                </ng-container>\n\n                <ng-template #buildInItems let-items let-scrollerOptions=\"options\">\n                    <ul\n                        #list\n                        class=\"p-listbox-list\"\n                        role=\"listbox\"\n                        [tabindex]=\"-1\"\n                        [attr.aria-multiselectable]=\"true\"\n                        [ngClass]=\"scrollerOptions.contentStyleClass\"\n                        [style]=\"scrollerOptions.contentStyle\"\n                        [attr.aria-activedescendant]=\"focused ? focusedOptionId : undefined\"\n                        [attr.aria-label]=\"ariaLabel\"\n                        [attr.aria-disabled]=\"disabled\"\n                        (focus)=\"onListFocus($event)\"\n                        (blur)=\"onListBlur($event)\"\n                        (keydown)=\"onListKeyDown($event)\"\n                        cdkDropList\n                        [cdkDropListData]=\"items\"\n                        (cdkDropListDropped)=\"drop($event)\"\n                    >\n                        <ng-template ngFor let-option [ngForOf]=\"items\" let-i=\"index\">\n                            <ng-container *ngIf=\"isOptionGroup(option)\">\n                                <li\n                                    [attr.id]=\"id + '_' + getOptionIndex(i, scrollerOptions)\"\n                                    class=\"p-listbox-option-group\"\n                                    [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\"\n                                    role=\"option\"\n                                    cdkDrag\n                                    [cdkDragData]=\"option\"\n                                    [cdkDragDisabled]=\"!dragdrop\"\n                                >\n                                    <span *ngIf=\"!groupTemplate && !_groupTemplate\">{{ getOptionGroupLabel(option.optionGroup) }}</span>\n                                    <ng-container *ngTemplateOutlet=\"groupTemplate || _groupTemplate; context: { $implicit: option.optionGroup }\"></ng-container>\n                                </li>\n                            </ng-container>\n                            <ng-container *ngIf=\"!isOptionGroup(option)\">\n                                <li\n                                    pRipple\n                                    class=\"p-listbox-option\"\n                                    role=\"option\"\n                                    [attr.id]=\"id + '_' + getOptionIndex(i, scrollerOptions)\"\n                                    [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\"\n                                    [ngClass]=\"{\n                                        'p-listbox-option-selected': isSelected(option) && highlightOnSelect,\n                                        'p-focus': focusedOptionIndex() === getOptionIndex(i, scrollerOptions),\n                                        'p-disabled': isOptionDisabled(option)\n                                    }\"\n                                    [attr.aria-label]=\"getOptionLabel(option)\"\n                                    [attr.aria-selected]=\"isSelected(option)\"\n                                    [attr.aria-disabled]=\"isOptionDisabled(option)\"\n                                    [attr.aria-setsize]=\"ariaSetSize\"\n                                    [attr.ariaPosInset]=\"getAriaPosInset(getOptionIndex(i, scrollerOptions))\"\n                                    (click)=\"onOptionSelect($event, option, getOptionIndex(i, scrollerOptions))\"\n                                    (dblclick)=\"onOptionDoubleClick($event, option)\"\n                                    (mousedown)=\"onOptionMouseDown($event, getOptionIndex(i, scrollerOptions))\"\n                                    (mouseenter)=\"onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))\"\n                                    (touchend)=\"onOptionTouchEnd()\"\n                                    cdkDrag\n                                    [cdkDragData]=\"option\"\n                                    [cdkDragDisabled]=\"!dragdrop\"\n                                >\n                                    <p-checkbox\n                                        *ngIf=\"checkbox && multiple\"\n                                        styleClass=\"p-listbox-option-check-icon\"\n                                        [ngModel]=\"isSelected(option)\"\n                                        [readonly]=\"true\"\n                                        [disabled]=\"disabled || isOptionDisabled(option)\"\n                                        [tabindex]=\"-1\"\n                                        [variant]=\"config.inputStyle() === 'filled' || config.inputVariant() === 'filled' ? 'filled' : 'outlined'\"\n                                        [binary]=\"true\"\n                                    >\n                                        <ng-container *ngIf=\"checkIconTemplate || _checkIconTemplate\">\n                                            <ng-template #icon>\n                                                <ng-template *ngTemplateOutlet=\"checkIconTemplate || _checkIconTemplate; context: { $implicit: isSelected(option) }\"></ng-template>\n                                            </ng-template>\n                                        </ng-container>\n                                    </p-checkbox>\n                                    <ng-container *ngIf=\"checkmark\">\n                                        <ng-container *ngIf=\"!checkmarkTemplate && !_checkmarkTemplate\">\n                                            <BlankIcon *ngIf=\"!isSelected(option)\" styleClass=\"p-listbox-option-check-icon\" />\n                                            <CheckIcon *ngIf=\"isSelected(option)\" styleClass=\"p-listbox-option-check-icon\" />\n                                        </ng-container>\n                                        <ng-container *ngTemplateOutlet=\"checkmarkTemplate || _checkmarkTemplate; context: { implicit: isSelected(option) }\"></ng-container>\n                                    </ng-container>\n                                    <span *ngIf=\"!itemTemplate && !_itemTemplate\">{{ getOptionLabel(option) }}</span>\n                                    <ng-container\n                                        *ngTemplateOutlet=\"\n                                            itemTemplate || _itemTemplate;\n                                            context: {\n                                                $implicit: option,\n                                                index: getOptionIndex(i, scrollerOptions),\n                                                selected: isSelected(option)\n                                            }\n                                        \"\n                                    ></ng-container>\n                                </li>\n                            </ng-container>\n                        </ng-template>\n                        <li *ngIf=\"hasFilter() && isEmpty()\" class=\"p-listbox-empty-message\" role=\"option\">\n                            @if (!emptyFilterTemplate && !_emptyFilterTemplate && !_emptyTemplate && !emptyTemplate) {\n                                {{ emptyFilterMessageText }}\n                            } @else {\n                                <ng-container #emptyFilter *ngTemplateOutlet=\"emptyFilterTemplate || _emptyFilterTemplate || _emptyTemplate || emptyTemplate\"></ng-container>\n                            }\n                        </li>\n                        <li *ngIf=\"!hasFilter() && isEmpty()\" class=\"p-listbox-empty-message\" role=\"option\">\n                            @if (!emptyTemplate && !_emptyTemplate) {\n                                {{ emptyMessage }}\n                            } @else {\n                                <ng-container #empty *ngTemplateOutlet=\"emptyTemplate || _emptyTemplate\"></ng-container>\n                            }\n                        </li>\n                    </ul>\n                </ng-template>\n            </div>\n            <div class=\"p-listbox-footer\" *ngIf=\"footerFacet || footerTemplate || _footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate || _footerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }\"></ng-container>\n            </div>\n            <span *ngIf=\"isEmpty()\" role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\">\n                {{ emptyMessage }}\n            </span>\n            <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\">\n                {{ selectedMessageText }}\n            </span>\n            <span #lastHiddenFocusableElement role=\"presentation\" class=\"p-hidden-accessible p-hidden-focusable\" [tabindex]=\"!disabled ? tabindex : -1\" (focus)=\"onLastHiddenFocus($event)\" [attr.data-p-hidden-focusable]=\"true\"> </span>\n        </div>\n    `,\n    providers: [\n        LISTBOX_VALUE_ACCESSOR,\n        ListBoxStyle,\n        {\n            provide: CDK_DRAG_CONFIG,\n            useValue: {\n                zIndex: 1200\n            }\n        }\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class Listbox extends BaseComponent implements AfterContentInit, OnInit, ControlValueAccessor, OnDestroy {\n    /**\n     * Unique identifier of the component.\n     * @group Props\n     */\n    @Input() id: string | undefined;\n    /**\n     * Text to display when the search is active. Defaults to global value in i18n translation configuration.\n     * @group Props\n     * @defaultValue '{0} results are available'\n     */\n    @Input() searchMessage: string | undefined;\n    /**\n     * Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.\n     * @group Props\n     * @defaultValue 'No selected item'\n     */\n    @Input() emptySelectionMessage: string | undefined;\n    /**\n     * Text to be displayed in hidden accessible field when options are selected. Defaults to global value in i18n translation configuration.\n     * @group Props\n     * @defaultValue '{0} items selected'\n     */\n    @Input() selectionMessage: string | undefined;\n    /**\n     * Whether to focus on the first visible or selected element when the overlay panel is shown.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) autoOptionFocus: boolean | undefined = true;\n    /**\n     * Defines a string that labels the input for accessibility.\n     * @group Props\n     */\n    @Input() ariaLabel: string | undefined;\n    /**\n     * When enabled, the focused option is selected.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) selectOnFocus: boolean | undefined;\n    /**\n     * Locale to use in searching. The default locale is the host environment's current locale.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) searchLocale: boolean | undefined;\n    /**\n     * When enabled, the hovered option will be focused.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) focusOnHover: boolean | undefined = true;\n    /**\n     * Text to display when filtering.\n     * @group Props\n     */\n    @Input() filterMessage: string | undefined;\n    /**\n     * Fields used when filtering the options, defaults to optionLabel.\n     * @group Props\n     */\n    @Input() filterFields: any[] | undefined;\n    /**\n     * Defines if data is loaded and interacted with in lazy manner.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) lazy: boolean = false;\n    /**\n     * Whether the data should be loaded on demand during scroll.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) virtualScroll: boolean | undefined;\n    /**\n     * Height of an item in the list for VirtualScrolling.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) virtualScrollItemSize: number | undefined;\n    /**\n     * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n     * @group Props\n     */\n    @Input() virtualScrollOptions: ScrollerOptions | undefined;\n    /**\n     * Height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.\n     * @group Props\n     */\n    @Input() scrollHeight: string = '14rem';\n    /**\n     * Index of the element in tabbing order.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) tabindex: number | undefined = 0;\n    /**\n     * When specified, allows selecting multiple values.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) multiple: boolean | undefined;\n    /**\n     * Inline style of the container.\n     * @group Props\n     */\n    @Input() style: { [klass: string]: any } | null | undefined;\n    /**\n     * Style class of the container.\n     * @group Props\n     */\n    @Input() styleClass: string | undefined;\n    /**\n     * Inline style of the list element.\n     * @group Props\n     */\n    @Input() listStyle: { [klass: string]: any } | null | undefined;\n    /**\n     * Style class of the list element.\n     * @group Props\n     */\n    @Input() listStyleClass: string | undefined;\n    /**\n     * When present, it specifies that the element value cannot be changed.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) readonly: boolean | undefined;\n    /**\n     * When present, it specifies that the element should be disabled.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n    /**\n     * When specified, allows selecting items with checkboxes.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) checkbox: boolean = false;\n    /**\n     * When specified, displays a filter input at header.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) filter: boolean = false;\n    /**\n     * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.\n     * @group Props\n     */\n    @Input() filterBy: string | undefined;\n    /**\n     * Defines how the items are filtered.\n     * @group Props\n     */\n    @Input() filterMatchMode: 'contains' | 'startsWith' | 'endsWith' | 'equals' | 'notEquals' | 'in' | 'lt' | 'lte' | 'gt' | 'gte' = 'contains';\n    /**\n     * Locale to use in filtering. The default locale is the host environment's current locale.\n     * @group Props\n     */\n    @Input() filterLocale: string | undefined;\n    /**\n     * Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) metaKeySelection: boolean = false;\n    /**\n     * A property to uniquely identify a value in options.\n     * @group Props\n     */\n    @Input() dataKey: string | undefined;\n    /**\n     * Whether header checkbox is shown in multiple mode.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showToggleAll: boolean = true;\n    /**\n     * Name of the label field of an option.\n     * @group Props\n     */\n    @Input() optionLabel: string | undefined;\n    /**\n     * Name of the value field of an option.\n     * @group Props\n     */\n    @Input() optionValue: string | undefined;\n    /**\n     * Name of the options field of an option group.\n     * @group Props\n     */\n    @Input() optionGroupChildren: string | undefined = 'items';\n    /**\n     * Name of the label field of an option group.\n     * @group Props\n     */\n    @Input() optionGroupLabel: string | undefined = 'label';\n    /**\n     * Name of the disabled field of an option.\n     * @group Props\n     */\n    @Input() optionDisabled: string | undefined;\n    /**\n     * Defines a string that labels the filter input.\n     * @group Props\n     */\n    @Input() ariaFilterLabel: string | undefined;\n    /**\n     * Defines placeholder of the filter input.\n     * @group Props\n     */\n    @Input() filterPlaceHolder: string | undefined;\n    /**\n     * Text to display when filtering does not return any results.\n     * @group Props\n     */\n    @Input() emptyFilterMessage: string | undefined;\n    /**\n     * Text to display when there is no data. Defaults to global value in i18n translation configuration.\n     * @group Props\n     */\n    @Input() emptyMessage: string | undefined;\n    /**\n     * Whether to display options as grouped when nested options are provided.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) group: boolean | undefined;\n    /**\n     * An array of selectitems to display as the available options.\n     * @group Props\n     */\n    @Input() get options(): any[] {\n        return this._options();\n    }\n    set options(val: any[]) {\n        this._options.set(val);\n    }\n    /**\n     * When specified, filter displays with this value.\n     * @group Props\n     */\n    @Input() get filterValue(): string {\n        return this._filterValue();\n    }\n    set filterValue(val: string) {\n        this._filterValue.set(val);\n    }\n    /**\n     * Whether all data is selected.\n     * @group Props\n     */\n    @Input() get selectAll(): boolean | undefined | null {\n        return this._selectAll;\n    }\n    set selectAll(value: boolean | undefined | null) {\n        this._selectAll = value;\n    }\n    /**\n     * Whether to displays rows with alternating colors.\n     * @group Props\n     * @defaultValue false\n     */\n    @Input({ transform: booleanAttribute }) striped: boolean | undefined = false;\n    /**\n     * Whether the selected option will be add highlight class.\n     * @group Props\n     * @defaultValue true\n     */\n    @Input({ transform: booleanAttribute }) highlightOnSelect: boolean = true;\n    /**\n     * Whether the selected option will be shown with a check mark.\n     * @group Props\n     * @defaultValue false\n     */\n    @Input({ transform: booleanAttribute }) checkmark: boolean = false;\n    /**\n     * Whether to enable dragdrop based reordering.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) dragdrop: boolean = false;\n    /**\n     * Callback to invoke on value change.\n     * @param {ListboxChangeEvent} event - Custom change event.\n     * @group Emits\n     */\n\n    @Output() onChange: EventEmitter<ListboxChangeEvent> = new EventEmitter<ListboxChangeEvent>();\n    /**\n     * Callback to invoke when option is clicked.\n     * @param {ListboxClickEvent} event - Custom click event.\n     * @group Emits\n     */\n    @Output() onClick: EventEmitter<ListboxClickEvent> = new EventEmitter<ListboxClickEvent>();\n    /**\n     * Callback to invoke when option is double clicked.\n     * @param {ListboxDoubleClickEvent} event - Custom double click event.\n     * @group Emits\n     */\n    @Output() onDblClick: EventEmitter<ListboxDoubleClickEvent> = new EventEmitter<ListboxDoubleClickEvent>();\n    /**\n     * Callback to invoke when data is filtered.\n     * @param {ListboxFilterEvent} event - Custom filter event.\n     * @group Emits\n     */\n    @Output() onFilter: EventEmitter<ListboxFilterEvent> = new EventEmitter<ListboxFilterEvent>();\n    /**\n     * Callback to invoke when component receives focus.\n     * @param {FocusEvent} event - Focus event.\n     * @group Emits\n     */\n    @Output() onFocus: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n    /**\n     * Callback to invoke when component loses focus.\n     * @param {FocusEvent} event - Blur event.\n     * @group Emits\n     */\n    @Output() onBlur: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n    /**\n     * Callback to invoke when all data is selected.\n     * @param {ListboxSelectAllChangeEvent} event - Custom select event.\n     * @group Emits\n     */\n    @Output() onSelectAllChange: EventEmitter<ListboxSelectAllChangeEvent> = new EventEmitter<ListboxSelectAllChangeEvent>();\n    /**\n     * Emits on lazy load.\n     * @param {ScrollerLazyLoadEvent} event - Scroller lazy load event.\n     * @group Emits\n     */\n    @Output() onLazyLoad: EventEmitter<ScrollerLazyLoadEvent> = new EventEmitter<ScrollerLazyLoadEvent>();\n    /**\n     * Emits on item is dropped.\n     * @param {CdkDragDrop<string[]>} event - Scroller lazy load event.\n     * @group Emits\n     */\n    @Output() onDrop: EventEmitter<CdkDragDrop<string[]>> = new EventEmitter<CdkDragDrop<string[]>>();\n\n    @ViewChild('headerchkbox') headerCheckboxViewChild: Nullable<ElementRef>;\n\n    @ViewChild('filter') filterViewChild: Nullable<ElementRef>;\n\n    @ViewChild('lastHiddenFocusableElement') lastHiddenFocusableElement: Nullable<ElementRef>;\n\n    @ViewChild('firstHiddenFocusableElement') firstHiddenFocusableElement: Nullable<ElementRef>;\n\n    @ViewChild('scroller') scroller: Nullable<Scroller>;\n\n    @ViewChild('list') listViewChild: Nullable<ElementRef>;\n\n    @ViewChild('container') containerViewChild: Nullable<ElementRef>;\n\n    @ContentChild(Header) headerFacet: Nullable<TemplateRef<any>>;\n\n    @ContentChild(Footer) footerFacet: Nullable<TemplateRef<any>>;\n\n    /**\n     * Custom item template.\n     * @group Templates\n     */\n    @ContentChild('item', { descendants: false }) itemTemplate: TemplateRef<any> | undefined;\n\n    /**\n     * Custom group template.\n     * @group Templates\n     */\n    @ContentChild('group', { descendants: false }) groupTemplate: TemplateRef<any> | undefined;\n\n    /**\n     * Custom header template.\n     * @group Templates\n     */\n    @ContentChild('header', { descendants: false }) headerTemplate: TemplateRef<any> | undefined;\n\n    /**\n     * Custom filter template.\n     * @group Templates\n     */\n    @ContentChild('filter', { descendants: false }) filterTemplate: TemplateRef<any> | undefined;\n\n    /**\n     * Custom footer template.\n     * @group Templates\n     */\n    @ContentChild('footer', { descendants: false }) footerTemplate: TemplateRef<any> | undefined;\n\n    /**\n     * Custom empty filter message template.\n     * @group Templates\n     */\n    @ContentChild('emptyfilter', { descendants: false }) emptyFilterTemplate: TemplateRef<any> | undefined;\n\n    /**\n     * Custom empty message template.\n     * @group Templates\n     */\n    @ContentChild('empty', { descendants: false }) emptyTemplate: TemplateRef<any> | undefined;\n\n    /**\n     * Custom filter icon template.\n     * @group Templates\n     */\n    @ContentChild('filtericon', { descendants: false }) filterIconTemplate: TemplateRef<any> | undefined;\n\n    /**\n     * Custom check icon template.\n     * @group Templates\n     */\n    @ContentChild('checkicon', { descendants: false }) checkIconTemplate: TemplateRef<any> | undefined;\n\n    /**\n     * Custom checkmark icon template.\n     * @group Templates\n     */\n    @ContentChild('checkmark', { descendants: false }) checkmarkTemplate: TemplateRef<any> | undefined;\n\n    /**\n     * Custom loader template.\n     * @group Templates\n     */\n    @ContentChild('loader', { descendants: false }) loaderTemplate: TemplateRef<any> | undefined;\n\n    @ContentChildren(PrimeTemplate) templates!: QueryList<PrimeTemplate>;\n\n    _itemTemplate: TemplateRef<any> | undefined;\n\n    _groupTemplate: TemplateRef<any> | undefined;\n\n    _headerTemplate: TemplateRef<any> | undefined;\n\n    _filterTemplate: TemplateRef<any> | undefined;\n\n    _footerTemplate: TemplateRef<any> | undefined;\n\n    _emptyFilterTemplate: TemplateRef<any> | undefined;\n\n    _emptyTemplate: TemplateRef<any> | undefined;\n\n    _filterIconTemplate: TemplateRef<any> | undefined;\n\n    _checkIconTemplate: TemplateRef<any> | undefined;\n\n    _checkmarkTemplate: TemplateRef<any> | undefined;\n\n    _loaderTemplate: TemplateRef<any> | undefined;\n\n    public _filterValue = signal<string | null | undefined>(null);\n\n    public _filteredOptions: any[] | undefined | null;\n\n    filterOptions: ListboxFilterOptions | undefined;\n\n    public filtered: boolean | undefined | null;\n\n    public value: any | undefined | null;\n\n    public onModelChange: Function = () => {};\n\n    public onModelTouched: Function = () => {};\n\n    public optionTouched: boolean | undefined | null;\n\n    public focus: boolean | undefined | null;\n\n    public headerCheckboxFocus: boolean | undefined | null;\n\n    translationSubscription: Nullable<Subscription>;\n\n    focused: boolean | undefined;\n\n    scrollerTabIndex: string = '0';\n\n    _componentStyle = inject(ListBoxStyle);\n\n    get containerClass() {\n        return {\n            'p-listbox p-component': true,\n            'p-listbox-striped': this.striped,\n            'p-disabled': this.disabled\n        };\n    }\n\n    get focusedOptionId() {\n        return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;\n    }\n\n    get filterResultMessageText() {\n        return isNotEmpty(this.visibleOptions()) ? this.filterMessageText.replaceAll('{0}', this.visibleOptions().length) : this.emptyFilterMessageText;\n    }\n\n    get filterMessageText() {\n        return this.filterMessage || this.config.translation.searchMessage || '';\n    }\n\n    get searchMessageText() {\n        return this.searchMessage || this.config.translation.searchMessage || '';\n    }\n\n    get emptyFilterMessageText() {\n        return this.emptyFilterMessage || this.config.translation.emptySearchMessage || this.config.translation.emptyFilterMessage || '';\n    }\n\n    get selectionMessageText() {\n        return this.selectionMessage || this.config.translation.selectionMessage || '';\n    }\n\n    get emptySelectionMessageText() {\n        return this.emptySelectionMessage || this.config.translation.emptySelectionMessage || '';\n    }\n\n    get selectedMessageText() {\n        return this.hasSelectedOption() ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.modelValue().length : '1') : this.emptySelectionMessageText;\n    }\n\n    get ariaSetSize() {\n        return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;\n    }\n\n    get virtualScrollerDisabled() {\n        return !this.virtualScroll;\n    }\n\n    get searchFields() {\n        return this.filterBy?.split(',') || this.filterFields || [this.optionLabel];\n    }\n\n    get toggleAllAriaLabel() {\n        return this.config.translation.aria ? this.config.translation.aria[this.allSelected() ? 'selectAll' : 'unselectAll'] : undefined;\n    }\n\n    searchValue: string | undefined;\n\n    searchTimeout: any;\n\n    _selectAll: boolean | undefined | null = null;\n\n    _options = signal<any>(null);\n\n    startRangeIndex = signal<number>(-1);\n\n    focusedOptionIndex = signal<number>(-1);\n\n    modelValue = signal<any>(null);\n\n    visibleOptions = computed(() => {\n        const options = this.group ? this.flatOptions(this._options()) : this._options() || [];\n        return this._filterValue() ? this.filterService.filter(options, this.searchFields, this._filterValue(), this.filterMatchMode, this.filterLocale) : options;\n    });\n\n    constructor(public filterService: FilterService) {\n        super();\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.id = this.id || uuid('pn_id_');\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.cd.markForCheck();\n        });\n\n        this.autoUpdateModel();\n\n        if (this.filterBy) {\n            this.filterOptions = {\n                filter: (value) => this.onFilterChange(value),\n                reset: () => this.resetFilter()\n            };\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'item':\n                    this._itemTemplate = item.template;\n                    break;\n\n                case 'group':\n                    this._groupTemplate = item.template;\n                    break;\n\n                case 'header':\n                    this._headerTemplate = item.template;\n                    break;\n\n                case 'filter':\n                    this._filterTemplate = item.template;\n                    break;\n\n                case 'footer':\n                    this._footerTemplate = item.template;\n                    break;\n\n                case 'empty':\n                    this._emptyTemplate = item.template;\n                    break;\n\n                case 'emptyfilter':\n                    this._emptyFilterTemplate = item.template;\n                    break;\n\n                case 'filtericon':\n                    this._filterIconTemplate = item.template;\n                    break;\n\n                case 'checkicon':\n                    this._checkIconTemplate = item.template;\n                    break;\n\n                case 'checkmark':\n                    this._checkmarkTemplate = item.template;\n                    break;\n\n                case 'loader':\n                    this._loaderTemplate = item.template;\n                    break;\n\n                default:\n                    this._itemTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    writeValue(value: any): void {\n        this.value = value;\n        this.modelValue.set(this.value);\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\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\n    autoUpdateModel() {\n        if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption() && !this.multiple) {\n            const focusedOptionIndex = this.findFirstFocusedOptionIndex();\n            this.focusedOptionIndex.set(focusedOptionIndex);\n            this.onOptionSelect(null, this.visibleOptions()[this.focusedOptionIndex()]);\n        }\n    }\n    /**\n     * Updates the model value.\n     * @group Method\n     */\n    public updateModel(value, event?) {\n        this.value = value;\n        this.modelValue.set(value);\n        this.onModelChange(value);\n\n        this.onChange.emit({ originalEvent: event, value: this.value });\n    }\n\n    removeOption(option) {\n        return this.modelValue().filter((val) => !equals(val, this.getOptionValue(option), this.equalityKey()));\n    }\n\n    onOptionSelect(event, option, index = -1) {\n        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n            return;\n        }\n\n        event && this.onClick.emit({ originalEvent: event, option, value: this.value });\n\n        this.multiple ? this.onOptionSelectMultiple(event, option) : this.onOptionSelectSingle(event, option);\n        this.optionTouched = false;\n        index !== -1 && this.focusedOptionIndex.set(index);\n    }\n\n    onOptionSelectMultiple(event, option) {\n        let selected = this.isSelected(option);\n        let value = null;\n        let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n        if (metaSelection) {\n            let metaKey = event.metaKey || event.ctrlKey;\n\n            if (selected) {\n                value = metaKey ? this.removeOption(option) : [this.getOptionValue(option)];\n            } else {\n                value = metaKey ? this.modelValue() || [] : [];\n                value = [...value, this.getOptionValue(option)];\n            }\n        } else {\n            value = selected ? this.removeOption(option) : [...(this.modelValue() || []), this.getOptionValue(option)];\n        }\n\n        this.updateModel(value, event);\n    }\n\n    onOptionSelectSingle(event, option) {\n        let selected = this.isSelected(option);\n        let valueChanged = false;\n        let value = null;\n        let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n        if (metaSelection) {\n            let metaKey = event.metaKey || event.ctrlKey;\n\n            if (selected) {\n                if (metaKey) {\n                    value = null;\n                    valueChanged = true;\n                }\n            } else {\n                value = this.getOptionValue(option);\n                valueChanged = true;\n            }\n        } else {\n            value = selected ? null : this.getOptionValue(option);\n            valueChanged = true;\n        }\n\n        if (valueChanged) {\n            this.updateModel(value, event);\n        }\n    }\n\n    onOptionSelectRange(event, start = -1, end = -1) {\n        start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));\n        end === -1 && (end = this.findNearestSelectedOptionIndex(start));\n\n        if (start !== -1 && end !== -1) {\n            const rangeStart = Math.min(start, end);\n            const rangeEnd = Math.max(start, end);\n            const value = this.visibleOptions()\n                .slice(rangeStart, rangeEnd + 1)\n                .filter((option) => this.isValidOption(option))\n                .map((option) => this.getOptionValue(option));\n\n            this.updateModel(value, event);\n        }\n    }\n\n    onToggleAll(event) {\n        if (this.disabled || this.readonly) {\n            return;\n        }\n        focus(this.headerCheckboxViewChild.nativeElement);\n\n        if (this.selectAll !== null) {\n            this.onSelectAllChange.emit({\n                originalEvent: event,\n                checked: !this.allSelected()\n            });\n        } else {\n            const value = this.allSelected()\n                ? []\n                : this.visibleOptions()\n                      .filter((option) => this.isValidOption(option))\n                      .map((option) => this.getOptionValue(option));\n\n            this.updateModel(value, event);\n            this.onChange.emit({ originalEvent: event, value: this.value });\n        }\n\n        event.preventDefault();\n        // event.stopPropagation();\n    }\n\n    allSelected() {\n        return this.selectAll !== null ? this.selectAll : isNotEmpty(this.visibleOptions()) && this.visibleOptions().every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));\n    }\n\n    onOptionTouchEnd() {\n        if (this.disabled) {\n            return;\n        }\n\n        this.optionTouched = true;\n    }\n\n    onOptionMouseDown(event: MouseEvent, index: number) {\n        this.changeFocusedOptionIndex(event, index);\n    }\n\n    onOptionMouseEnter(event: MouseEvent, index: number) {\n        if (this.focusOnHover) {\n            this.changeFocusedOptionIndex(event, index);\n        }\n    }\n\n    onOptionDoubleClick(event: MouseEvent, option: any) {\n        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n            return;\n        }\n\n        this.onDblClick.emit({\n            originalEvent: event,\n            option: option,\n            value: this.value\n        });\n    }\n\n    onFirstHiddenFocus(event: FocusEvent) {\n        focus(this.listViewChild.nativeElement);\n        const firstFocusableEl = getFirstFocusableElement(this.el.nativeElement, ':not([data-p-hidden-focusable=\"true\"])');\n        this.lastHiddenFocusableElement.nativeElement.tabIndex = isEmpty(firstFocusableEl) ? '-1' : undefined;\n        this.firstHiddenFocusableElement.nativeElement.tabIndex = -1;\n    }\n\n    onLastHiddenFocus(event: FocusEvent) {\n        const relatedTarget = event.relatedTarget;\n\n        if (relatedTarget === this.listViewChild.nativeElement) {\n            const firstFocusableEl = <any>getFirstFocusableElement(this.el.nativeElement, ':not(.p-hidden-focusable)');\n\n            focus(firstFocusableEl);\n            this.firstHiddenFocusableElement.nativeElement.tabIndex = undefined;\n        } else {\n            focus(this.firstHiddenFocusableElement.nativeElement);\n        }\n        this.lastHiddenFocusableElement.nativeElement.tabIndex = -1;\n    }\n\n    onFocusout(event: FocusEvent) {\n        if (!this.el.nativeElement.contains(event.relatedTarget) && this.lastHiddenFocusableElement && this.firstHiddenFocusableElement) {\n            this.firstHiddenFocusableElement.nativeElement.tabIndex = this.lastHiddenFocusableElement.nativeElement.tabIndex = undefined;\n            this.containerViewChild.nativeElement.tabIndex = '0';\n            this.scrollerTabIndex = '0';\n        }\n    }\n\n    onListFocus(event: FocusEvent) {\n        this.focused = true;\n        const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n        this.focusedOptionIndex.set(focusedOptionIndex);\n        this.onFocus.emit(event);\n\n        this.containerViewChild.nativeElement.tabIndex = '-1';\n        this.scrollerTabIndex = '-1';\n    }\n\n    onFilterFocus(event: FocusEvent) {\n        this.containerViewChild.nativeElement.tabIndex = '-1';\n    }\n\n    onListBlur(event: FocusEvent) {\n        this.focused = false;\n        this.focusedOptionIndex.set(-1);\n        this.startRangeIndex.set(-1);\n        this.searchValue = '';\n    }\n\n    onHeaderCheckboxFocus(event) {\n        this.headerCheckboxFocus = true;\n    }\n\n    onHeaderCheckboxBlur() {\n        this.headerCheckboxFocus = false;\n    }\n\n    onHeaderCheckboxKeyDown(event) {\n        if (this.disabled) {\n            event.preventDefault();\n\n            return;\n        }\n\n        switch (event.code) {\n            case 'Space':\n                this.onToggleAll(event);\n                break;\n            case 'Enter':\n                this.onToggleAll(event);\n                break;\n            case 'Tab':\n                this.onHeaderCheckboxTabKeyDown(event);\n                break;\n            default:\n                break;\n        }\n    }\n\n    onHeaderCheckboxTabKeyDown(event) {\n        focus(this.listViewChild.nativeElement);\n        event.preventDefault();\n    }\n\n    onFilterChange(event: Event) {\n        let value: string = (event.target as HTMLInputElement).value?.trim();\n        this._filterValue.set(value);\n        this.focusedOptionIndex.set(-1);\n        this.startRangeIndex.set(-1);\n        this.onFilter.emit({ originalEvent: event, filter: this._filterValue() });\n\n        !this.virtualScrollerDisabled && this.scroller.scrollToIndex(0);\n    }\n\n    onFilterBlur(event: FocusEvent) {\n        this.focusedOptionIndex.set(-1);\n        this.startRangeIndex.set(-1);\n    }\n\n    onListKeyDown(event: KeyboardEvent) {\n        const metaKey = event.metaKey || event.ctrlKey;\n\n        switch (event.code) {\n            case 'ArrowDown':\n                this.onArrowDownKey(event);\n                break;\n\n            case 'ArrowUp':\n                this.onArrowUpKey(event);\n                break;\n\n            case 'Home':\n                this.onHomeKey(event);\n                break;\n\n            case 'End':\n                this.onEndKey(event);\n                break;\n\n            case 'PageDown':\n                this.onPageDownKey(event);\n                break;\n\n            case 'PageUp':\n                this.onPageUpKey(event);\n                break;\n\n            case 'Enter':\n            case 'Space':\n            case 'NumpadEnter':\n                this.onSpaceKey(event);\n                break;\n\n            case 'Tab':\n                //NOOP\n                break;\n\n            case 'ShiftLeft':\n            case 'ShiftRight':\n                this.onShiftKey();\n                break;\n\n            default:\n                if (this.multiple && event.code === 'KeyA' && metaKey) {\n                    const value = this.visibleOptions()\n                        .filter((option) => this.isValidOption(option))\n                        .map((option) => this.getOptionValue(option));\n\n                    this.updateModel(value, event);\n\n                    event.preventDefault();\n                    break;\n                }\n\n                if (!metaKey && isPrintableCharacter(event.key)) {\n                    this.searchOptions(event, event.key);\n                    event.preventDefault();\n                }\n\n                break;\n        }\n    }\n\n    onFilterKeyDown(event: KeyboardEvent) {\n        switch (event.code) {\n            case 'ArrowDown':\n                this.onArrowDownKey(event);\n                break;\n\n            case 'ArrowUp':\n                this.onArrowUpKey(event);\n                break;\n\n            case 'ArrowLeft':\n            case 'ArrowRight':\n                this.onArrowLeftKey(event, true);\n                break;\n\n            case 'Home':\n                this.onHomeKey(event, true);\n                break;\n\n            case 'End':\n                this.onEndKey(event, true);\n                break;\n\n            case 'Enter':\n                this.onEnterKey(event);\n                break;\n\n            case 'ShiftLeft':\n            case 'ShiftRight':\n                this.onShiftKey();\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    onArrowDownKey(event: KeyboardEvent) {\n        const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();\n\n        if (this.multiple && event.shiftKey) {\n            this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);\n        }\n\n        this.changeFocusedOptionIndex(event, optionIndex);\n        event.preventDefault();\n    }\n\n    onArrowUpKey(event: KeyboardEvent) {\n        const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();\n\n        if (this.multiple && event.shiftKey) {\n            this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());\n        }\n\n        this.changeFocusedOptionIndex(event, optionIndex);\n        event.preventDefault();\n    }\n\n    onArrowLeftKey(event: KeyboardEvent, pressedInInputText = false) {\n        pressedInInputText && this.focusedOptionIndex.set(-1);\n    }\n\n    onHomeKey(event: KeyboardEvent, pressedInInputText: boolean = false) {\n        if (pressedInInputText) {\n            (event.currentTarget as HTMLInputElement).setSelectionRange(0, 0);\n            this.focusedOptionIndex.set(-1);\n        } else {\n            let metaKey = event.metaKey || event.ctrlKey;\n            let optionIndex = this.findFirstOptionIndex();\n\n            if (this.multiple && event.shiftKey && metaKey) {\n                this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());\n            }\n\n            this.changeFocusedOptionIndex(event, optionIndex);\n        }\n\n        event.preventDefault();\n    }\n\n    onEndKey(event: KeyboardEvent, pressedInInputText: boolean = false) {\n        if (pressedInInputText) {\n            const target = event.currentTarget as HTMLInputElement;\n            const len = target.value.length;\n\n            target.setSelectionRange(len, len);\n            this.focusedOptionIndex.set(-1);\n        } else {\n            let metaKey = event.metaKey || event.ctrlKey;\n            let optionIndex = this.findLastOptionIndex();\n\n            if (this.multiple && event.shiftKey && metaKey) {\n                this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);\n            }\n\n            this.changeFocusedOptionIndex(event, optionIndex);\n        }\n\n        event.preventDefault();\n    }\n\n    onPageDownKey(event: KeyboardEvent) {\n        this.scrollInView(0);\n        event.preventDefault();\n    }\n\n    onPageUpKey(event: KeyboardEvent) {\n        this.scrollInView(this.visibleOptions().length - 1);\n        event.preventDefault();\n    }\n\n    onEnterKey(event) {\n        if (this.focusedOptionIndex() !== -1) {\n            if (this.multiple && event.shiftKey) this.onOptionSelectRange(event, this.focusedOptionIndex());\n            else this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);\n        }\n\n        event.preventDefault();\n    }\n\n    onSpaceKey(event: KeyboardEvent) {\n        this.onEnterKey(event);\n    }\n\n    onShiftKey() {\n        const focusedOptionIndex = this.focusedOptionIndex();\n        this.startRangeIndex.set(focusedOptionIndex);\n    }\n\n    getOptionGroupChildren(optionGroup) {\n        return this.optionGroupChildren ? resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel ? resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label !== undefined ? optionGroup.label : optionGroup;\n    }\n\n    getOptionLabel(option) {\n        return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option.label != undefined ? option.label : option;\n    }\n\n    getOptionIndex(index, scrollerOptions) {\n        return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];\n    }\n\n    getOptionValue(option: any) {\n        return this.optionValue ? resolveFieldData(option, this.optionValue) : !this.optionLabel && option && option.value !== undefined ? option.value : option;\n    }\n\n    getAriaPosInset(index: number) {\n        return (\n            (this.optionGroupLabel\n                ? index -\n                  this.visibleOptions()\n                      .slice(0, index)\n                      .filter((option) => this.isOptionGroup(option)).length\n                : index) + 1\n        );\n    }\n\n    hasSelectedOption() {\n        return isNotEmpty(this.modelValue());\n    }\n\n    isOptionGroup(option) {\n        return this.optionGroupLabel && option.optionGroup && option.group;\n    }\n\n    changeFocusedOptionIndex(event, index) {\n        if (this.focusedOptionIndex() !== index) {\n            this.focusedOptionIndex.set(index);\n            this.scrollInView();\n\n            if (this.selectOnFocus && !this.multiple) {\n                this.onOptionSelect(event, this.visibleOptions()[index]);\n            }\n        }\n    }\n\n    searchOptions(event, char) {\n        this.searchValue = (this.searchValue || '') + char;\n\n        let optionIndex = -1;\n        let matched = false;\n\n        if (this.focusedOptionIndex() !== -1) {\n            optionIndex = this.visibleOptions()\n                .slice(this.focusedOptionIndex())\n                .findIndex((option) => this.isOptionMatched(option));\n            optionIndex =\n                optionIndex === -1\n                    ? this.visibleOptions()\n                          .slice(0, this.focusedOptionIndex())\n                          .findIndex((option) => this.isOptionMatched(option))\n                    : 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        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\n    isOptionMatched(option) {\n        return this.isValidOption(option) && this.getOptionLabel(option).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));\n    }\n\n    scrollInView(index = -1) {\n        const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;\n        const element = findSingle(this.listViewChild.nativeElement, `li[id=\"${id}\"]`);\n\n        if (element) {\n            element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n        } else if (!this.virtualScrollerDisabled) {\n            this.virtualScroll && this.scroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());\n        }\n    }\n\n    findFirstOptionIndex() {\n        return this.visibleOptions().findIndex((option) => this.isValidOption(option));\n    }\n\n    findLastOptionIndex() {\n        return findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));\n    }\n\n    findFirstFocusedOptionIndex() {\n        const selectedIndex = this.findFirstSelectedOptionIndex();\n\n        return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n    }\n\n    findLastFocusedOptionIndex() {\n        const selectedIndex = this.findLastSelectedOptionIndex();\n\n        return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n    }\n\n    findLastSelectedOptionIndex() {\n        return this.hasSelectedOption() ? findLastIndex(this.visibleOptions(), (option) => this.isValidSelectedOption(option)) : -1;\n    }\n\n    findNextOptionIndex(index) {\n        const matchedOptionIndex =\n            index < this.visibleOptions().length - 1\n                ? this.visibleOptions()\n                      .slice(index + 1)\n                      .findIndex((option) => this.isValidOption(option))\n                : -1;\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n    }\n\n    findNextSelectedOptionIndex(index) {\n        const matchedOptionIndex =\n            this.hasSelectedOption() && index < this.visibleOptions().length - 1\n                ? this.visibleOptions()\n                      .slice(index + 1)\n                      .findIndex((option) => this.isValidSelectedOption(option))\n                : -1;\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n    }\n\n    findPrevSelectedOptionIndex(index) {\n        const matchedOptionIndex = this.hasSelectedOption() && index > 0 ? findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n    }\n\n    findFirstSelectedOptionIndex() {\n        return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;\n    }\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\n    findNearestSelectedOptionIndex(index, firstCheckUp = false) {\n        let matchedOptionIndex = -1;\n\n        if (this.hasSelectedOption()) {\n            if (firstCheckUp) {\n                matchedOptionIndex = this.findPrevSelectedOptionIndex(index);\n                matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;\n            } else {\n                matchedOptionIndex = this.findNextSelectedOptionIndex(index);\n                matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n            }\n        }\n\n        return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n    }\n\n    equalityKey() {\n        return this.optionValue ? null : this.dataKey;\n    }\n\n    isValidSelectedOption(option) {\n        return this.isValidOption(option) && this.isSelected(option);\n    }\n\n    isOptionDisabled(option: any) {\n        return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n    }\n\n    isSelected(option) {\n        const optionValue = this.getOptionValue(option);\n\n        if (this.multiple) return (this.modelValue() || []).some((value) => equals(value, optionValue, this.equalityKey()));\n        else return equals(this.modelValue(), optionValue, this.equalityKey());\n    }\n\n    isValidOption(option) {\n        return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n    }\n\n    isEmpty() {\n        return !this._options()?.length || !this.visibleOptions()?.length;\n    }\n\n    hasFilter() {\n        return this._filterValue() && this._filterValue().trim().length > 0;\n    }\n\n    resetFilter() {\n        if (this.filterViewChild && this.filterViewChild.nativeElement) {\n            this.filterViewChild.nativeElement.value = '';\n        }\n\n        this._filterValue.set(null);\n    }\n\n    drop(event: CdkDragDrop<string[]>) {\n        if (event) {\n            this.onDrop.emit(event);\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n\n        super.ngOnDestroy();\n    }\n}\n\n@NgModule({\n    imports: [Listbox, SharedModule],\n    exports: [Listbox, SharedModule]\n})\nexport class ListboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}