igniteui-angular 21.0.8 → 21.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/fesm2022/igniteui-angular-drop-down.mjs +1 -0
  2. package/fesm2022/igniteui-angular-drop-down.mjs.map +1 -1
  3. package/fesm2022/igniteui-angular-grids-core.mjs +12 -8
  4. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  5. package/lib/core/styles/components/stepper/_stepper-theme.scss +1 -4
  6. package/package.json +1 -1
  7. package/styles/igniteui-angular-dark.css +1 -1
  8. package/styles/igniteui-angular.css +1 -1
  9. package/styles/igniteui-bootstrap-dark.css +1 -1
  10. package/styles/igniteui-bootstrap-light.css +1 -1
  11. package/styles/igniteui-dark-green.css +1 -1
  12. package/styles/igniteui-fluent-dark-excel.css +1 -1
  13. package/styles/igniteui-fluent-dark-word.css +1 -1
  14. package/styles/igniteui-fluent-dark.css +1 -1
  15. package/styles/igniteui-fluent-light-excel.css +1 -1
  16. package/styles/igniteui-fluent-light-word.css +1 -1
  17. package/styles/igniteui-fluent-light.css +1 -1
  18. package/styles/igniteui-indigo-dark.css +1 -1
  19. package/styles/igniteui-indigo-light.css +1 -1
  20. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  21. package/styles/maps/igniteui-angular.css.map +1 -1
  22. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  23. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  24. package/styles/maps/igniteui-dark-green.css.map +1 -1
  25. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  26. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  27. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  28. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  29. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  30. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  31. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  32. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -1605,6 +1605,7 @@ class IgxAutocompleteDirective extends IgxDropDownItemNavigationDirective {
1605
1605
  case ' ':
1606
1606
  case 'home':
1607
1607
  case 'end':
1608
+ case 'tab':
1608
1609
  return;
1609
1610
  default:
1610
1611
  super.handleKeyDown(event);
@@ -1 +1 @@
1
- {"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 event.preventDefault();\n event.stopPropagation();\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 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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"}
1
+ {"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 event.preventDefault();\n event.stopPropagation();\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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"}
@@ -17642,7 +17642,8 @@ class IgxBaseExporter {
17642
17642
  const childLayoutList = grid.childLayoutList;
17643
17643
  const columnFields = this._ownersMap.get(grid).columns.map(col => col.field);
17644
17644
  for (const entry of records) {
17645
- const expansionStateVal = grid.expansionStates.has(entry) ? grid.expansionStates.get(entry) : grid.getDefaultExpandState(entry);
17645
+ const rowKey = grid.primaryKey ? entry[grid.primaryKey] : entry;
17646
+ const expansionStateVal = grid.expansionStates.has(rowKey) ? grid.expansionStates.get(rowKey) : grid.getDefaultExpandState(entry);
17646
17647
  const dataWithoutChildren = Object.keys(entry)
17647
17648
  .filter(k => columnFields.includes(k))
17648
17649
  .reduce((obj, key) => {
@@ -17659,8 +17660,8 @@ class IgxBaseExporter {
17659
17660
  this.flatRecords.push(hierarchicalGridRecord);
17660
17661
  for (const island of childLayoutList) {
17661
17662
  const path = {
17662
- rowID: island.primaryKey ? entry[island.primaryKey] : entry,
17663
- rowKey: island.primaryKey ? entry[island.primaryKey] : entry,
17663
+ rowID: grid.primaryKey ? entry[grid.primaryKey] : entry,
17664
+ rowKey: grid.primaryKey ? entry[grid.primaryKey] : entry,
17664
17665
  rowIslandKey: island.key
17665
17666
  };
17666
17667
  const islandGrid = grid?.gridAPI.getChildGrid([path]);
@@ -17771,21 +17772,24 @@ class IgxBaseExporter {
17771
17772
  exportRecord.summaryKey = island.key;
17772
17773
  this.flatRecords.push(exportRecord);
17773
17774
  if (island.children.length > 0) {
17775
+ const islandRowKey = grid?.primaryKey ? rec[grid.primaryKey] : rec;
17774
17776
  const islandExpansionStateVal = grid === undefined ?
17775
17777
  false :
17776
- grid.expansionStates.has(rec) ?
17777
- grid.expansionStates.get(rec) :
17778
+ grid.expansionStates.has(islandRowKey) ?
17779
+ grid.expansionStates.get(islandRowKey) :
17778
17780
  false;
17779
17781
  for (const childIsland of island.children) {
17780
17782
  const path = {
17781
- rowID: childIsland.primaryKey ? rec[childIsland.primaryKey] : rec,
17782
- rowKey: childIsland.primaryKey ? rec[childIsland.primaryKey] : rec,
17783
+ rowID: grid?.primaryKey ? rec[grid.primaryKey] : rec,
17784
+ rowKey: grid?.primaryKey ? rec[grid.primaryKey] : rec,
17783
17785
  rowIslandKey: childIsland.key
17784
17786
  };
17785
17787
  // only defined when row is expanded in UI
17786
17788
  const childIslandGrid = grid?.gridAPI.getChildGrid([path]);
17787
17789
  const keyRecordData = this.prepareIslandData(island, childIslandGrid, rec[childIsland.key]) || [];
17788
- this.getAllChildColumnsAndData(childIsland, keyRecordData, islandExpansionStateVal, childIslandGrid);
17790
+ // Children should only be visible if both parent and current row are expanded
17791
+ const combinedExpansionState = expansionStateVal && islandExpansionStateVal;
17792
+ this.getAllChildColumnsAndData(childIsland, keyRecordData, combinedExpansionState, childIslandGrid);
17789
17793
  }
17790
17794
  }
17791
17795
  }