{"version":3,"file":"igniteui-angular-drop-down.mjs","sources":["../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down-group.component.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down.common.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down-item.base.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down-item.component.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down-item.component.html","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down-navigation.directive.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down.base.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down.component.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down.component.html","../../../projects/igniteui-angular/drop-down/src/drop-down/autocomplete/autocomplete.directive.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/autocomplete/autocomplete.module.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/public_api.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down.module.ts","../../../projects/igniteui-angular/drop-down/src/igniteui-angular-drop-down.ts"],"sourcesContent":["import { Component, Input, HostBinding, booleanAttribute } from '@angular/core';\n\nlet NEXT_ID = 0;\n/**\n * The `<igx-drop-down-item>` is a container intended for row items in\n * a `<igx-drop-down>` container.\n */\n@Component({\n    selector: 'igx-drop-down-item-group',\n    template: `\n        <label id=\"{{labelId}}\">{{ label }}</label>\n        <ng-content select=\"igx-drop-down-item\"></ng-content>\n    `,\n    standalone: true\n})\nexport class IgxDropDownGroupComponent {\n    /**\n     * @hidden @internal\n     */\n    public get labelId(): string {\n        return `igx-item-group-label-${this._id}`;\n    }\n\n    @HostBinding(`attr.aria-labelledby`)\n    public get labelledBy(): string {\n        return this.labelId;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @HostBinding('attr.role')\n    public role = 'group';\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-drop-down__group')\n    public groupClass = true;\n    /**\n     * Sets/gets if the item group is disabled\n     *\n     * ```typescript\n     * const myDropDownGroup: IgxDropDownGroupComponent = this.dropdownGroup;\n     * // get\n     * ...\n     * const groupState: boolean = myDropDownGroup.disabled;\n     * ...\n     * //set\n     * ...\n     * myDropDownGroup,disabled = false;\n     * ...\n     * ```\n     *\n     * ```html\n     * <igx-drop-down-item-group [label]=\"'My Items'\" [disabled]=\"true\">\n     *     <igx-drop-down-item *ngFor=\"let item of items[index]\" [value]=\"item.value\">\n     *         {{ item.text }}\n     *     </igx-drop-down-item>\n     * </igx-drop-down-item-group>\n     * ```\n     *\n     * **NOTE:** All items inside of a disabled drop down group will be treated as disabled\n     */\n    @Input({ transform: booleanAttribute })\n    @HostBinding(`attr.aria-disabled`)\n    @HostBinding('class.igx-drop-down__group--disabled')\n    public disabled = false;\n\n    /**\n     * Sets/gets the label of the item group\n     *\n     * ```typescript\n     * const myDropDownGroup: IgxDropDownGroupComponent = this.dropdownGroup;\n     * // get\n     * ...\n     * const myLabel: string = myDropDownGroup.label;\n     * ...\n     * // set\n     * ...\n     * myDropDownGroup.label = 'My New Label';\n     * ...\n     * ```\n     *\n     * ```html\n     * <igx-drop-down-item-group [label]=\"'My new Label'\">\n     *      ...\n     * </igx-drop-down-item-group>\n     * ```\n     */\n    @Input()\n    public label: string;\n\n    private _id = NEXT_ID++;\n}\n","import { CancelableEventArgs, CancelableBrowserEventArgs, IBaseEventArgs } from 'igniteui-angular/core';\nimport { IgxDropDownItemBaseDirective } from './drop-down-item.base';\nimport { IToggleView } from 'igniteui-angular/core';\nimport { EventEmitter, InjectionToken } from '@angular/core';\n\n/** @hidden */\nexport enum Navigate {\n    Up = -1,\n    Down = 1\n}\n\n/** Key actions that have designated handlers in IgxDropDownComponent */\nexport const DropDownActionKey = {\n    ESCAPE: 'escape',\n    ENTER: 'enter',\n    SPACE: 'space',\n    TAB: 'tab'\n} as const;\nexport type DropDownActionKey = (typeof DropDownActionKey)[keyof typeof DropDownActionKey];\n\n/**\n * Interface that encapsulates selectionChanging event arguments - old selection, new selection and cancel selection.\n *\n * @export\n */\nexport interface ISelectionEventArgs extends CancelableEventArgs, IBaseEventArgs {\n    oldSelection: IgxDropDownItemBaseDirective;\n    newSelection: IgxDropDownItemBaseDirective;\n}\n\n/**\n * Interface for an instance of IgxDropDownNavigationDirective\n *\n * @export\n */\nexport interface IDropDownNavigationDirective {\n    target: any;\n    handleKeyDown(event: KeyboardEvent): void;\n    onArrowDownKeyDown(event?: KeyboardEvent): void;\n    onArrowUpKeyDown(event?: KeyboardEvent): void;\n    onEndKeyDown(event?: KeyboardEvent): void;\n    onHomeKeyDown(event?: KeyboardEvent): void;\n}\n\nexport const IGX_DROPDOWN_BASE = /*@__PURE__*/new InjectionToken<IDropDownBase>('IgxDropDownBaseToken');\n\n/**\n * @hidden\n */\nexport interface IDropDownList {\n    selectionChanging: EventEmitter<ISelectionEventArgs>;\n    width: string;\n    height: string;\n    id: string;\n    maxHeight: string;\n    collapsed: boolean;\n    items: IgxDropDownItemBaseDirective[];\n    headers: IgxDropDownItemBaseDirective[];\n    focusedItem: IgxDropDownItemBaseDirective;\n    navigateFirst(): void;\n    navigateLast(): void;\n    navigateNext(): void;\n    navigatePrev(): void;\n    navigateItem(newIndex: number, direction?: Navigate): void;\n    onItemActionKey(key: DropDownActionKey, event?: Event): void;\n}\n\n/**\n * @hidden\n */\nexport interface IDropDownBase extends IDropDownList, IToggleView {\n    selectedItem: any;\n    opening: EventEmitter<CancelableBrowserEventArgs>;\n    opened: EventEmitter<IBaseEventArgs>;\n    closing: EventEmitter<CancelableBrowserEventArgs>;\n    closed: EventEmitter<IBaseEventArgs>;\n    allowItemsFocus?: boolean;\n    setSelectedItem(index: number): void;\n    selectItem(item: IgxDropDownItemBaseDirective, event?: Event, emit?: boolean): void;\n}\n\n","import { IDropDownBase, IGX_DROPDOWN_BASE } from './drop-down.common';\nimport { Directive, Input, HostBinding, HostListener, ElementRef, Output, EventEmitter, booleanAttribute, DoCheck, inject } from '@angular/core';\nimport { IgxSelectionAPIService } from 'igniteui-angular/core';\nimport { IgxDropDownGroupComponent } from './drop-down-group.component';\n\nlet NEXT_ID = 0;\n\n/**\n * An abstract class defining a drop-down item:\n * With properties / styles for selection, highlight, height\n * Bindable property for passing data (`value: any`)\n * Parent component (has to be used under a parent with type `IDropDownBase`)\n * Method for handling click on Host()\n */\n@Directive({\n    selector: '[igxDropDownItemBase]',\n    standalone: true\n})\nexport class IgxDropDownItemBaseDirective implements DoCheck {\n    protected dropDown = inject<IDropDownBase>(IGX_DROPDOWN_BASE);\n    protected elementRef = inject(ElementRef);\n    protected group = inject(IgxDropDownGroupComponent, { optional: true });\n    protected selection? = inject<IgxSelectionAPIService>(IgxSelectionAPIService, { optional: true });\n\n    /**\n     * Sets/gets the `id` of the item.\n     * ```html\n     * <igx-drop-down-item [id] = 'igx-drop-down-item-0'></igx-drop-down-item>\n     * ```\n     * ```typescript\n     * let itemId =  this.item.id;\n     * ```\n     *\n     * @memberof IgxSelectItemComponent\n     */\n    @HostBinding('attr.id')\n    @Input()\n    public id = `igx-drop-down-item-${NEXT_ID++}`;\n\n    @HostBinding('attr.aria-label')\n    @Input()\n    public get ariaLabel(): string | null{\n        return this._label ? this._label : this.value ? this.value : null;\n    }\n\n    public set ariaLabel(value: string | null) {\n        this._label = value;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public get itemID() {\n        return this;\n    }\n\n    /**\n     * The data index of the dropdown item.\n     *\n     * ```typescript\n     * // get the data index of the selected dropdown item\n     * let selectedItemIndex = this.dropdown.selectedItem.index\n     * ```\n     */\n    @Input()\n    public get index(): number {\n        if (this._index === null) {\n            return this.itemIndex;\n        }\n        return this._index;\n    }\n\n    public set index(value) {\n        this._index = value;\n    }\n\n    /**\n     * Gets/sets the value of the item if the item is databound\n     *\n     * ```typescript\n     * // usage in IgxDropDownItemComponent\n     * // get\n     * let mySelectedItemValue = this.dropdown.selectedItem.value;\n     *\n     * // set\n     * let mySelectedItem = this.dropdown.selectedItem;\n     * mySelectedItem.value = { id: 123, name: 'Example Name' }\n     *\n     * // usage in IgxComboItemComponent\n     * // get\n     * let myComboItemValue = this.combo.items[0].value;\n     * ```\n     */\n    @Input()\n    public value: any;\n\n    /**\n     * @hidden @internal\n     */\n    @HostBinding('class.igx-drop-down__item')\n    public get itemStyle(): boolean {\n        return !this.isHeader;\n    }\n\n    /**\n     * Sets/Gets if the item is the currently selected one in the dropdown\n     *\n     * ```typescript\n     *  let mySelectedItem = this.dropdown.selectedItem;\n     *  let isMyItemSelected = mySelectedItem.selected; // true\n     * ```\n     *\n     * Two-way data binding\n     * ```html\n     * <igx-drop-down-item [(selected)]='model.isSelected'></igx-drop-down-item>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    @HostBinding('attr.aria-selected')\n    @HostBinding('class.igx-drop-down__item--selected')\n    public get selected(): boolean {\n        return this._selected;\n    }\n\n    public set selected(value: boolean) {\n        if (this.isHeader) {\n            return;\n        }\n        this._selected = value;\n        this.selectedChange.emit(this._selected);\n    }\n\n    /**\n     * @hidden\n     */\n    @Output()\n    public selectedChange = new EventEmitter<boolean>();\n\n    /**\n     * Sets/gets if the given item is focused\n     * ```typescript\n     *  let mySelectedItem = this.dropdown.selectedItem;\n     *  let isMyItemFocused = mySelectedItem.focused;\n     * ```\n     */\n    @HostBinding('class.igx-drop-down__item--focused')\n    public get focused(): boolean {\n        return this.isSelectable && this._focused;\n    }\n\n    /**\n     * ```html\n     *  <igx-drop-down-item *ngFor=\"let item of items\" focused={{!item.focused}}>\n     *      <div>\n     *          {{item.field}}\n     *      </div>\n     *  </igx-drop-down-item>\n     * ```\n     */\n    public set focused(value: boolean) {\n        this._focused = value;\n    }\n\n    /**\n     * Sets/gets if the given item is header\n     * ```typescript\n     *  // get\n     *  let mySelectedItem = this.dropdown.selectedItem;\n     *  let isMyItemHeader = mySelectedItem.isHeader;\n     * ```\n     *\n     * ```html\n     *  <!--set-->\n     *  <igx-drop-down-item *ngFor=\"let item of items\">\n     *      <div *ngIf=\"items.indexOf(item) === 5; then item.isHeader = true\">\n     *          {{item.field}}\n     *      </div>\n     *  </igx-drop-down-item>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    @HostBinding('class.igx-drop-down__header')\n    public isHeader: boolean;\n\n    /**\n     * Sets/gets if the given item is disabled\n     *\n     * ```typescript\n     *  // get\n     *  let mySelectedItem = this.dropdown.selectedItem;\n     *  let myItemIsDisabled = mySelectedItem.disabled;\n     * ```\n     *\n     * ```html\n     *  <igx-drop-down-item *ngFor=\"let item of items\" disabled={{!item.disabled}}>\n     *      <div>\n     *          {{item.field}}\n     *      </div>\n     *  </igx-drop-down-item>\n     * ```\n     * **NOTE:** Drop-down items inside of a disabled `IgxDropDownGroup` will always count as disabled\n     */\n    @Input({ transform: booleanAttribute })\n    @HostBinding('attr.aria-disabled')\n    @HostBinding('class.igx-drop-down__item--disabled')\n    public get disabled(): boolean {\n        return this.group ? this.group.disabled || this._disabled : this._disabled;\n    }\n\n    public set disabled(value: boolean) {\n        this._disabled = value;\n    }\n\n    /**\n     * Gets/sets the `role` attribute of the item. Default is 'option'.\n     *\n     * ```html\n     *  <igx-drop-down-item [role]=\"customRole\"></igx-drop-down-item>\n     * ```\n     */\n    @Input()\n    @HostBinding('attr.role')\n    public role = 'option';\n\n    /**\n     * Gets item index\n     *\n     * @hidden @internal\n     */\n    public get itemIndex(): number {\n        return this.dropDown.items.indexOf(this);\n    }\n\n    /**\n     * Gets item element height\n     *\n     * @hidden @internal\n     */\n    public get elementHeight(): number {\n        return this.elementRef.nativeElement.clientHeight;\n    }\n\n    /**\n     * Get item html element\n     *\n     * @hidden @internal\n     */\n    public get element(): ElementRef {\n        return this.elementRef;\n    }\n\n    protected get hasIndex(): boolean {\n        return this._index !== null && this._index !== undefined;\n    }\n\n    /**\n     * @hidden\n     */\n    protected _focused = false;\n    protected _selected = false;\n    protected _index = null;\n    protected _disabled = false;\n    protected _label = null;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @HostListener('click', ['$event'])\n    public clicked(event): void { // eslint-disable-line\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @HostListener('mousedown', ['$event'])\n    public handleMousedown(event: MouseEvent): void {\n        if (!this.dropDown.allowItemsFocus) {\n            event.preventDefault();\n        }\n    }\n\n    public ngDoCheck(): void {\n        if (this._selected) {\n            const dropDownSelectedItem = this.dropDown.selectedItem;\n            if (!dropDownSelectedItem) {\n                this.dropDown.selectItem(this, undefined, false);\n            } else if (this.hasIndex\n                ? this._index !== dropDownSelectedItem.index || this.value !== dropDownSelectedItem.value :\n                this !== dropDownSelectedItem) {\n                this.dropDown.selectItem(this, undefined, false);\n            }\n        }\n    }\n\n    /** Returns true if the items is not a header or disabled  */\n    protected get isSelectable(): boolean {\n        return !(this.disabled || this.isHeader);\n    }\n\n    /** If `allowItemsFocus` is enabled, keep the browser focus on the active item */\n    protected ensureItemFocus() {\n        if (this.dropDown.allowItemsFocus) {\n            const focusedItem = this.dropDown.items.find((item) => item.focused);\n            if (!focusedItem) {\n                return;\n            }\n            focusedItem.element.nativeElement.focus({ preventScroll: true });\n        }\n    }\n}\n","import {\n    Component,\n    HostBinding\n} from '@angular/core';\nimport { IgxDropDownItemBaseDirective } from './drop-down-item.base';\n\n/**\n * The `<igx-drop-down-item>` is a container intended for row items in\n * a `<igx-drop-down>` container.\n */\n@Component({\n    selector: 'igx-drop-down-item',\n    templateUrl: 'drop-down-item.component.html',\n    standalone: true\n})\nexport class IgxDropDownItemComponent extends IgxDropDownItemBaseDirective {\n    /**\n     * Sets/gets if the given item is focused\n     * ```typescript\n     *  let mySelectedItem = this.dropdown.selectedItem;\n     *  let isMyItemFocused = mySelectedItem.focused;\n     * ```\n     */\n    public override get focused(): boolean {\n        let focusedState = this._focused;\n        if (this.hasIndex) {\n            const focusedItem = this.selection.first_item(`${this.dropDown.id}-active`);\n            const focusedIndex = focusedItem ? focusedItem.index : -1;\n            focusedState = this._index === focusedIndex;\n        }\n        return this.isSelectable && focusedState;\n    }\n\n    /**\n     * Sets/gets if the given item is focused\n     * ```typescript\n     *  let mySelectedItem = this.dropdown.selectedItem;\n     *  let isMyItemFocused = mySelectedItem.focused;\n     * ```\n     */\n    public override set focused(value: boolean) {\n        this._focused = value;\n    }\n    /**\n     * Sets/Gets if the item is the currently selected one in the dropdown\n     *\n     * ```typescript\n     *  let mySelectedItem = this.dropdown.selectedItem;\n     *  let isMyItemSelected = mySelectedItem.selected; // true\n     * ```\n     *\n     * Two-way data binding\n     * ```html\n     * <igx-drop-down-item [(selected)]='model.isSelected'></igx-drop-down-item>\n     * ```\n     */\n    public override get selected(): boolean {\n        if (this.hasIndex) {\n            const item = this.selection.first_item(`${this.dropDown.id}`);\n            return item ? item.index === this._index && item.value === this.value : false;\n        }\n        return this._selected;\n    }\n\n    /**\n     * Sets/Gets if the item is the currently selected one in the dropdown\n     *\n     */\n    public override set selected(value: boolean) {\n        if (this.isHeader) {\n            return;\n        }\n        this._selected = value;\n        this.selectedChange.emit(this._selected);\n    }\n    /**\n     * @hidden @internal\n     */\n    @HostBinding('attr.tabindex')\n    public get setTabIndex() {\n        const shouldSetTabIndex = this.dropDown.allowItemsFocus && this.isSelectable;\n        if (shouldSetTabIndex) {\n            return 0;\n        } else {\n            return null;\n        }\n    }\n\n    public override clicked(event): void {\n        if (!this.isSelectable) {\n            this.ensureItemFocus();\n            return;\n        }\n        if (this.selection) {\n            this.dropDown.selectItem(this, event);\n        }\n    }\n}\n","<span class=\"igx-drop-down__content\">\n    <ng-content select=\"igx-prefix, [igxPrefix]\"></ng-content>\n    <span class=\"igx-drop-down__inner\">\n        <ng-content></ng-content>\n    </span>\n    <ng-content select=\"igx-suffix, [igxSuffix]\"></ng-content>\n    <ng-content select=\"igx-divider\"></ng-content>\n</span>\n","import { Directive, Input, HostListener, inject, HostBinding } from '@angular/core';\nimport { IGX_DROPDOWN_BASE } from './drop-down.common';\nimport { IDropDownNavigationDirective } from './drop-down.common';\nimport { IgxDropDownBaseDirective } from './drop-down.base';\nimport { DropDownActionKey } from './drop-down.common';\n\n/**\n * Navigation Directive that handles keyboard events on its host and controls a targeted IgxDropDownBaseDirective component\n */\n@Directive({\n    selector: '[igxDropDownItemNavigation]',\n    standalone: true\n})\nexport class IgxDropDownItemNavigationDirective implements IDropDownNavigationDirective {\n    public dropdown = inject<IgxDropDownBaseDirective>(IGX_DROPDOWN_BASE, { self: true, optional: true });\n\n\n    protected _target: IgxDropDownBaseDirective = null;\n\n    /**\n     * Gets the target of the navigation directive;\n     *\n     * ```typescript\n     * // Get\n     * export class MyComponent {\n     *  ...\n     *  @ContentChild(IgxDropDownNavigationDirective)\n     *  navDirective: IgxDropDownNavigationDirective = null\n     *  ...\n     *  const navTarget: IgxDropDownBaseDirective = navDirective.navTarget\n     * }\n     * ```\n     */\n     public get target(): IgxDropDownBaseDirective {\n        return this._target;\n    }\n\n    /**\n     * Sets the target of the navigation directive;\n     * If no valid target is passed, it falls back to the drop down context\n     *\n     * ```html\n     * <!-- Set -->\n     * <input [igxDropDownItemNavigation]=\"dropdown\" />\n     * ...\n     * <igx-drop-down #dropdown>\n     * ...\n     * </igx-drop-down>\n     * ```\n     */\n    @Input('igxDropDownItemNavigation')\n    public set target(target: IgxDropDownBaseDirective) {\n        this._target = target ? target : this.dropdown;\n    }\n\n    @HostBinding('attr.aria-activedescendant')\n    public get activeDescendant(): string {\n        return this._target?.activeDescendant;\n    }\n\n    /**\n     * Captures keydown events and calls the appropriate handlers on the target component\n     */\n    @HostListener('keydown', ['$event'])\n    public handleKeyDown(event: KeyboardEvent) {\n        if (event) {\n            const key = event.key.toLowerCase();\n            if (!this.target.collapsed) { // If dropdown is opened\n                const navKeys = ['esc', 'escape', 'enter', 'space', 'spacebar', ' ',\n            'arrowup', 'up', 'arrowdown', 'down', 'home', 'end', 'tab'];\n                if (navKeys.indexOf(key) === -1) { // If key has appropriate function in DD\n                    return;\n                }\n                if (key !== 'tab') { // Prevent default behavior for all keys except Tab\n                    event.preventDefault();\n                    event.stopPropagation();\n                }\n            } else { // If dropdown is closed, do nothing\n                return;\n            }\n            switch (key) {\n                case 'esc':\n                case 'escape':\n                    this.target.onItemActionKey(DropDownActionKey.ESCAPE, event);\n                    break;\n                case 'enter':\n                    this.target.onItemActionKey(DropDownActionKey.ENTER, event);\n                    break;\n                case 'space':\n                case 'spacebar':\n                case ' ':\n                    this.target.onItemActionKey(DropDownActionKey.SPACE, event);\n                    break;\n                case 'arrowup':\n                case 'up':\n                    this.onArrowUpKeyDown();\n                    break;\n                case 'arrowdown':\n                case 'down':\n                    this.onArrowDownKeyDown();\n                    break;\n                case 'home':\n                    this.onHomeKeyDown();\n                    break;\n                case 'end':\n                    this.onEndKeyDown();\n                    break;\n                case 'tab':\n                    this.target.onItemActionKey(DropDownActionKey.TAB, event);\n                    break;\n                default:\n                    return;\n            }\n        }\n    }\n\n    /**\n     * Navigates to previous item\n     */\n     public onArrowDownKeyDown() {\n        this.target.navigateNext();\n    }\n\n    /**\n     * Navigates to previous item\n     */\n     public onArrowUpKeyDown() {\n        this.target.navigatePrev();\n    }\n\n    /**\n     * Navigates to target's last item\n     */\n     public onEndKeyDown() {\n        this.target.navigateLast();\n    }\n\n    /**\n     * Navigates to target's first item\n     */\n     public onHomeKeyDown() {\n        this.target.navigateFirst();\n    }\n}\n","import {\n    Input, HostBinding, ElementRef, QueryList, Output, EventEmitter, ChangeDetectorRef, Directive,\n    OnInit,\n    DOCUMENT,\n    inject\n} from '@angular/core';\n\nimport { Navigate, ISelectionEventArgs } from './drop-down.common';\nimport { IDropDownList } from './drop-down.common';\nimport { DropDownActionKey } from './drop-down.common';\nimport { IgxDropDownItemBaseDirective } from './drop-down-item.base';\n\nlet NEXT_ID = 0;\n\n/**\n * An abstract class, defining a drop-down component, with:\n * Properties for display styles and classes\n * A collection items of type `IgxDropDownItemBaseDirective`\n * Properties and methods for navigating (highlighting/focusing) items from the collection\n * Properties and methods for selecting items from the collection\n */\n@Directive()\nexport abstract class IgxDropDownBaseDirective implements IDropDownList, OnInit {\n    protected elementRef = inject(ElementRef);\n    protected cdr = inject(ChangeDetectorRef);\n    public document = inject(DOCUMENT);\n    \n    /**\n     * Emitted when item selection is changing, before the selection completes\n     *\n     * ```html\n     * <igx-drop-down (selectionChanging)='handleSelection()'></igx-drop-down>\n     * ```\n     */\n    @Output()\n    public selectionChanging = new EventEmitter<ISelectionEventArgs>();\n\n    /**\n     *  Gets/Sets the width of the drop down\n     *\n     * ```typescript\n     * // get\n     * let myDropDownCurrentWidth = this.dropdown.width;\n     * ```\n     * ```html\n     * <!--set-->\n     * <igx-drop-down [width]='160px'></igx-drop-down>\n     * ```\n     */\n    @Input()\n    public width: string;\n\n    /**\n     * Gets/Sets the height of the drop down\n     *\n     * ```typescript\n     * // get\n     * let myDropDownCurrentHeight = this.dropdown.height;\n     * ```\n     * ```html\n     * <!--set-->\n     * <igx-drop-down [height]='400px'></igx-drop-down>\n     * ```\n     */\n    @Input()\n    public height: string;\n\n    /**\n     * Gets/Sets the drop down's id\n     *\n     * ```typescript\n     * // get\n     * let myDropDownCurrentId = this.dropdown.id;\n     * ```\n     * ```html\n     * <!--set-->\n     * <igx-drop-down [id]='newDropDownId'></igx-drop-down>\n     * ```\n     */\n    @HostBinding('attr.id')\n    @Input()\n    public get id(): string {\n        return this._id;\n    }\n    public set id(value: string) {\n        this._id = value;\n    }\n\n    /**\n     * Gets/Sets the drop down's container max height.\n     *\n     * ```typescript\n     * // get\n     * let maxHeight = this.dropdown.maxHeight;\n     * ```\n     * ```html\n     * <!--set-->\n     * <igx-drop-down [maxHeight]='200px'></igx-drop-down>\n     * ```\n     */\n    @Input()\n    @HostBinding('style.maxHeight')\n    public maxHeight = null;\n\n    /**\n     * @hidden @internal\n     */\n    @HostBinding('class.igx-drop-down')\n    public cssClass = true;\n\n    /**\n     * Get all non-header items\n     *\n     * ```typescript\n     * let myDropDownItems = this.dropdown.items;\n     * ```\n     */\n    public get items(): IgxDropDownItemBaseDirective[] {\n        const items: IgxDropDownItemBaseDirective[] = [];\n        if (this.children !== undefined) {\n            for (const child of this.children.toArray()) {\n                if (!child.isHeader) {\n                    items.push(child);\n                }\n            }\n        }\n\n        return items;\n    }\n\n    /**\n     * Get all header items\n     *\n     * ```typescript\n     * let myDropDownHeaderItems = this.dropdown.headers;\n     * ```\n     */\n    public get headers(): IgxDropDownItemBaseDirective[] {\n        const headers: IgxDropDownItemBaseDirective[] = [];\n        if (this.children !== undefined) {\n            for (const child of this.children.toArray()) {\n                if (child.isHeader) {\n                    headers.push(child);\n                }\n            }\n        }\n\n        return headers;\n    }\n\n    /**\n     * Get dropdown html element\n     *\n     * ```typescript\n     * let myDropDownElement = this.dropdown.element;\n     * ```\n     */\n    public get element() {\n        return this.elementRef.nativeElement;\n    }\n    /**\n     * @hidden @internal\n     * Get dropdown's html element of its scroll container\n     */\n    public get scrollContainer(): HTMLElement {\n        return this.element;\n    }\n\n    /**\n     * @hidden @internal\n     * Gets the id of the focused item during dropdown navigation.\n     * This is used to update the `aria-activedescendant` attribute of\n     * the IgxDropDownNavigationDirective host element.\n     */\n    public get activeDescendant (): string {\n        return this.focusedItem ? this.focusedItem.id : null;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public children: QueryList<IgxDropDownItemBaseDirective>;\n\n    protected _width;\n    protected _height;\n    protected _focusedItem: any = null;\n    protected _id = `igx-drop-down-${NEXT_ID++}`;\n    protected computedStyles;\n\n    /**\n     * Gets if the dropdown is collapsed\n     */\n    public abstract readonly collapsed: boolean;\n\n    public ngOnInit(): void {\n        this.computedStyles = this.document.defaultView.getComputedStyle(this.elementRef.nativeElement);\n    }\n\n    /** Keydown Handler */\n    public onItemActionKey(key: DropDownActionKey, event?: Event) {\n        switch (key) {\n            case DropDownActionKey.ENTER:\n            case DropDownActionKey.SPACE:\n                this.selectItem(this.focusedItem, event);\n                break;\n            case DropDownActionKey.ESCAPE:\n            case DropDownActionKey.TAB:\n        }\n    }\n\n    /**\n     * Emits selectionChanging with the target item & event\n     *\n     * @hidden @internal\n     * @param newSelection the item selected\n     * @param event the event that triggered the call\n     */\n    public selectItem(newSelection?: IgxDropDownItemBaseDirective, event?: Event, emit = true) {  // eslint-disable-line\n        this.selectionChanging.emit({\n            newSelection,\n            oldSelection: null,\n            cancel: false\n        });\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public get focusedItem(): IgxDropDownItemBaseDirective {\n        return this._focusedItem;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public set focusedItem(item: IgxDropDownItemBaseDirective) {\n        this._focusedItem = item;\n    }\n\n    /**\n     * Navigates to the item on the specified index\n     *\n     * @param newIndex number - the index of the item in the `items` collection\n     */\n    public navigateItem(newIndex: number) {\n        if (newIndex !== -1) {\n            const oldItem = this._focusedItem;\n            const newItem = this.items[newIndex];\n            if (oldItem) {\n                oldItem.focused = false;\n            }\n            this.focusedItem = newItem;\n            this.scrollToHiddenItem(newItem);\n            this.focusedItem.focused = true;\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public navigateFirst() {\n        this.navigate(Navigate.Down, -1);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public navigateLast() {\n        this.navigate(Navigate.Up, this.items.length);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public navigateNext() {\n        this.navigate(Navigate.Down);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public navigatePrev() {\n        this.navigate(Navigate.Up);\n    }\n\n    protected scrollToHiddenItem(newItem: IgxDropDownItemBaseDirective) {\n        const elementRect = newItem.element.nativeElement.getBoundingClientRect();\n        const parentRect = this.scrollContainer.getBoundingClientRect();\n        if (parentRect.top > elementRect.top) {\n            this.scrollContainer.scrollTop -= (parentRect.top - elementRect.top);\n        }\n\n        if (parentRect.bottom < elementRect.bottom) {\n            this.scrollContainer.scrollTop += (elementRect.bottom - parentRect.bottom);\n        }\n    }\n\n    protected navigate(direction: Navigate, currentIndex?: number) {\n        let index = -1;\n        if (this._focusedItem) {\n            index = currentIndex ? currentIndex : this.focusedItem.itemIndex;\n        }\n        const newIndex = this.getNearestSiblingFocusableItemIndex(index, direction);\n        this.navigateItem(newIndex);\n    }\n\n    protected getNearestSiblingFocusableItemIndex(startIndex: number, direction: Navigate): number {\n        let index = startIndex;\n        const items = this.items;\n        while (items[index + direction] && items[index + direction].disabled) {\n            index += direction;\n        }\n\n        index += direction;\n        if (index >= 0 && index < items.length) {\n            return index;\n        } else {\n            return -1;\n        }\n    }\n}\n","import {\n    Component,\n    ContentChildren,\n    ElementRef,\n    forwardRef,\n    QueryList,\n    OnChanges,\n    Input,\n    OnDestroy,\n    ViewChild,\n    ContentChild,\n    AfterViewInit,\n    Output,\n    EventEmitter,\n    SimpleChanges,\n    booleanAttribute,\n    inject} from '@angular/core';\nimport { IgxToggleDirective, ToggleViewEventArgs } from 'igniteui-angular/directives';\nimport { IgxDropDownItemComponent } from './drop-down-item.component';\nimport { IgxDropDownBaseDirective } from './drop-down.base';\nimport { DropDownActionKey, Navigate } from './drop-down.common';\nimport { IGX_DROPDOWN_BASE, IDropDownBase } from './drop-down.common';\nimport { ISelectionEventArgs } from './drop-down.common';\nimport { IBaseCancelableBrowserEventArgs, IBaseEventArgs } from 'igniteui-angular/core';\nimport { IgxSelectionAPIService } from 'igniteui-angular/core';\nimport { Subject } from 'rxjs';\nimport { IgxDropDownItemBaseDirective } from './drop-down-item.base';\nimport { IgxForOfToken } from 'igniteui-angular/directives';\nimport { take } from 'rxjs/operators';\nimport { OverlaySettings } from 'igniteui-angular/core';\nimport { ConnectedPositioningStrategy } from 'igniteui-angular/core';\n\n/**\n * **Ignite UI for Angular DropDown** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/drop-down)\n *\n * The Ignite UI for Angular Drop Down displays a scrollable list of items which may be visually grouped and\n * supports selection of a single item. Clicking or tapping an item selects it and closes the Drop Down\n *\n * Example:\n * ```html\n * <igx-drop-down>\n *   <igx-drop-down-item *ngFor=\"let item of items\" disabled={{item.disabled}} isHeader={{item.header}}>\n *     {{ item.value }}\n *   </igx-drop-down-item>\n * </igx-drop-down>\n * ```\n */\n\n@Component({\n    selector: 'igx-drop-down',\n    templateUrl: './drop-down.component.html',\n    providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxDropDownComponent }],\n    imports: [IgxToggleDirective]\n})\nexport class IgxDropDownComponent extends IgxDropDownBaseDirective implements IDropDownBase, OnChanges, AfterViewInit, OnDestroy {\n    protected selection = inject(IgxSelectionAPIService);\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @ContentChildren(forwardRef(() => IgxDropDownItemComponent), { descendants: true })\n    public override children: QueryList<IgxDropDownItemBaseDirective>;\n\n    /**\n     * Emitted before the dropdown is opened\n     *\n     * ```html\n     * <igx-drop-down (opening)='handleOpening($event)'></igx-drop-down>\n     * ```\n     */\n    @Output()\n    public opening = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n    /**\n     * Emitted after the dropdown is opened\n     *\n     * ```html\n     * <igx-drop-down (opened)='handleOpened($event)'></igx-drop-down>\n     * ```\n     */\n    @Output()\n    public opened = new EventEmitter<IBaseEventArgs>();\n\n    /**\n     * Emitted before the dropdown is closed\n     *\n     * ```html\n     * <igx-drop-down (closing)='handleClosing($event)'></igx-drop-down>\n     * ```\n     */\n    @Output()\n    public closing = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n    /**\n     * Emitted after the dropdown is closed\n     *\n     * ```html\n     * <igx-drop-down (closed)='handleClosed($event)'></igx-drop-down>\n     * ```\n     */\n    @Output()\n    public closed = new EventEmitter<IBaseEventArgs>();\n\n    /**\n     * Gets/sets whether items take focus. Disabled by default.\n     * When enabled, drop down items gain tab index and are focused when active -\n     * this includes activating the selected item when opening the drop down and moving with keyboard navigation.\n     *\n     * Note: Keep that focus shift in mind when using the igxDropDownItemNavigation directive\n     * and ensure it's placed either on each focusable item or a common ancestor to allow it to handle keyboard events.\n     *\n     * ```typescript\n     * // get\n     * let dropDownAllowsItemFocus = this.dropdown.allowItemsFocus;\n     * ```\n     *\n     * ```html\n     * <!--set-->\n     * <igx-drop-down [allowItemsFocus]='true'></igx-drop-down>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public allowItemsFocus = false;\n\n    /**\n     * Sets aria-labelledby attribute value.\n     * ```html\n     * <igx-drop-down [labelledby]=\"labelId\"></igx-drop-down>\n     * ```\n     */\n    @Input()\n    public labelledBy: string;\n\n    /**\n     * Gets/sets the `role` attribute of the drop down. Default is 'listbox'.\n     *\n     * ```html\n     *  <igx-drop-down [role]=\"customRole\"></igx-drop-down-item>\n     * ```\n     */\n    @Input()\n    public role = 'listbox';\n\n    @ContentChild(IgxForOfToken)\n    protected virtDir: IgxForOfToken<any>;\n\n    @ViewChild(IgxToggleDirective, { static: true })\n    protected toggleDirective: IgxToggleDirective;\n\n    @ViewChild('scrollContainer', { static: true })\n    protected scrollContainerRef: ElementRef;\n\n    /**\n     * @hidden @internal\n     */\n    public override get focusedItem(): IgxDropDownItemBaseDirective {\n        if (this.virtDir) {\n            return this._focusedItem && this._focusedItem.index !== -1 ?\n                (this.children.find(e => e.index === this._focusedItem.index) || null) :\n                null;\n        }\n        return this._focusedItem;\n    }\n\n    public override set focusedItem(value: IgxDropDownItemBaseDirective) {\n        if (!value) {\n            this.selection.clear(`${this.id}-active`);\n            this._focusedItem = null;\n            return;\n        }\n        this._focusedItem = value;\n        if (this.virtDir) {\n            this._focusedItem = {\n                value: value.value,\n                index: value.index\n            } as IgxDropDownItemBaseDirective;\n        }\n        this.selection.set(`${this.id}-active`, new Set([this._focusedItem]));\n    }\n\n    public override get id(): string {\n        return this._id;\n    }\n    public override set id(value: string) {\n        this.selection.set(value, this.selection.get(this.id));\n        this.selection.clear(this.id);\n        this.selection.set(value, this.selection.get(`${this.id}-active`));\n        this.selection.clear(`${this.id}-active`);\n        this._id = value;\n    }\n\n    /** Id of the internal listbox of the drop down */\n    public get listId() {\n        return this.id + '-list';\n    }\n\n    /**\n     * Get currently selected item\n     *\n     * ```typescript\n     * let currentItem = this.dropdown.selectedItem;\n     * ```\n     */\n    public get selectedItem(): IgxDropDownItemBaseDirective {\n        const selectedItem = this.selection.first_item(this.id);\n        if (selectedItem) {\n            return selectedItem;\n        }\n        return null;\n    }\n\n    /**\n     * Gets if the dropdown is collapsed\n     *\n     * ```typescript\n     * let isCollapsed = this.dropdown.collapsed;\n     * ```\n     */\n    public get collapsed(): boolean {\n        return this.toggleDirective.collapsed;\n    }\n\n    /** @hidden @internal */\n    public override get scrollContainer(): HTMLElement {\n        return this.scrollContainerRef.nativeElement;\n    }\n\n    protected get collectionLength() {\n        if (this.virtDir) {\n            return this.virtDir.totalItemCount || this.virtDir.igxForOf.length;\n        }\n    }\n\n    protected destroy$ = new Subject<boolean>();\n    protected _scrollPosition: number;\n\n    /**\n     * Opens the dropdown\n     *\n     * ```typescript\n     * this.dropdown.open();\n     * ```\n     */\n    public open(overlaySettings?: OverlaySettings) {\n        const settings = { ... {}, ...this.getDefaultOverlaySettings(), ...overlaySettings };\n        this.toggleDirective.open(settings);\n        this.updateScrollPosition();\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public getDefaultOverlaySettings(): OverlaySettings {\n        return {\n            closeOnOutsideClick: true,\n            modal: false,\n            positionStrategy: new ConnectedPositioningStrategy()\n        };\n    }\n\n    /**\n     * Closes the dropdown\n     *\n     * ```typescript\n     * this.dropdown.close();\n     * ```\n     */\n    public close(event?: Event) {\n        this.toggleDirective.close(event);\n    }\n\n    /**\n     * Toggles the dropdown\n     *\n     * ```typescript\n     * this.dropdown.toggle();\n     * ```\n     */\n    public toggle(overlaySettings?: OverlaySettings) {\n        if (this.collapsed || this.toggleDirective.isClosing) {\n            this.open(overlaySettings);\n        } else {\n            this.close();\n        }\n    }\n\n    /**\n     * Select an item by index\n     *\n     * @param index of the item to select; If the drop down uses *igxFor, pass the index in data\n     */\n    public setSelectedItem(index: number) {\n        if (index < 0 || index >= this.items.length) {\n            return;\n        }\n        let newSelection: IgxDropDownItemBaseDirective;\n        if (this.virtDir) {\n            newSelection = {\n                value: this.virtDir.igxForOf[index],\n                index\n            } as IgxDropDownItemBaseDirective;\n        } else {\n            newSelection = this.items[index];\n        }\n        this.selectItem(newSelection);\n    }\n\n    /**\n     * Navigates to the item on the specified index\n     * If the data in the drop-down is virtualized, pass the index of the item in the virtualized data.\n     *\n     * @param newIndex number\n     */\n    public override navigateItem(index: number) {\n        if (this.virtDir) {\n            if (index === -1 || index >= this.collectionLength) {\n                return;\n            }\n            const direction = index > (this.focusedItem ? this.focusedItem.index : -1) ? Navigate.Down : Navigate.Up;\n            const subRequired = this.isIndexOutOfBounds(index, direction);\n            this.focusedItem = {\n                value: this.virtDir.igxForOf[index],\n                index\n            } as IgxDropDownItemBaseDirective;\n            if (subRequired) {\n                this.virtDir.scrollTo(index);\n            }\n            if (subRequired) {\n                this.virtDir.chunkLoad.pipe(take(1)).subscribe(() => {\n                    this.skipHeader(direction);\n                });\n            } else {\n                this.skipHeader(direction);\n            }\n        } else {\n            super.navigateItem(index);\n        }\n        if (this.allowItemsFocus && this.focusedItem) {\n            this.focusedItem.element.nativeElement.focus();\n            this.cdr.markForCheck();\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public updateScrollPosition() {\n        if (!this.virtDir) {\n            return;\n        }\n        if (!this.selectedItem) {\n            this.virtDir.scrollTo(0);\n            return;\n        }\n        let targetScroll = this.virtDir.getScrollForIndex(this.selectedItem.index);\n        // TODO: This logic _cannot_ be right, those are optional user-provided inputs that can be strings with units, refactor:\n        const itemsInView = this.virtDir.igxForContainerSize / this.virtDir.igxForItemSize;\n        targetScroll -= (itemsInView / 2 - 1) * this.virtDir.igxForItemSize;\n        this.virtDir.getScroll().scrollTop = targetScroll;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public onToggleOpening(e: IBaseCancelableBrowserEventArgs) {\n        const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: false };\n        this.opening.emit(args);\n        e.cancel = args.cancel;\n        if (e.cancel) {\n            return;\n        }\n\n        if (this.virtDir) {\n            this.virtDir.scrollPosition = this._scrollPosition;\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public onToggleContentAppended(_event: ToggleViewEventArgs) {\n        if (!this.virtDir && this.selectedItem) {\n            this.scrollToItem(this.selectedItem);\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public onToggleOpened() {\n        this.updateItemFocus();\n        this.opened.emit({ owner: this });\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public onToggleClosing(e: IBaseCancelableBrowserEventArgs) {\n        const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: false };\n        this.closing.emit(args);\n        e.cancel = args.cancel;\n        if (e.cancel) {\n            return;\n        }\n        if (this.virtDir) {\n            this._scrollPosition = this.virtDir.scrollPosition;\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public onToggleClosed() {\n        this.focusItem(false);\n        this.closed.emit({ owner: this });\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public ngOnDestroy() {\n        this.destroy$.next(true);\n        this.destroy$.complete();\n        this.selection.delete(this.id);\n        this.selection.delete(`${this.id}-active`);\n    }\n\n    /** @hidden @internal */\n    public calculateScrollPosition(item: IgxDropDownItemBaseDirective): number {\n        if (!item) {\n            return 0;\n        }\n\n        const elementRect = item.element.nativeElement.getBoundingClientRect();\n        const parentRect = this.scrollContainer.getBoundingClientRect();\n        const scrollDelta = parentRect.top - elementRect.top;\n        let scrollPosition = this.scrollContainer.scrollTop - scrollDelta;\n\n        const dropDownHeight = this.scrollContainer.clientHeight;\n        scrollPosition -= dropDownHeight / 2;\n        scrollPosition += item.elementHeight / 2;\n\n        return Math.floor(scrollPosition);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.id) {\n            // temp workaround until fix --> https://github.com/angular/angular/issues/34992\n            this.toggleDirective.id = changes.id.currentValue;\n        }\n    }\n\n    public ngAfterViewInit() {\n        if (this.virtDir) {\n            this.virtDir.igxForItemSize = 28;\n        }\n    }\n\n    /** Keydown Handler */\n    public override onItemActionKey(key: DropDownActionKey, event?: Event) {\n        super.onItemActionKey(key, event);\n        this.close(event);\n    }\n\n    /**\n     * Virtual scroll implementation\n     *\n     * @hidden @internal\n     */\n    public override navigateFirst() {\n        if (this.virtDir) {\n            this.navigateItem(0);\n        } else {\n            super.navigateFirst();\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override navigateLast() {\n        if (this.virtDir) {\n            this.navigateItem(this.virtDir.totalItemCount ? this.virtDir.totalItemCount - 1 : this.virtDir.igxForOf.length - 1);\n        } else {\n            super.navigateLast();\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override navigateNext() {\n        if (this.virtDir) {\n            this.navigateItem(this._focusedItem ? this._focusedItem.index + 1 : 0);\n        } else {\n            super.navigateNext();\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override navigatePrev() {\n        if (this.virtDir) {\n            this.navigateItem(this._focusedItem ? this._focusedItem.index - 1 : 0);\n        } else {\n            super.navigatePrev();\n        }\n    }\n\n    /**\n     * Handles the `selectionChanging` emit and the drop down toggle when selection changes\n     *\n     * @hidden\n     * @internal\n     * @param newSelection\n     * @param emit\n     * @param event\n     */\n    public override selectItem(newSelection?: IgxDropDownItemBaseDirective, event?: Event, emit = true) {\n        const oldSelection = this.selectedItem;\n        if (!newSelection) {\n            newSelection = this.focusedItem;\n        }\n        if (newSelection === null) {\n            return;\n        }\n        if (newSelection instanceof IgxDropDownItemBaseDirective && newSelection.isHeader) {\n            return;\n        }\n        if (this.virtDir) {\n            newSelection = {\n                value: newSelection.value,\n                index: newSelection.index\n            } as IgxDropDownItemBaseDirective;\n        }\n        const args: ISelectionEventArgs = { oldSelection, newSelection, cancel: false, owner: this };\n\n        if (emit) {\n            this.selectionChanging.emit(args);\n        }\n\n        if (!args.cancel) {\n            if (this.isSelectionValid(args.newSelection)) {\n                this.selection.set(this.id, new Set([args.newSelection]));\n                if (!this.virtDir) {\n                    if (oldSelection) {\n                        oldSelection.selected = false;\n                    }\n                    if (args.newSelection) {\n                        args.newSelection.selected = true;\n                    }\n                }\n                if (event) {\n                    this.toggleDirective.close(event);\n                }\n            } else {\n                throw new Error('Please provide a valid drop-down item for the selection!');\n            }\n        }\n    }\n\n    /**\n     * Clears the selection of the dropdown\n     * ```typescript\n     * this.dropdown.clearSelection();\n     * ```\n     */\n    public clearSelection() {\n        const oldSelection = this.selectedItem;\n        const newSelection: IgxDropDownItemBaseDirective = null;\n        const args: ISelectionEventArgs = { oldSelection, newSelection, cancel: false, owner: this };\n        this.selectionChanging.emit(args);\n        if (this.selectedItem && !args.cancel) {\n            this.selectedItem.selected = false;\n            this.selection.clear(this.id);\n        }\n    }\n\n    /**\n     * Checks whether the selection is valid\n     * `null` - the selection should be emptied\n     * Virtual? - the selection should at least have and `index` and `value` property\n     * Non-virtual? - the selection should be a valid drop-down item and **not** be a header\n     */\n    protected isSelectionValid(selection: any): boolean {\n        return selection === null\n            || (this.virtDir && selection.hasOwnProperty('value') && selection.hasOwnProperty('index'))\n            || (selection instanceof IgxDropDownItemComponent && !selection.isHeader);\n    }\n\n    protected scrollToItem(item: IgxDropDownItemBaseDirective) {\n        this.scrollContainer.scrollTop = this.calculateScrollPosition(item);\n    }\n\n    protected focusItem(value: boolean) {\n        if (value || this._focusedItem) {\n            this._focusedItem.focused = value;\n        }\n    }\n\n    protected updateItemFocus() {\n        if (this.selectedItem) {\n            this.focusedItem = this.selectedItem;\n            this.focusItem(true);\n        } else if (this.allowItemsFocus) {\n            this.navigateFirst();\n        }\n    }\n\n    protected skipHeader(direction: Navigate) {\n        if (!this.focusedItem) {\n            return;\n        }\n        if (this.focusedItem.isHeader || this.focusedItem.disabled) {\n            if (direction === Navigate.Up) {\n                this.navigatePrev();\n            } else {\n                this.navigateNext();\n            }\n        }\n    }\n\n    private isIndexOutOfBounds(index: number, direction: Navigate) {\n        const virtState = this.virtDir.state;\n        const currentPosition = this.virtDir.getScroll().scrollTop;\n        const itemPosition = this.virtDir.getScrollForIndex(index, direction === Navigate.Down);\n        const indexOutOfChunk = index < virtState.startIndex || index > virtState.chunkSize + virtState.startIndex;\n        const scrollNeeded = direction === Navigate.Down ? currentPosition < itemPosition : currentPosition > itemPosition;\n        const subRequired = indexOutOfChunk || scrollNeeded;\n        return subRequired;\n    }\n}\n\n","<div class=\"igx-drop-down__list\" [style.width]=\"width\"\n    igxToggle\n    (appended)=\"onToggleContentAppended($event)\"\n    (opening)=\"onToggleOpening($event)\" (opened)=\"onToggleOpened()\"\n    (closing)=\"onToggleClosing($event)\" (closed)=\"onToggleClosed()\">\n    <div class=\"igx-drop-down__list-scroll\" #scrollContainer [attr.id]=\"listId\" [attr.role]=\"role\" [attr.aria-labelledby]=\"labelledBy\"\n        [style.height]=\"height\"\n        [style.maxHeight]=\"maxHeight\">\n        @if (!collapsed) {\n            <ng-content></ng-content>\n        }\n    </div>\n</div>\n","import { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, Output, AfterViewInit, OnInit, booleanAttribute, inject } from '@angular/core';\nimport { NgModel, FormControlName } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CancelableEventArgs, IBaseEventArgs, IgxOverlayOutletDirective } from 'igniteui-angular/core';\nimport {\n    AbsoluteScrollStrategy,\n    AutoPositionStrategy,\n    IPositionStrategy,\n    IScrollStrategy,\n    OverlaySettings\n} from 'igniteui-angular/core';\nimport { IgxDropDownComponent } from '../drop-down.component';\nimport { IgxDropDownItemNavigationDirective } from '../drop-down-navigation.directive';\nimport { ISelectionEventArgs } from '../drop-down.common';\nimport { IgxInputGroupComponent } from 'igniteui-angular/input-group';\n\n/**\n * Interface that encapsulates onItemSelection event arguments - new value and cancel selection.\n *\n * @export\n */\nexport interface AutocompleteSelectionChangingEventArgs extends CancelableEventArgs, IBaseEventArgs {\n    /**\n     * New value selected from the drop down\n     */\n    value: string;\n}\n\nexport interface AutocompleteOverlaySettings {\n    /** Position strategy to use with this settings */\n    positionStrategy?: IPositionStrategy;\n    /** Scroll strategy to use with this settings */\n    scrollStrategy?: IScrollStrategy;\n    /** Set the outlet container to attach the overlay to */\n    outlet?: IgxOverlayOutletDirective | ElementRef;\n}\n\n/**\n * **Ignite UI for Angular Autocomplete** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/autocomplete.html)\n *\n * The igxAutocomplete directive provides a way to enhance a text input\n * by showing a drop down of suggested options, provided by the developer.\n *\n * Example:\n * ```html\n * <input type=\"text\" [igxAutocomplete]=\"townsPanel\" #autocompleteRef=\"igxAutocomplete\"/>\n * <igx-drop-down #townsPanel>\n *     <igx-drop-down-item *ngFor=\"let town of towns | startsWith:townSelected\" [value]=\"town\">\n *         {{town}}\n *     </igx-drop-down-item>\n * </igx-drop-down>\n * ```\n */\n@Directive({\n    selector: '[igxAutocomplete]',\n    exportAs: 'igxAutocomplete',\n    standalone: true\n})\nexport class IgxAutocompleteDirective extends IgxDropDownItemNavigationDirective implements OnDestroy, AfterViewInit, OnInit {\n    protected ngModel = inject<NgModel>(NgModel, { self: true, optional: true });\n    protected formControl = inject<FormControlName>(FormControlName, { self: true, optional: true });\n    protected group = inject(IgxInputGroupComponent, { optional: true });\n    protected elementRef = inject(ElementRef);\n    protected cdr = inject(ChangeDetectorRef);\n\n    /**\n     * Sets the target of the autocomplete directive\n     *\n     * ```html\n     * <!-- Set -->\n     * <input [igxAutocomplete]=\"dropdown\" />\n     * ...\n     * <igx-drop-down #dropdown>\n     * ...\n     * </igx-drop-down>\n     * ```\n     */\n    @Input('igxAutocomplete')\n    public override get target(): IgxDropDownComponent {\n        return this._target as IgxDropDownComponent;\n    }\n    public override set target(v: IgxDropDownComponent) {\n        this._target = v;\n    }\n\n    /**\n     * Provide overlay settings for the autocomplete drop down\n     *\n     * ```typescript\n     * // get\n     * let settings = this.autocomplete.autocompleteSettings;\n     * ```\n     * ```html\n     * <!--set-->\n     * <input type=\"text\" [igxAutocomplete]=\"townsPanel\" [igxAutocompleteSettings]=\"settings\"/>\n     * ```\n     * ```typescript\n     * // set\n     * this.settings = {\n     *  positionStrategy: new ConnectedPositioningStrategy({\n     *      closeAnimation: null,\n     *      openAnimation: null\n     *  })\n     * };\n     * ```\n     */\n    @Input('igxAutocompleteSettings')\n    public autocompleteSettings: AutocompleteOverlaySettings;\n\n    /** @hidden @internal */\n    @HostBinding('attr.autocomplete')\n    public autofill = 'off';\n\n    /** @hidden  @internal */\n    @HostBinding('attr.role')\n    public role = 'combobox';\n\n    /**\n     * Enables/disables autocomplete component\n     *\n     * ```typescript\n     * // get\n     * let disabled = this.autocomplete.disabled;\n     * ```\n     * ```html\n     * <!--set-->\n     * <input type=\"text\" [igxAutocomplete]=\"townsPanel\" [igxAutocompleteDisabled]=\"disabled\"/>\n     * ```\n     * ```typescript\n     * // set\n     * public disabled = true;\n     * ```\n     */\n    @Input({ alias: 'igxAutocompleteDisabled', transform: booleanAttribute })\n    public disabled = false;\n\n    /**\n     * Emitted after item from the drop down is selected\n     *\n     * ```html\n     * <input igxInput [igxAutocomplete]=\"townsPanel\" (selectionChanging)='selectionChanging($event)' />\n     * ```\n     */\n    @Output()\n    public selectionChanging = new EventEmitter<AutocompleteSelectionChangingEventArgs>();\n\n    /** @hidden @internal */\n    public get nativeElement(): HTMLInputElement {\n        return this.elementRef.nativeElement;\n    }\n\n    /** @hidden @internal */\n    public get parentElement(): HTMLElement {\n        return this.group ? this.group.element.nativeElement : this.nativeElement;\n    }\n\n    private get settings(): OverlaySettings {\n        const settings = Object.assign({}, this.defaultSettings, this.autocompleteSettings);\n        if (!settings.target) {\n            const positionStrategyClone: IPositionStrategy = settings.positionStrategy.clone();\n            settings.target = this.parentElement;\n            settings.positionStrategy = positionStrategyClone;\n        }\n        return settings;\n    }\n\n    /** @hidden  @internal */\n    @HostBinding('attr.aria-expanded')\n    public get ariaExpanded() {\n        return !this.collapsed;\n    }\n\n    /** @hidden  @internal */\n    @HostBinding('attr.aria-haspopup')\n    public get hasPopUp() {\n        return 'listbox';\n    }\n\n    /** @hidden  @internal */\n    @HostBinding('attr.aria-owns')\n    public get ariaOwns() {\n        return this.target.listId;\n    }\n\n    /** @hidden  @internal */\n    @HostBinding('attr.aria-activedescendant')\n    public get ariaActiveDescendant() {\n        return !this.target.collapsed && this.target.focusedItem ? this.target.focusedItem.id : null;\n    }\n\n    /** @hidden  @internal */\n    @HostBinding('attr.aria-autocomplete')\n    public get ariaAutocomplete() {\n        return 'list';\n    }\n\n    protected _composing: boolean;\n    protected id: string;\n    protected get model() {\n        return this.ngModel || this.formControl;\n    }\n\n    private _shouldBeOpen = false;\n    private destroy$ = new Subject<void>();\n    private defaultSettings: OverlaySettings;\n\n    /** @hidden  @internal */\n    @HostListener('input')\n    public onInput() {\n        this.open();\n    }\n\n    /** @hidden @internal */\n    @HostListener('compositionstart')\n    public onCompositionStart(): void {\n        if (!this._composing) {\n            this._composing = true;\n        }\n    }\n\n    /** @hidden @internal */\n    @HostListener('compositionend')\n    public onCompositionEnd(): void {\n        this._composing = false;\n    }\n\n    /** @hidden  @internal */\n    @HostListener('keydown.ArrowDown', ['$event'])\n    @HostListener('keydown.Alt.ArrowDown', ['$event'])\n    @HostListener('keydown.ArrowUp', ['$event'])\n    @HostListener('keydown.Alt.ArrowUp', ['$event'])\n    public onArrowDown(event: Event) {\n        event.preventDefault();\n        this.open();\n    }\n\n    /** @hidden  @internal */\n    @HostListener('keydown.Tab')\n    @HostListener('keydown.Shift.Tab')\n    public onTab() {\n        this.close();\n    }\n\n    /** @hidden  @internal */\n    public override handleKeyDown(event) {\n        if (!this.collapsed && !this._composing) {\n            switch (event.key.toLowerCase()) {\n                case 'space':\n                case 'spacebar':\n                case ' ':\n                case 'home':\n                case 'end':\n                case 'tab':\n                    return;\n                default:\n                    super.handleKeyDown(event);\n            }\n        }\n    }\n\n    /** @hidden  @internal */\n    public override onArrowDownKeyDown() {\n        super.onArrowDownKeyDown();\n    }\n\n    /** @hidden  @internal */\n    public override onArrowUpKeyDown() {\n        super.onArrowUpKeyDown();\n    }\n\n    /** @hidden  @internal */\n    public override onEndKeyDown() {\n        super.onEndKeyDown();\n    }\n\n    /** @hidden  @internal */\n    public override onHomeKeyDown() {\n        super.onHomeKeyDown();\n    }\n\n    /**\n     * Closes autocomplete drop down\n     */\n    public close() {\n        this._shouldBeOpen = false;\n        if (this.collapsed) {\n            return;\n        }\n        this.target.close();\n    }\n\n    /**\n     * Opens autocomplete drop down\n     */\n    public open() {\n        this._shouldBeOpen = true;\n        if (this.disabled || !this.collapsed || this.target.children.length === 0) {\n            return;\n        }\n        // if no drop-down width is set, the drop-down will be as wide as the autocomplete input;\n        this.target.width = this.target.width || (this.parentElement.clientWidth + 'px');\n        this.target.open(this.settings);\n        this.highlightFirstItem();\n    }\n\n    /** @hidden @internal */\n    public ngOnInit() {\n        const targetElement = this.parentElement;\n        this.defaultSettings = {\n            target: targetElement,\n            modal: false,\n            scrollStrategy: new AbsoluteScrollStrategy(),\n            positionStrategy: new AutoPositionStrategy(),\n            excludeFromOutsideClick: [targetElement]\n        };\n    }\n\n    /** @hidden */\n    public ngOnDestroy() {\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    public ngAfterViewInit() {\n        this.target.children.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            if (this.target.children.length) {\n                if (!this.collapsed) {\n                    this.highlightFirstItem();\n                } else if (this._shouldBeOpen) {\n                    this.open();\n                }\n            } else {\n                // _shouldBeOpen flag should remain unchanged since this state change doesn't come from outside of the component\n                // (like in the case of public API or user interaction).\n                this.target.close();\n            }\n        });\n        this.target.selectionChanging.pipe(takeUntil(this.destroy$)).subscribe(this.select.bind(this));\n    }\n\n    private get collapsed(): boolean {\n        return this.target ? this.target.collapsed : true;\n    }\n\n    private select(value: ISelectionEventArgs) {\n        if (!value.newSelection) {\n            return;\n        }\n        value.cancel = true; // Disable selection in the drop down, because in autocomplete we do not save selection.\n        const newValue = value.newSelection.value;\n        const args: AutocompleteSelectionChangingEventArgs = { value: newValue, cancel: false };\n        this.selectionChanging.emit(args);\n        if (args.cancel) {\n            return;\n        }\n        this.close();\n\n        // Update model after the input is re-focused, in order to have proper valid styling.\n        // Otherwise when item is selected using mouse (and input is blurred), then valid style will be removed.\n        if (this.model) {\n            this.model.control.setValue(newValue);\n        } else {\n            this.nativeElement.value = newValue;\n        }\n    }\n\n    private highlightFirstItem() {\n        if (this.target.focusedItem) {\n            this.target.focusedItem.focused = false;\n            this.target.focusedItem = null;\n        }\n        this.target.navigateFirst();\n        this.cdr.detectChanges();\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { IgxAutocompleteDirective } from './autocomplete.directive';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [IgxAutocompleteDirective],\n    exports: [IgxAutocompleteDirective]\n})\nexport class IgxAutocompleteModule { }\n","import { IgxDropDownGroupComponent } from './drop-down-group.component';\nimport { IgxDropDownItemComponent } from './drop-down-item.component';\nimport { IgxDropDownItemNavigationDirective } from './drop-down-navigation.directive';\nimport { IgxDropDownComponent } from './drop-down.component';\n\nexport * from './drop-down.component';\nexport * from './drop-down.base';\nexport * from './drop-down-item.base';\nexport * from './drop-down.common'\nexport * from './drop-down-item.component';\nexport { ISelectionEventArgs, IDropDownNavigationDirective } from './drop-down.common';\nexport * from './drop-down-navigation.directive';\nexport * from './drop-down-group.component';\nexport * from './autocomplete/autocomplete.directive';\nexport * from './autocomplete/autocomplete.module';\n\n/* NOTE: Drop down directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_DROP_DOWN_DIRECTIVES = [\n    IgxDropDownComponent,\n    IgxDropDownItemComponent,\n    IgxDropDownGroupComponent,\n    IgxDropDownItemNavigationDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_DROP_DOWN_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_DROP_DOWN_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_DROP_DOWN_DIRECTIVES\n    ]\n})\nexport class IgxDropDownModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NEXT_ID","i1.IgxDropDownComponent","i2.IgxDropDownItemComponent","i3.IgxDropDownGroupComponent","i4.IgxDropDownItemNavigationDirective"],"mappings":"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"}