igniteui-angular 21.0.0-alpha.0 → 21.0.0-alpha.2

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 (137) hide show
  1. package/fesm2022/igniteui-angular-accordion.mjs +24 -2
  2. package/fesm2022/igniteui-angular-accordion.mjs.map +1 -1
  3. package/fesm2022/igniteui-angular-action-strip.mjs +23 -2
  4. package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
  5. package/fesm2022/igniteui-angular-avatar.mjs +19 -2
  6. package/fesm2022/igniteui-angular-avatar.mjs.map +1 -1
  7. package/fesm2022/igniteui-angular-badge.mjs +19 -2
  8. package/fesm2022/igniteui-angular-badge.mjs.map +1 -1
  9. package/fesm2022/igniteui-angular-banner.mjs +19 -2
  10. package/fesm2022/igniteui-angular-banner.mjs.map +1 -1
  11. package/fesm2022/igniteui-angular-bottom-nav.mjs +23 -2
  12. package/fesm2022/igniteui-angular-bottom-nav.mjs.map +1 -1
  13. package/fesm2022/igniteui-angular-calendar.mjs +23 -2
  14. package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
  15. package/fesm2022/igniteui-angular-card.mjs +23 -2
  16. package/fesm2022/igniteui-angular-card.mjs.map +1 -1
  17. package/fesm2022/igniteui-angular-carousel.mjs +25 -4
  18. package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
  19. package/fesm2022/igniteui-angular-checkbox.mjs +19 -2
  20. package/fesm2022/igniteui-angular-checkbox.mjs.map +1 -1
  21. package/fesm2022/igniteui-angular-chips.mjs +24 -2
  22. package/fesm2022/igniteui-angular-chips.mjs.map +1 -1
  23. package/fesm2022/igniteui-angular-combo.mjs +24 -2
  24. package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
  25. package/fesm2022/igniteui-angular-core.mjs +27 -1
  26. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  27. package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
  28. package/fesm2022/igniteui-angular-dialog.mjs +23 -2
  29. package/fesm2022/igniteui-angular-dialog.mjs.map +1 -1
  30. package/fesm2022/igniteui-angular-directives.mjs +4 -30
  31. package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
  32. package/fesm2022/igniteui-angular-drop-down.mjs +40 -2
  33. package/fesm2022/igniteui-angular-drop-down.mjs.map +1 -1
  34. package/fesm2022/igniteui-angular-expansion-panel.mjs +23 -2
  35. package/fesm2022/igniteui-angular-expansion-panel.mjs.map +1 -1
  36. package/fesm2022/igniteui-angular-grids-core.mjs +29 -11
  37. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  38. package/fesm2022/igniteui-angular-grids-grid.mjs +4 -4
  39. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  40. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +4 -4
  41. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
  42. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +2 -2
  43. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
  44. package/fesm2022/igniteui-angular-grids-tree-grid.mjs +4 -4
  45. package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
  46. package/fesm2022/igniteui-angular-list.mjs +23 -2
  47. package/fesm2022/igniteui-angular-list.mjs.map +1 -1
  48. package/fesm2022/igniteui-angular-navigation-drawer.mjs +22 -2
  49. package/fesm2022/igniteui-angular-navigation-drawer.mjs.map +1 -1
  50. package/fesm2022/igniteui-angular-paginator.mjs +23 -2
  51. package/fesm2022/igniteui-angular-paginator.mjs.map +1 -1
  52. package/fesm2022/igniteui-angular-progressbar.mjs +23 -2
  53. package/fesm2022/igniteui-angular-progressbar.mjs.map +1 -1
  54. package/fesm2022/igniteui-angular-query-builder.mjs +2 -2
  55. package/fesm2022/igniteui-angular-query-builder.mjs.map +1 -1
  56. package/fesm2022/igniteui-angular-radio.mjs +2 -2
  57. package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
  58. package/fesm2022/igniteui-angular-simple-combo.mjs +24 -2
  59. package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
  60. package/fesm2022/igniteui-angular-slider.mjs +27 -6
  61. package/fesm2022/igniteui-angular-slider.mjs.map +1 -1
  62. package/fesm2022/igniteui-angular-stepper.mjs +25 -4
  63. package/fesm2022/igniteui-angular-stepper.mjs.map +1 -1
  64. package/fesm2022/igniteui-angular-tabs.mjs +6 -6
  65. package/fesm2022/igniteui-angular-tabs.mjs.map +1 -1
  66. package/fesm2022/igniteui-angular-time-picker.mjs +29 -7
  67. package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
  68. package/fesm2022/igniteui-angular-toast.mjs +23 -2
  69. package/fesm2022/igniteui-angular-toast.mjs.map +1 -1
  70. package/fesm2022/igniteui-angular-tree.mjs +23 -2
  71. package/fesm2022/igniteui-angular-tree.mjs.map +1 -1
  72. package/migrations/update-21_0_0/changes/classes.json +4 -0
  73. package/migrations/update-21_0_0/changes/theme-changes.json +53 -0
  74. package/migrations/update-21_0_0/index.js +181 -20
  75. package/migrations/update-21_0_0/schema.json +1 -1
  76. package/package.json +12 -12
  77. package/styles/igniteui-angular-dark.css +1 -1
  78. package/styles/igniteui-angular.css +1 -1
  79. package/styles/igniteui-bootstrap-dark.css +1 -1
  80. package/styles/igniteui-bootstrap-light.css +1 -1
  81. package/styles/igniteui-dark-green.css +1 -1
  82. package/styles/igniteui-fluent-dark-excel.css +1 -1
  83. package/styles/igniteui-fluent-dark-word.css +1 -1
  84. package/styles/igniteui-fluent-dark.css +1 -1
  85. package/styles/igniteui-fluent-light-excel.css +1 -1
  86. package/styles/igniteui-fluent-light-word.css +1 -1
  87. package/styles/igniteui-fluent-light.css +1 -1
  88. package/styles/igniteui-indigo-dark.css +1 -1
  89. package/styles/igniteui-indigo-light.css +1 -1
  90. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  91. package/styles/maps/igniteui-angular.css.map +1 -1
  92. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  93. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  94. package/styles/maps/igniteui-dark-green.css.map +1 -1
  95. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  96. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  97. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  98. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  99. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  100. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  101. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  102. package/styles/maps/igniteui-indigo-light.css.map +1 -1
  103. package/types/igniteui-angular-accordion.d.ts +12 -1
  104. package/types/igniteui-angular-action-strip.d.ts +11 -1
  105. package/types/igniteui-angular-avatar.d.ts +11 -1
  106. package/types/igniteui-angular-badge.d.ts +11 -1
  107. package/types/igniteui-angular-banner.d.ts +11 -1
  108. package/types/igniteui-angular-bottom-nav.d.ts +11 -1
  109. package/types/igniteui-angular-calendar.d.ts +11 -1
  110. package/types/igniteui-angular-card.d.ts +11 -1
  111. package/types/igniteui-angular-carousel.d.ts +13 -3
  112. package/types/igniteui-angular-checkbox.d.ts +11 -1
  113. package/types/igniteui-angular-chips.d.ts +12 -1
  114. package/types/igniteui-angular-combo.d.ts +12 -1
  115. package/types/igniteui-angular-core.d.ts +14 -7
  116. package/types/igniteui-angular-date-picker.d.ts +2 -2
  117. package/types/igniteui-angular-dialog.d.ts +11 -1
  118. package/types/igniteui-angular-directives.d.ts +3 -18
  119. package/types/igniteui-angular-drop-down.d.ts +23 -3
  120. package/types/igniteui-angular-expansion-panel.d.ts +11 -1
  121. package/types/igniteui-angular-grids-core.d.ts +17 -8
  122. package/types/igniteui-angular-grids-grid.d.ts +4 -4
  123. package/types/igniteui-angular-grids-hierarchical-grid.d.ts +2 -2
  124. package/types/igniteui-angular-grids-tree-grid.d.ts +2 -2
  125. package/types/igniteui-angular-list.d.ts +11 -1
  126. package/types/igniteui-angular-navigation-drawer.d.ts +10 -1
  127. package/types/igniteui-angular-paginator.d.ts +11 -1
  128. package/types/igniteui-angular-progressbar.d.ts +11 -1
  129. package/types/igniteui-angular-query-builder.d.ts +1 -2
  130. package/types/igniteui-angular-radio.d.ts +3 -4
  131. package/types/igniteui-angular-simple-combo.d.ts +13 -1
  132. package/types/igniteui-angular-slider.d.ts +14 -4
  133. package/types/igniteui-angular-stepper.d.ts +13 -3
  134. package/types/igniteui-angular-tabs.d.ts +5 -5
  135. package/types/igniteui-angular-time-picker.d.ts +13 -1
  136. package/types/igniteui-angular-toast.d.ts +11 -1
  137. package/types/igniteui-angular-tree.d.ts +11 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { booleanAttribute, Input, HostBinding, Component, InjectionToken, EventEmitter, HostListener, Output, Inject, Optional, Directive, DOCUMENT, Self, ViewChild, ContentChild, forwardRef, ContentChildren } from '@angular/core';
2
+ import { booleanAttribute, Input, HostBinding, Component, InjectionToken, EventEmitter, HostListener, Output, Inject, Optional, Directive, DOCUMENT, Self, ViewChild, ContentChild, forwardRef, ContentChildren, NgModule } from '@angular/core';
3
3
  import * as i1 from 'igniteui-angular/core';
4
4
  import { IgxSelectionAPIService, ConnectedPositioningStrategy, AutoPositionStrategy, AbsoluteScrollStrategy } from 'igniteui-angular/core';
5
5
  import { IgxToggleDirective, IgxForOfToken } from 'igniteui-angular/directives';
@@ -1828,6 +1828,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
1828
1828
  args: ['keydown.Shift.Tab']
1829
1829
  }] } });
1830
1830
 
1831
+ /**
1832
+ * @hidden
1833
+ * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
1834
+ */
1835
+ class IgxAutocompleteModule {
1836
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: IgxAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1837
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: IgxAutocompleteModule, imports: [IgxAutocompleteDirective], exports: [IgxAutocompleteDirective] }); }
1838
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: IgxAutocompleteModule }); }
1839
+ }
1840
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: IgxAutocompleteModule, decorators: [{
1841
+ type: NgModule,
1842
+ args: [{
1843
+ imports: [IgxAutocompleteDirective],
1844
+ exports: [IgxAutocompleteDirective]
1845
+ }]
1846
+ }] });
1847
+
1831
1848
  /* NOTE: Drop down directives collection for ease-of-use import in standalone components scenario */
1832
1849
  const IGX_DROP_DOWN_DIRECTIVES = [
1833
1850
  IgxDropDownComponent,
@@ -1836,9 +1853,30 @@ const IGX_DROP_DOWN_DIRECTIVES = [
1836
1853
  IgxDropDownItemNavigationDirective
1837
1854
  ];
1838
1855
 
1856
+ /**
1857
+ * @hidden
1858
+ * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
1859
+ */
1860
+ class IgxDropDownModule {
1861
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: IgxDropDownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1862
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: IgxDropDownModule, imports: [IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownGroupComponent, IgxDropDownItemNavigationDirective], exports: [IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownGroupComponent, IgxDropDownItemNavigationDirective] }); }
1863
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: IgxDropDownModule }); }
1864
+ }
1865
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: IgxDropDownModule, decorators: [{
1866
+ type: NgModule,
1867
+ args: [{
1868
+ imports: [
1869
+ ...IGX_DROP_DOWN_DIRECTIVES
1870
+ ],
1871
+ exports: [
1872
+ ...IGX_DROP_DOWN_DIRECTIVES
1873
+ ]
1874
+ }]
1875
+ }] });
1876
+
1839
1877
  /**
1840
1878
  * Generated bundle index. Do not edit.
1841
1879
  */
1842
1880
 
1843
- export { DropDownActionKey, IGX_DROPDOWN_BASE, IGX_DROP_DOWN_DIRECTIVES, IgxAutocompleteDirective, IgxDropDownBaseDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemBaseDirective, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, Navigate };
1881
+ export { DropDownActionKey, IGX_DROPDOWN_BASE, IGX_DROP_DOWN_DIRECTIVES, IgxAutocompleteDirective, IgxAutocompleteModule, IgxDropDownBaseDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemBaseDirective, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, Navigate };
1844
1882
  //# sourceMappingURL=igniteui-angular-drop-down.mjs.map
@@ -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.base.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down-navigation.directive.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/public_api.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, Optional, Inject, Output, EventEmitter, booleanAttribute, DoCheck } 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 /**\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 constructor(\n @Inject(IGX_DROPDOWN_BASE) protected dropDown: IDropDownBase,\n protected elementRef: ElementRef,\n @Optional() protected group: IgxDropDownGroupComponent,\n @Optional() @Inject(IgxSelectionAPIService) protected selection?: IgxSelectionAPIService\n ) { }\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 {\n Input, HostBinding, ElementRef, QueryList, Output, EventEmitter, ChangeDetectorRef, Directive,\n OnInit,\n Inject,\n DOCUMENT\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 /**\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 constructor(\n protected elementRef: ElementRef,\n protected cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) public document: any) {}\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 { Directive, Optional, Self, 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\n protected _target: IgxDropDownBaseDirective = null;\n\n constructor(@Self() @Optional() @Inject(IGX_DROPDOWN_BASE) public dropdown: IgxDropDownBaseDirective) { }\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 ChangeDetectorRef,\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,\n DOCUMENT\n} 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 /**\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 constructor(\n elementRef: ElementRef,\n cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) document: any,\n protected selection: IgxSelectionAPIService) {\n super(elementRef, cdr, document);\n }\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 {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n Self,\n AfterViewInit,\n OnInit,\n booleanAttribute\n} from '@angular/core';\nimport { NgModel, FormControlName } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CancelableEventArgs, IBaseEventArgs } 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 { IgxOverlayOutletDirective } from 'igniteui-angular/directives';\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 /**\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 constructor(@Self() @Optional() @Inject(NgModel) protected ngModel: NgModel,\n @Self() @Optional() @Inject(FormControlName) protected formControl: FormControlName,\n @Optional() protected group: IgxInputGroupComponent,\n protected elementRef: ElementRef,\n protected cdr: ChangeDetectorRef) {\n super(null);\n }\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 { 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';\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NEXT_ID","i1.IgxDropDownGroupComponent","i1"],"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.base.ts","../../../projects/igniteui-angular/drop-down/src/drop-down/drop-down-navigation.directive.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, Optional, Inject, Output, EventEmitter, booleanAttribute, DoCheck } 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 /**\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 constructor(\n @Inject(IGX_DROPDOWN_BASE) protected dropDown: IDropDownBase,\n protected elementRef: ElementRef,\n @Optional() protected group: IgxDropDownGroupComponent,\n @Optional() @Inject(IgxSelectionAPIService) protected selection?: IgxSelectionAPIService\n ) { }\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 {\n Input, HostBinding, ElementRef, QueryList, Output, EventEmitter, ChangeDetectorRef, Directive,\n OnInit,\n Inject,\n DOCUMENT\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 /**\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 constructor(\n protected elementRef: ElementRef,\n protected cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) public document: any) {}\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 { Directive, Optional, Self, 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\n protected _target: IgxDropDownBaseDirective = null;\n\n constructor(@Self() @Optional() @Inject(IGX_DROPDOWN_BASE) public dropdown: IgxDropDownBaseDirective) { }\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 ChangeDetectorRef,\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,\n DOCUMENT\n} 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 /**\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 constructor(\n elementRef: ElementRef,\n cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) document: any,\n protected selection: IgxSelectionAPIService) {\n super(elementRef, cdr, document);\n }\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 {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n Self,\n AfterViewInit,\n OnInit,\n booleanAttribute\n} 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 /**\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 constructor(@Self() @Optional() @Inject(NgModel) protected ngModel: NgModel,\n @Self() @Optional() @Inject(FormControlName) protected formControl: FormControlName,\n @Optional() protected group: IgxInputGroupComponent,\n protected elementRef: ElementRef,\n protected cdr: ChangeDetectorRef) {\n super(null);\n }\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.IgxDropDownGroupComponent","i1","i1.IgxDropDownComponent","i2.IgxDropDownItemComponent","i3.IgxDropDownGroupComponent","i4.IgxDropDownItemNavigationDirective"],"mappings":"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"}