igniteui-angular 22.1.3 → 22.2.0-rc.0

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 (158) hide show
  1. package/README.md +2 -2
  2. package/combo/README.md +19 -0
  3. package/drop-down/README.md +40 -4
  4. package/fesm2022/igniteui-angular-accordion.mjs +7 -7
  5. package/fesm2022/igniteui-angular-action-strip.mjs +15 -12
  6. package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
  7. package/fesm2022/igniteui-angular-avatar.mjs +7 -7
  8. package/fesm2022/igniteui-angular-badge.mjs +7 -7
  9. package/fesm2022/igniteui-angular-banner.mjs +15 -12
  10. package/fesm2022/igniteui-angular-banner.mjs.map +1 -1
  11. package/fesm2022/igniteui-angular-bottom-nav.mjs +22 -22
  12. package/fesm2022/igniteui-angular-button-group.mjs +12 -13
  13. package/fesm2022/igniteui-angular-button-group.mjs.map +1 -1
  14. package/fesm2022/igniteui-angular-calendar.mjs +73 -66
  15. package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
  16. package/fesm2022/igniteui-angular-card.mjs +31 -31
  17. package/fesm2022/igniteui-angular-carousel.mjs +27 -24
  18. package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
  19. package/fesm2022/igniteui-angular-chat-extras.mjs +6 -6
  20. package/fesm2022/igniteui-angular-chat.mjs +12 -12
  21. package/fesm2022/igniteui-angular-checkbox.mjs +7 -7
  22. package/fesm2022/igniteui-angular-chips.mjs +15 -12
  23. package/fesm2022/igniteui-angular-chips.mjs.map +1 -1
  24. package/fesm2022/igniteui-angular-combo.mjs +273 -122
  25. package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
  26. package/fesm2022/igniteui-angular-core.mjs +188 -59
  27. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  28. package/fesm2022/igniteui-angular-date-picker.mjs +76 -82
  29. package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
  30. package/fesm2022/igniteui-angular-dialog.mjs +13 -13
  31. package/fesm2022/igniteui-angular-directives.mjs +321 -457
  32. package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
  33. package/fesm2022/igniteui-angular-drop-down.mjs +331 -104
  34. package/fesm2022/igniteui-angular-drop-down.mjs.map +1 -1
  35. package/fesm2022/igniteui-angular-expansion-panel.mjs +28 -28
  36. package/fesm2022/igniteui-angular-grids-core.mjs +556 -518
  37. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  38. package/fesm2022/igniteui-angular-grids-grid.mjs +91 -85
  39. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  40. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +59 -46
  41. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
  42. package/fesm2022/igniteui-angular-grids-lite.mjs +12 -12
  43. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +113 -86
  44. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
  45. package/fesm2022/igniteui-angular-grids-tree-grid.mjs +57 -57
  46. package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
  47. package/fesm2022/igniteui-angular-icon.mjs +10 -10
  48. package/fesm2022/igniteui-angular-input-group.mjs +52 -63
  49. package/fesm2022/igniteui-angular-input-group.mjs.map +1 -1
  50. package/fesm2022/igniteui-angular-list.mjs +45 -42
  51. package/fesm2022/igniteui-angular-list.mjs.map +1 -1
  52. package/fesm2022/igniteui-angular-navbar.mjs +13 -13
  53. package/fesm2022/igniteui-angular-navigation-drawer.mjs +16 -16
  54. package/fesm2022/igniteui-angular-paginator.mjs +24 -21
  55. package/fesm2022/igniteui-angular-paginator.mjs.map +1 -1
  56. package/fesm2022/igniteui-angular-progressbar.mjs +19 -19
  57. package/fesm2022/igniteui-angular-query-builder.mjs +44 -31
  58. package/fesm2022/igniteui-angular-query-builder.mjs.map +1 -1
  59. package/fesm2022/igniteui-angular-radio.mjs +59 -35
  60. package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
  61. package/fesm2022/igniteui-angular-select.mjs +35 -43
  62. package/fesm2022/igniteui-angular-select.mjs.map +1 -1
  63. package/fesm2022/igniteui-angular-simple-combo.mjs +44 -33
  64. package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
  65. package/fesm2022/igniteui-angular-slider.mjs +28 -28
  66. package/fesm2022/igniteui-angular-snackbar.mjs +7 -7
  67. package/fesm2022/igniteui-angular-splitter.mjs +37 -27
  68. package/fesm2022/igniteui-angular-splitter.mjs.map +1 -1
  69. package/fesm2022/igniteui-angular-stepper.mjs +34 -34
  70. package/fesm2022/igniteui-angular-switch.mjs +7 -7
  71. package/fesm2022/igniteui-angular-tabs.mjs +34 -34
  72. package/fesm2022/igniteui-angular-time-picker.mjs +34 -40
  73. package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
  74. package/fesm2022/igniteui-angular-toast.mjs +7 -7
  75. package/fesm2022/igniteui-angular-tree.mjs +33 -30
  76. package/fesm2022/igniteui-angular-tree.mjs.map +1 -1
  77. package/fesm2022/igniteui-angular-virtual-scroll.mjs +1257 -0
  78. package/fesm2022/igniteui-angular-virtual-scroll.mjs.map +1 -0
  79. package/fesm2022/igniteui-angular.mjs +1 -0
  80. package/fesm2022/igniteui-angular.mjs.map +1 -1
  81. package/input-group/README.md +2 -0
  82. package/lib/core/styles/components/scrollbar/scrollbar-component.scss +0 -2
  83. package/lib/core/styles/components/scrollbar/scrollbar-theme.scss +23 -51
  84. package/lib/grids/core/src/column-actions/themes/_derived.scss +3 -3
  85. package/lib/grids/core/src/filtering/excel-style/themes/_derived.scss +3 -3
  86. package/lib/grids/themes/_derived.scss +3 -3
  87. package/lib/query-builder/src/query-builder/themes/_derived.scss +3 -3
  88. package/migrations/migration-collection.json +10 -0
  89. package/migrations/update-22_2_0/changes/theme-changes.json +77 -0
  90. package/migrations/update-22_2_0/index.d.ts +3 -0
  91. package/migrations/update-22_2_0/index.js +18 -0
  92. package/migrations/update-22_2_0/index.spec.d.ts +1 -0
  93. package/migrations/update-22_2_0/index.spec.js +88 -0
  94. package/migrations/update-22_2_0_grid-summary-borders/changes/theme-changes.json +17 -0
  95. package/migrations/update-22_2_0_grid-summary-borders/index.d.ts +3 -0
  96. package/migrations/update-22_2_0_grid-summary-borders/index.js +64 -0
  97. package/migrations/update-22_2_0_grid-summary-borders/index.spec.d.ts +1 -0
  98. package/migrations/update-22_2_0_grid-summary-borders/index.spec.js +100 -0
  99. package/package.json +6 -2
  100. package/schematics/tsconfig.tsbuildinfo +1 -1
  101. package/simple-combo/README.md +3 -0
  102. package/skills/igniteui-angular-components/references/form-controls.md +58 -0
  103. package/styles/igniteui-angular-dark.css +1 -1
  104. package/styles/igniteui-angular.css +1 -1
  105. package/styles/igniteui-bootstrap-dark.css +1 -1
  106. package/styles/igniteui-bootstrap-light.css +1 -1
  107. package/styles/igniteui-dark-green.css +1 -1
  108. package/styles/igniteui-fluent-dark-excel.css +1 -1
  109. package/styles/igniteui-fluent-dark-word.css +1 -1
  110. package/styles/igniteui-fluent-dark.css +1 -1
  111. package/styles/igniteui-fluent-light-excel.css +1 -1
  112. package/styles/igniteui-fluent-light-word.css +1 -1
  113. package/styles/igniteui-fluent-light.css +1 -1
  114. package/styles/igniteui-indigo-dark.css +1 -1
  115. package/styles/igniteui-indigo-light.css +1 -1
  116. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  117. package/styles/maps/igniteui-angular.css.map +1 -1
  118. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  119. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  120. package/styles/maps/igniteui-dark-green.css.map +1 -1
  121. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  122. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  123. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  124. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  125. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  126. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  127. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  128. package/styles/maps/igniteui-indigo-light.css.map +1 -1
  129. package/types/igniteui-angular-action-strip.d.ts +1 -0
  130. package/types/igniteui-angular-banner.d.ts +1 -0
  131. package/types/igniteui-angular-calendar.d.ts +3 -1
  132. package/types/igniteui-angular-carousel.d.ts +1 -0
  133. package/types/igniteui-angular-chips.d.ts +1 -0
  134. package/types/igniteui-angular-combo.d.ts +56 -12
  135. package/types/igniteui-angular-core.d.ts +64 -11
  136. package/types/igniteui-angular-date-picker.d.ts +4 -4
  137. package/types/igniteui-angular-directives.d.ts +50 -164
  138. package/types/igniteui-angular-drop-down.d.ts +76 -4
  139. package/types/igniteui-angular-grids-core.d.ts +64 -28
  140. package/types/igniteui-angular-grids-grid.d.ts +4 -7
  141. package/types/igniteui-angular-grids-hierarchical-grid.d.ts +5 -4
  142. package/types/igniteui-angular-grids-pivot-grid.d.ts +11 -5
  143. package/types/igniteui-angular-grids-tree-grid.d.ts +1 -1
  144. package/types/igniteui-angular-icon.d.ts +1 -1
  145. package/types/igniteui-angular-input-group.d.ts +2 -2
  146. package/types/igniteui-angular-list.d.ts +1 -0
  147. package/types/igniteui-angular-paginator.d.ts +1 -0
  148. package/types/igniteui-angular-query-builder.d.ts +5 -1
  149. package/types/igniteui-angular-radio.d.ts +16 -1
  150. package/types/igniteui-angular-select.d.ts +1 -2
  151. package/types/igniteui-angular-simple-combo.d.ts +7 -0
  152. package/types/igniteui-angular-splitter.d.ts +6 -1
  153. package/types/igniteui-angular-stepper.d.ts +1 -1
  154. package/types/igniteui-angular-time-picker.d.ts +2 -2
  155. package/types/igniteui-angular-tree.d.ts +4 -3
  156. package/types/igniteui-angular-virtual-scroll.d.ts +408 -0
  157. package/types/igniteui-angular.d.ts +1 -0
  158. package/virtual-scroll/README.md +332 -0
@@ -1,9 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { booleanAttribute, Input, HostBinding, ChangeDetectionStrategy, Component, InjectionToken, inject, ElementRef, EventEmitter, HostListener, Output, Directive, ChangeDetectorRef, DOCUMENT, ViewChild, ContentChild, ContentChildren, forwardRef, ViewEncapsulation, NgModule } from '@angular/core';
2
+ import { booleanAttribute, Input, HostBinding, ChangeDetectionStrategy, Component, InjectionToken, inject, ElementRef, EventEmitter, HostListener, Output, Directive, ChangeDetectorRef, DOCUMENT, Injector, afterNextRender, effect, ViewChild, ContentChildren, forwardRef, ViewEncapsulation, NgModule } from '@angular/core';
3
3
  import { IgxSelectionAPIService, ConnectedPositioningStrategy, AutoPositionStrategy, AbsoluteScrollStrategy } from 'igniteui-angular/core';
4
4
  import { IgxToggleDirective, IgxForOfToken } from 'igniteui-angular/directives';
5
- import { Subject } from 'rxjs';
6
- import { take, takeUntil } from 'rxjs/operators';
5
+ import { Subject, merge } from 'rxjs';
6
+ import { IgxVirtualScrollComponent } from 'igniteui-angular/virtual-scroll';
7
+ import { outputToObservable } from '@angular/core/rxjs-interop';
8
+ import { takeUntil, take } from 'rxjs/operators';
7
9
  import { NgModel, FormControlName } from '@angular/forms';
8
10
  import { IgxInputGroupComponent } from 'igniteui-angular/input-group';
9
11
 
@@ -57,13 +59,13 @@ class IgxDropDownGroupComponent {
57
59
  get labelledBy() {
58
60
  return this.labelId;
59
61
  }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "22.1.1", type: IgxDropDownGroupComponent, isStandalone: true, selector: "igx-drop-down-item-group", inputs: { disabled: ["disabled", "disabled", booleanAttribute], label: "label" }, host: { properties: { "attr.aria-labelledby": "this.labelledBy", "attr.role": "this.role", "class.igx-drop-down__group": "this.groupClass", "attr.aria-disabled": "this.disabled", "class.igx-drop-down__group--disabled": "this.disabled" } }, ngImport: i0, template: `
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
63
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "22.1.7", type: IgxDropDownGroupComponent, isStandalone: true, selector: "igx-drop-down-item-group", inputs: { disabled: ["disabled", "disabled", booleanAttribute], label: "label" }, host: { properties: { "attr.aria-labelledby": "this.labelledBy", "attr.role": "this.role", "class.igx-drop-down__group": "this.groupClass", "attr.aria-disabled": "this.disabled", "class.igx-drop-down__group--disabled": "this.disabled" } }, ngImport: i0, template: `
62
64
  <label id="{{labelId}}">{{ label }}</label>
63
65
  <ng-content select="igx-drop-down-item"></ng-content>
64
66
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.Eager }); }
65
67
  }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownGroupComponent, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownGroupComponent, decorators: [{
67
69
  type: Component,
68
70
  args: [{
69
71
  selector: 'igx-drop-down-item-group',
@@ -330,10 +332,10 @@ class IgxDropDownItemBaseDirective {
330
332
  focusedItem.element.nativeElement.focus({ preventScroll: true });
331
333
  }
332
334
  }
333
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownItemBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
334
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.1.1", type: IgxDropDownItemBaseDirective, isStandalone: true, selector: "[igxDropDownItemBase]", inputs: { id: "id", ariaLabel: "ariaLabel", index: "index", value: "value", selected: ["selected", "selected", booleanAttribute], isHeader: ["isHeader", "isHeader", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], role: "role" }, outputs: { selectedChange: "selectedChange" }, host: { listeners: { "click": "clicked($event)", "mousedown": "handleMousedown($event)" }, properties: { "attr.id": "this.id", "attr.aria-label": "this.ariaLabel", "class.igx-drop-down__item": "this.itemStyle", "attr.aria-selected": "this.selected", "class.igx-drop-down__item--selected": "this.selected", "class.igx-drop-down__item--focused": "this.focused", "class.igx-drop-down__header": "this.isHeader", "attr.aria-disabled": "this.disabled", "class.igx-drop-down__item--disabled": "this.disabled", "attr.role": "this.role" } }, ngImport: i0 }); }
335
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownItemBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
336
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.1.7", type: IgxDropDownItemBaseDirective, isStandalone: true, selector: "[igxDropDownItemBase]", inputs: { id: "id", ariaLabel: "ariaLabel", index: "index", value: "value", selected: ["selected", "selected", booleanAttribute], isHeader: ["isHeader", "isHeader", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], role: "role" }, outputs: { selectedChange: "selectedChange" }, host: { listeners: { "click": "clicked($event)", "mousedown": "handleMousedown($event)" }, properties: { "attr.id": "this.id", "attr.aria-label": "this.ariaLabel", "class.igx-drop-down__item": "this.itemStyle", "attr.aria-selected": "this.selected", "class.igx-drop-down__item--selected": "this.selected", "class.igx-drop-down__item--focused": "this.focused", "class.igx-drop-down__header": "this.isHeader", "attr.aria-disabled": "this.disabled", "class.igx-drop-down__item--disabled": "this.disabled", "attr.role": "this.role" } }, ngImport: i0 }); }
335
337
  }
336
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownItemBaseDirective, decorators: [{
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownItemBaseDirective, decorators: [{
337
339
  type: Directive,
338
340
  args: [{
339
341
  selector: '[igxDropDownItemBase]',
@@ -481,10 +483,10 @@ class IgxDropDownItemComponent extends IgxDropDownItemBaseDirective {
481
483
  this.dropDown.selectItem(this, event);
482
484
  }
483
485
  }
484
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
485
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.1", type: IgxDropDownItemComponent, isStandalone: true, selector: "igx-drop-down-item", host: { properties: { "attr.tabindex": "this.setTabIndex" } }, usesInheritance: true, ngImport: i0, template: "<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", changeDetection: i0.ChangeDetectionStrategy.Eager }); }
486
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
487
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.7", type: IgxDropDownItemComponent, isStandalone: true, selector: "igx-drop-down-item", host: { properties: { "attr.tabindex": "this.setTabIndex" } }, usesInheritance: true, ngImport: i0, template: "<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", changeDetection: i0.ChangeDetectionStrategy.Eager }); }
486
488
  }
487
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownItemComponent, decorators: [{
489
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownItemComponent, decorators: [{
488
490
  type: Component,
489
491
  args: [{ selector: 'igx-drop-down-item', changeDetection: ChangeDetectionStrategy.Eager, standalone: true, template: "<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" }]
490
492
  }], propDecorators: { setTabIndex: [{
@@ -615,10 +617,10 @@ class IgxDropDownItemNavigationDirective {
615
617
  onHomeKeyDown() {
616
618
  this.target.navigateFirst();
617
619
  }
618
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownItemNavigationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
619
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.1", type: IgxDropDownItemNavigationDirective, isStandalone: true, selector: "[igxDropDownItemNavigation]", inputs: { target: ["igxDropDownItemNavigation", "target"] }, host: { listeners: { "keydown": "handleKeyDown($event)" }, properties: { "attr.aria-activedescendant": "this.activeDescendant" } }, ngImport: i0 }); }
620
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownItemNavigationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
621
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxDropDownItemNavigationDirective, isStandalone: true, selector: "[igxDropDownItemNavigation]", inputs: { target: ["igxDropDownItemNavigation", "target"] }, host: { listeners: { "keydown": "handleKeyDown($event)" }, properties: { "attr.aria-activedescendant": "this.activeDescendant" } }, ngImport: i0 }); }
620
622
  }
621
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownItemNavigationDirective, decorators: [{
623
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownItemNavigationDirective, decorators: [{
622
624
  type: Directive,
623
625
  args: [{
624
626
  selector: '[igxDropDownItemNavigation]',
@@ -865,10 +867,10 @@ class IgxDropDownBaseDirective {
865
867
  return -1;
866
868
  }
867
869
  }
868
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
869
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.1", type: IgxDropDownBaseDirective, isStandalone: true, inputs: { width: "width", height: "height", id: "id", maxHeight: "maxHeight" }, outputs: { selectionChanging: "selectionChanging" }, host: { properties: { "attr.id": "this.id", "style.maxHeight": "this.maxHeight" } }, ngImport: i0 }); }
870
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
871
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxDropDownBaseDirective, isStandalone: true, inputs: { width: "width", height: "height", id: "id", maxHeight: "maxHeight" }, outputs: { selectionChanging: "selectionChanging" }, host: { properties: { "attr.id": "this.id", "style.maxHeight": "this.maxHeight" } }, ngImport: i0 }); }
870
872
  }
871
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownBaseDirective, decorators: [{
873
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownBaseDirective, decorators: [{
872
874
  type: Directive
873
875
  }], propDecorators: { selectionChanging: [{
874
876
  type: Output
@@ -888,6 +890,153 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
888
890
  args: ['style.maxHeight']
889
891
  }] } });
890
892
 
893
+ /** The virtualization a drop-down was given, or `null` when its items are all rendered. */
894
+ function createDropDownVirtualization(forOf, virtualScroll, virtualScrollRef) {
895
+ if (virtualScroll && virtualScrollRef) {
896
+ return new VirtualScrollVirtualization(virtualScroll, virtualScrollRef);
897
+ }
898
+ return forOf ? new ForOfVirtualization(forOf) : null;
899
+ }
900
+ /** Items virtualized by a projected `igx-virtual-scroll`, which is itself the scrolling element. */
901
+ class VirtualScrollVirtualization {
902
+ constructor(_scroll, _ref) {
903
+ this._scroll = _scroll;
904
+ this._ref = _ref;
905
+ this._disconnect = new Subject();
906
+ }
907
+ get length() {
908
+ const window = this._scroll.dataWindow();
909
+ return window
910
+ ? Math.max(window.totalCount, this.startIndex + (window.items?.length ?? 0))
911
+ : (this._scroll.data() ?? []).length;
912
+ }
913
+ get startIndex() {
914
+ return this._scroll.dataWindow()?.startIndex ?? 0;
915
+ }
916
+ get scrollElement() {
917
+ return this._ref.nativeElement;
918
+ }
919
+ get scrollPosition() {
920
+ return this.scrollElement.scrollTop;
921
+ }
922
+ set scrollPosition(value) {
923
+ this.scrollElement.scrollTop = value ?? 0;
924
+ }
925
+ itemAt(index) {
926
+ const window = this._scroll.dataWindow();
927
+ return window
928
+ ? window.items?.[index - this.startIndex]
929
+ : (this._scroll.data() ?? [])[index];
930
+ }
931
+ findIndex(predicate) {
932
+ const window = this._scroll.dataWindow();
933
+ const items = (window ? window.items : this._scroll.data()) ?? [];
934
+ const found = items.findIndex(predicate);
935
+ return found < 0 ? -1 : found + this.startIndex;
936
+ }
937
+ /** `stateChange` reports the range wanted, which reaches past the rows that arrived. */
938
+ isIndexRendered(index) {
939
+ return !!this._ref.nativeElement.querySelector(`[data-index="${index}"]`);
940
+ }
941
+ isIndexLoaded(index) {
942
+ const window = this._scroll.dataWindow();
943
+ const count = window ? (window.items?.length ?? 0) : (this._scroll.data() ?? []).length;
944
+ return Number.isInteger(index)
945
+ && index >= this.startIndex
946
+ && index < this.startIndex + count;
947
+ }
948
+ /** `'nearest'` leaves the offset alone when the item is already fully in view. */
949
+ scrollToIndex(index, _direction, onRendered) {
950
+ const wasRendered = this.isIndexRendered(index);
951
+ const scrolled = this._scroll.scrollToIndex(index, { block: 'nearest' });
952
+ if (wasRendered) {
953
+ onRendered();
954
+ return;
955
+ }
956
+ void scrolled.then(onRendered);
957
+ }
958
+ alignToIndex(index) {
959
+ void this._scroll.scrollToIndex(index, { block: 'center' });
960
+ }
961
+ onWindowChange(callback) {
962
+ outputToObservable(this._scroll.stateChange)
963
+ .pipe(takeUntil(this._disconnect))
964
+ .subscribe(() => callback());
965
+ }
966
+ disconnect() {
967
+ this._disconnect.next();
968
+ this._disconnect.complete();
969
+ }
970
+ }
971
+ /** Items virtualized by a projected `*igxFor`, which keeps a scrollbar of its own. */
972
+ class ForOfVirtualization {
973
+ constructor(_forOf) {
974
+ this._forOf = _forOf;
975
+ this._disconnect = new Subject();
976
+ /** `*igxFor` is bound to the whole collection, so it always starts at its beginning. */
977
+ this.startIndex = 0;
978
+ }
979
+ get length() {
980
+ return this._forOf.totalItemCount || this._items.length;
981
+ }
982
+ get scrollElement() {
983
+ return this._forOf.getScroll();
984
+ }
985
+ get scrollPosition() {
986
+ return this._forOf.scrollPosition;
987
+ }
988
+ set scrollPosition(value) {
989
+ this._forOf.scrollPosition = value;
990
+ }
991
+ itemAt(index) {
992
+ return this._items[index];
993
+ }
994
+ findIndex(predicate) {
995
+ return this._items.findIndex(predicate);
996
+ }
997
+ isIndexRendered(index) {
998
+ const { startIndex, chunkSize } = this._forOf.state;
999
+ return index >= startIndex && index < startIndex + chunkSize;
1000
+ }
1001
+ isIndexLoaded(index) {
1002
+ return Number.isInteger(index) && index >= 0 && index < this._items.length;
1003
+ }
1004
+ scrollToIndex(index, direction, onRendered) {
1005
+ if (!this._needsScroll(index, direction)) {
1006
+ onRendered();
1007
+ return;
1008
+ }
1009
+ this._forOf.scrollTo(index);
1010
+ this._forOf.chunkLoad.pipe(take(1)).subscribe(() => onRendered());
1011
+ }
1012
+ alignToIndex(index) {
1013
+ const itemSize = this._forOf.igxForItemSize;
1014
+ const itemsInView = this._forOf.igxForContainerSize / itemSize;
1015
+ this._forOf.getScroll().scrollTop =
1016
+ this._forOf.getScrollForIndex(index) - (itemsInView / 2 - 1) * itemSize;
1017
+ }
1018
+ onWindowChange(callback) {
1019
+ this._forOf.chunkLoad.pipe(takeUntil(this._disconnect)).subscribe(() => callback());
1020
+ }
1021
+ disconnect() {
1022
+ this._disconnect.next();
1023
+ this._disconnect.complete();
1024
+ }
1025
+ /** `*igxFor` is bound to the whole collection, so its indices are already global. */
1026
+ get _items() {
1027
+ return this._forOf.igxForOf ?? [];
1028
+ }
1029
+ /** Whether `index` is outside the loaded chunk, or inside it but off screen. */
1030
+ _needsScroll(index, direction) {
1031
+ const currentPosition = this._forOf.getScroll().scrollTop;
1032
+ const itemPosition = this._forOf.getScrollForIndex(index, direction === Navigate.Down);
1033
+ const offScreen = direction === Navigate.Down
1034
+ ? currentPosition < itemPosition
1035
+ : currentPosition > itemPosition;
1036
+ return !this.isIndexRendered(index) || offScreen;
1037
+ }
1038
+ }
1039
+
891
1040
  /**
892
1041
  * **Ignite UI for Angular DropDown** -
893
1042
  * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/drop-down)
@@ -908,7 +1057,15 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
908
1057
  constructor() {
909
1058
  super(...arguments);
910
1059
  this.selection = inject(IgxSelectionAPIService);
1060
+ this._reconcileInjector = inject(Injector);
911
1061
  this._activeDescendantId = null;
1062
+ /**
1063
+ * The direction of a navigation whose header skip waits for its row to render.
1064
+ * Focusing an item by any other means drops it.
1065
+ */
1066
+ this._pendingSkip = null;
1067
+ /** Watches the data the projected virtual scroll renders from. */
1068
+ this._renderedItems = null;
912
1069
  /**
913
1070
  * Emitted before the dropdown is opened
914
1071
  *
@@ -968,13 +1125,15 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
968
1125
  * ```
969
1126
  */
970
1127
  this.role = 'listbox';
1128
+ /** Set from the projected content in `ngAfterViewInit`, and again if that content changes. */
1129
+ this.virtualization = null;
971
1130
  this.destroy$ = new Subject();
972
1131
  }
973
1132
  /**
974
1133
  * @hidden @internal
975
1134
  */
976
1135
  get focusedItem() {
977
- if (this.virtDir) {
1136
+ if (this.virtualization) {
978
1137
  return this._focusedItem && this._focusedItem.index !== -1 ?
979
1138
  (this.children.find(e => e.index === this._focusedItem.index) || null) :
980
1139
  null;
@@ -982,6 +1141,7 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
982
1141
  return this._focusedItem;
983
1142
  }
984
1143
  set focusedItem(value) {
1144
+ this._pendingSkip = null;
985
1145
  if (!value) {
986
1146
  this.selection.clear(`${this.id}-active`);
987
1147
  this._focusedItem = null;
@@ -989,7 +1149,7 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
989
1149
  return;
990
1150
  }
991
1151
  this._focusedItem = value;
992
- if (this.virtDir) {
1152
+ if (this.virtualization) {
993
1153
  this._focusedItem = {
994
1154
  value: value.value,
995
1155
  index: value.index
@@ -998,7 +1158,7 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
998
1158
  this.selection.set(`${this.id}-active`, new Set([this._focusedItem]));
999
1159
  }
1000
1160
  get activeDescendant() {
1001
- if (this.virtDir) {
1161
+ if (this.virtualization) {
1002
1162
  return this._activeDescendantId;
1003
1163
  }
1004
1164
  return super.activeDescendant;
@@ -1046,8 +1206,8 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1046
1206
  return this.scrollContainerRef.nativeElement;
1047
1207
  }
1048
1208
  get collectionLength() {
1049
- if (this.virtDir) {
1050
- return this.virtDir.totalItemCount || this.virtDir.igxForOf.length;
1209
+ if (this.virtualization) {
1210
+ return this.virtualization.length;
1051
1211
  }
1052
1212
  }
1053
1213
  /**
@@ -1103,20 +1263,22 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1103
1263
  * @param index of the item to select; If the drop down uses *igxFor, pass the index in data
1104
1264
  */
1105
1265
  setSelectedItem(index) {
1106
- if (index < 0 || index >= this.items.length) {
1107
- return;
1108
- }
1109
- let newSelection;
1110
- if (this.virtDir) {
1111
- newSelection = {
1112
- value: this.virtDir.igxForOf[index],
1266
+ if (this.virtualization) {
1267
+ // A virtualized index addresses the whole collection. Any record loaded for it
1268
+ // can be selected, which is more than the rows that happen to be rendered.
1269
+ if (!this.virtualization.isIndexLoaded(index)) {
1270
+ return;
1271
+ }
1272
+ this.selectItem({
1273
+ value: this.virtualization.itemAt(index),
1113
1274
  index
1114
- };
1275
+ });
1276
+ return;
1115
1277
  }
1116
- else {
1117
- newSelection = this.items[index];
1278
+ if (index < 0 || index >= this.items.length) {
1279
+ return;
1118
1280
  }
1119
- this.selectItem(newSelection);
1281
+ this.selectItem(this.items[index]);
1120
1282
  }
1121
1283
  /**
1122
1284
  * Navigates to the item on the specified index
@@ -1125,28 +1287,19 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1125
1287
  * @param newIndex number
1126
1288
  */
1127
1289
  navigateItem(index) {
1128
- if (this.virtDir) {
1290
+ if (this.virtualization) {
1129
1291
  if (index === -1 || index >= this.collectionLength) {
1130
1292
  return;
1131
1293
  }
1132
1294
  const direction = index > (this.focusedItem ? this.focusedItem.index : -1) ? Navigate.Down : Navigate.Up;
1133
- const subRequired = this.isIndexOutOfBounds(index, direction);
1134
1295
  this.focusedItem = {
1135
- value: this.virtDir.igxForOf[index],
1296
+ value: this.virtualization.itemAt(index),
1136
1297
  index
1137
1298
  };
1138
- if (subRequired) {
1139
- this.virtDir.scrollTo(index);
1140
- }
1141
- if (subRequired) {
1142
- this.virtDir.chunkLoad.pipe(take(1)).subscribe(() => {
1143
- this.skipHeader(direction);
1144
- });
1145
- }
1146
- else {
1147
- this._activeDescendantId = this.children.find(e => e.index === index)?.id ?? null;
1148
- this.skipHeader(direction);
1149
- }
1299
+ // Naming a row that has not rendered would point assistive technology at nothing.
1300
+ this.refreshActiveDescendant();
1301
+ this._pendingSkip = direction;
1302
+ this.virtualization.scrollToIndex(index, direction, () => this.settleFocus());
1150
1303
  }
1151
1304
  else {
1152
1305
  super.navigateItem(index);
@@ -1160,18 +1313,14 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1160
1313
  * @hidden @internal
1161
1314
  */
1162
1315
  updateScrollPosition() {
1163
- if (!this.virtDir) {
1316
+ if (!this.virtualization) {
1164
1317
  return;
1165
1318
  }
1166
1319
  if (!this.selectedItem) {
1167
- this.virtDir.scrollTo(0);
1320
+ this.virtualization.scrollPosition = 0;
1168
1321
  return;
1169
1322
  }
1170
- let targetScroll = this.virtDir.getScrollForIndex(this.selectedItem.index);
1171
- // TODO: This logic _cannot_ be right, those are optional user-provided inputs that can be strings with units, refactor:
1172
- const itemsInView = this.virtDir.igxForContainerSize / this.virtDir.igxForItemSize;
1173
- targetScroll -= (itemsInView / 2 - 1) * this.virtDir.igxForItemSize;
1174
- this.virtDir.getScroll().scrollTop = targetScroll;
1323
+ this.virtualization.alignToIndex(this.selectedItem.index);
1175
1324
  }
1176
1325
  /**
1177
1326
  * @hidden @internal
@@ -1183,15 +1332,15 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1183
1332
  if (e.cancel) {
1184
1333
  return;
1185
1334
  }
1186
- if (this.virtDir) {
1187
- this.virtDir.scrollPosition = this._scrollPosition;
1335
+ if (this.virtualization) {
1336
+ this.virtualization.scrollPosition = this._scrollPosition;
1188
1337
  }
1189
1338
  }
1190
1339
  /**
1191
1340
  * @hidden @internal
1192
1341
  */
1193
1342
  onToggleContentAppended(_event) {
1194
- if (!this.virtDir && this.selectedItem) {
1343
+ if (!this.virtualization && this.selectedItem) {
1195
1344
  this.scrollToItem(this.selectedItem);
1196
1345
  }
1197
1346
  }
@@ -1212,8 +1361,8 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1212
1361
  if (e.cancel) {
1213
1362
  return;
1214
1363
  }
1215
- if (this.virtDir) {
1216
- this._scrollPosition = this.virtDir.scrollPosition;
1364
+ if (this.virtualization) {
1365
+ this._scrollPosition = this.virtualization.scrollPosition;
1217
1366
  }
1218
1367
  }
1219
1368
  /**
@@ -1227,6 +1376,8 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1227
1376
  * @hidden @internal
1228
1377
  */
1229
1378
  ngOnDestroy() {
1379
+ this._renderedItems?.destroy();
1380
+ this.virtualization?.disconnect();
1230
1381
  this.destroy$.next(true);
1231
1382
  this.destroy$.complete();
1232
1383
  this.selection.delete(this.id);
@@ -1256,16 +1407,95 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1256
1407
  }
1257
1408
  }
1258
1409
  ngAfterViewInit() {
1259
- if (this.virtDir) {
1260
- this.virtDir.igxForItemSize = 28;
1261
- this.virtDir.chunkLoad.pipe(takeUntil(this.destroy$)).subscribe(() => {
1262
- const item = this._focusedItem
1263
- ? this.children.find(e => e.index === this._focusedItem.index)
1264
- : null;
1265
- this._activeDescendantId = item?.id ?? null;
1266
- this.cdr.markForCheck();
1267
- });
1410
+ this.connectVirtualization();
1411
+ merge(this._forOfQuery.changes, this._virtualScrollQuery.changes, this._virtualScrollRefQuery.changes)
1412
+ .pipe(takeUntil(this.destroy$))
1413
+ .subscribe(() => this.connectVirtualization());
1414
+ // A sliding window reuses its items, so only the adapter reports it; a page
1415
+ // arriving or the list emptying builds or drops them, which reaches this query.
1416
+ // The query settles inside the pass that rendered them, and the element it names
1417
+ // was already checked in it, so the write waits for the render to finish.
1418
+ this.children.changes
1419
+ .pipe(takeUntil(this.destroy$))
1420
+ .subscribe(() => afterNextRender(() => this.settleFocus(), { injector: this._reconcileInjector }));
1421
+ }
1422
+ /**
1423
+ * Rebuilds the adapter for the projected content, dropping the previous one first.
1424
+ * The component and element queries can refresh separately, so the pair is taken as one.
1425
+ */
1426
+ connectVirtualization() {
1427
+ const forOf = this._forOfQuery.first;
1428
+ const scroll = this._virtualScrollQuery.first;
1429
+ const element = this._virtualScrollRefQuery.first;
1430
+ // Re-applied whenever the projection reports, not only when the adapter is built:
1431
+ // the directive recomputes its sizes as chunks load.
1432
+ if (forOf) {
1433
+ forOf.igxForItemSize = 28;
1434
+ }
1435
+ if (scroll && !element) {
1436
+ return;
1437
+ }
1438
+ if (this._connectedForOf === forOf
1439
+ && this._connectedScroll === scroll
1440
+ && this._connectedElement === element) {
1441
+ return;
1442
+ }
1443
+ this.virtualization?.disconnect();
1444
+ this._connectedForOf = forOf;
1445
+ this._connectedScroll = scroll;
1446
+ this._connectedElement = element;
1447
+ this.virtualization = createDropDownVirtualization(forOf, scroll, element);
1448
+ // Rows a window renders reach the item query only once this view is checked.
1449
+ this.virtualization?.onWindowChange(() => {
1450
+ this.cdr.markForCheck();
1451
+ this.refreshActiveDescendant();
1452
+ });
1453
+ this.watchRenderedItems(scroll);
1454
+ }
1455
+ /**
1456
+ * Keeps the item query in step with the rows a projected `igx-virtual-scroll` renders.
1457
+ * The query collects them only while the view that declares them is checked, and a
1458
+ * page arriving dirties the scroll rather than that view. Asking for the check is all
1459
+ * it takes; `children.changes` reports the rest.
1460
+ */
1461
+ watchRenderedItems(scroll) {
1462
+ this._renderedItems?.destroy();
1463
+ this._renderedItems = null;
1464
+ if (!scroll) {
1465
+ return;
1268
1466
  }
1467
+ this._renderedItems = effect(() => {
1468
+ scroll.data();
1469
+ scroll.dataWindow();
1470
+ this.cdr.markForCheck();
1471
+ }, { ...(ngDevMode ? { debugName: "_renderedItems" } : /* istanbul ignore next */ {}), injector: this._reconcileInjector });
1472
+ }
1473
+ /** Points `aria-activedescendant` at the item the focused index renders as, if any. */
1474
+ refreshActiveDescendant() {
1475
+ const index = this._focusedItem?.index;
1476
+ const item = index !== undefined && index !== -1
1477
+ ? this.children?.find(e => e.index === index)
1478
+ : null;
1479
+ const id = item?.id ?? null;
1480
+ if (id === this._activeDescendantId) {
1481
+ return;
1482
+ }
1483
+ this._activeDescendantId = id;
1484
+ this.cdr.markForCheck();
1485
+ }
1486
+ /**
1487
+ * Names the row the focused index renders as and, once that row exists, moves off a
1488
+ * header or a disabled item. The row can be missing when the scroll settles, because
1489
+ * its page has not arrived; the item query reports it when it does.
1490
+ */
1491
+ settleFocus() {
1492
+ this.refreshActiveDescendant();
1493
+ const direction = this._pendingSkip;
1494
+ if (direction === null || !this.focusedItem) {
1495
+ return;
1496
+ }
1497
+ this._pendingSkip = null;
1498
+ this.skipHeader(direction);
1269
1499
  }
1270
1500
  /** Keydown Handler */
1271
1501
  onItemActionKey(key, event) {
@@ -1278,7 +1508,7 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1278
1508
  * @hidden @internal
1279
1509
  */
1280
1510
  navigateFirst() {
1281
- if (this.virtDir) {
1511
+ if (this.virtualization) {
1282
1512
  this.navigateItem(0);
1283
1513
  }
1284
1514
  else {
@@ -1289,8 +1519,8 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1289
1519
  * @hidden @internal
1290
1520
  */
1291
1521
  navigateLast() {
1292
- if (this.virtDir) {
1293
- this.navigateItem(this.virtDir.totalItemCount ? this.virtDir.totalItemCount - 1 : this.virtDir.igxForOf.length - 1);
1522
+ if (this.virtualization) {
1523
+ this.navigateItem(this.virtualization.length - 1);
1294
1524
  }
1295
1525
  else {
1296
1526
  super.navigateLast();
@@ -1300,7 +1530,7 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1300
1530
  * @hidden @internal
1301
1531
  */
1302
1532
  navigateNext() {
1303
- if (this.virtDir) {
1533
+ if (this.virtualization) {
1304
1534
  this.navigateItem(this._focusedItem ? this._focusedItem.index + 1 : 0);
1305
1535
  }
1306
1536
  else {
@@ -1311,7 +1541,7 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1311
1541
  * @hidden @internal
1312
1542
  */
1313
1543
  navigatePrev() {
1314
- if (this.virtDir) {
1544
+ if (this.virtualization) {
1315
1545
  this.navigateItem(this._focusedItem ? this._focusedItem.index - 1 : 0);
1316
1546
  }
1317
1547
  else {
@@ -1338,7 +1568,7 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1338
1568
  if (newSelection instanceof IgxDropDownItemBaseDirective && newSelection.isHeader) {
1339
1569
  return;
1340
1570
  }
1341
- if (this.virtDir) {
1571
+ if (this.virtualization) {
1342
1572
  newSelection = {
1343
1573
  value: newSelection.value,
1344
1574
  index: newSelection.index
@@ -1351,7 +1581,7 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1351
1581
  if (!args.cancel) {
1352
1582
  if (this.isSelectionValid(args.newSelection)) {
1353
1583
  this.selection.set(this.id, new Set([args.newSelection]));
1354
- if (!this.virtDir) {
1584
+ if (!this.virtualization) {
1355
1585
  if (oldSelection) {
1356
1586
  oldSelection.selected = false;
1357
1587
  }
@@ -1392,7 +1622,7 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1392
1622
  */
1393
1623
  isSelectionValid(selection) {
1394
1624
  return selection === null
1395
- || (this.virtDir && selection.hasOwnProperty('value') && selection.hasOwnProperty('index'))
1625
+ || (!!this.virtualization && selection.hasOwnProperty('value') && selection.hasOwnProperty('index'))
1396
1626
  || (selection instanceof IgxDropDownItemComponent && !selection.isHeader);
1397
1627
  }
1398
1628
  scrollToItem(item) {
@@ -1426,19 +1656,10 @@ class IgxDropDownComponent extends IgxDropDownBaseDirective {
1426
1656
  }
1427
1657
  }
1428
1658
  }
1429
- isIndexOutOfBounds(index, direction) {
1430
- const virtState = this.virtDir.state;
1431
- const currentPosition = this.virtDir.getScroll().scrollTop;
1432
- const itemPosition = this.virtDir.getScrollForIndex(index, direction === Navigate.Down);
1433
- const indexOutOfChunk = index < virtState.startIndex || index > virtState.chunkSize + virtState.startIndex;
1434
- const scrollNeeded = direction === Navigate.Down ? currentPosition < itemPosition : currentPosition > itemPosition;
1435
- const subRequired = indexOutOfChunk || scrollNeeded;
1436
- return subRequired;
1437
- }
1438
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1439
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxDropDownComponent, isStandalone: true, selector: "igx-drop-down", inputs: { allowItemsFocus: ["allowItemsFocus", "allowItemsFocus", booleanAttribute], labelledBy: "labelledBy", role: "role" }, outputs: { opening: "opening", opened: "opened", closing: "closing", closed: "closed" }, providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxDropDownComponent }], queries: [{ propertyName: "virtDir", first: true, predicate: IgxForOfToken, descendants: true }, { propertyName: "children", predicate: i0.forwardRef(() => IgxDropDownItemComponent), descendants: true }], viewQueries: [{ propertyName: "toggleDirective", first: true, predicate: IgxToggleDirective, descendants: true, static: true }, { propertyName: "scrollContainerRef", first: true, predicate: ["scrollContainer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"igx-drop-down\" [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", styles: ["@layer ig.base{.igx-drop-down__group label,.igx-drop-down__header,.igx-drop-down__item{display:flex;justify-content:flex-start;align-items:center;width:100%;white-space:nowrap;position:relative;height:var(--size);color:var(--item-text-color)}.igx-drop-down__group label igx-divider,.igx-drop-down__header igx-divider,.igx-drop-down__item igx-divider{position:absolute;width:100%;inset-inline-start:0;bottom:0}.igx-drop-down__group label igx-icon,.igx-drop-down__header igx-icon,.igx-drop-down__item igx-icon{--component-size: 1;justify-content:center}.igx-drop-down__group label,.igx-drop-down__header{font-family:var(--ig-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);color:var(--header-text-color);pointer-events:none;padding-inline:max(var(--is-large, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}.igx-drop-down{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);--component-size: var(--ig-size, var(--default-size));--dropdown-size: var(--component-size);width:-moz-max-content;width:max-content;overflow:hidden;border-radius:var(--border-radius);background:var(--background-color);box-shadow:var(--elevation);min-width:8rem;border:var(--border-width) solid var(--border-color)}.igx-drop-down__list-scroll{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;position:relative}.igx-drop-down__list-scroll .igx-display-container--scrollbar{padding-inline-end:var(--vhelper-scrollbar-size)}.igx-drop-down__item{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);--component-size: var(--dropdown-size);cursor:pointer;padding-inline:max(var(--is-large, 1)*max(1.5rem,-1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1.25rem,-1 * 1.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));border-radius:var(--item-border-radius)}.igx-drop-down__item igx-icon{color:var(--item-icon-color)}.igx-drop-down__item:hover{background:var(--hover-item-background);color:var(--hover-item-text-color)}.igx-drop-down__item:hover igx-icon{color:var(--hover-item-icon-color)}.igx-drop-down__item:focus{outline:0;outline-color:#0000;background:var(--focused-item-background);color:var(--focused-item-text-color)}.igx-drop-down__inner{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;align-items:center;gap:.5rem;margin-inline-end:auto}.igx-drop-down__inner>div{display:flex;align-items:center;gap:.5rem}.igx-drop-down__content{display:flex;width:100%;align-items:center;gap:.5rem}.igx-drop-down__item--focused{background:var(--focused-item-background);color:var(--focused-item-text-color)}.igx-drop-down__item--selected{background:var(--selected-item-background);color:var(--selected-item-text-color)}.igx-drop-down__item--selected igx-icon{color:var(--selected-item-icon-color)}.igx-drop-down__item--selected:hover{background:var(--selected-hover-item-background);color:var(--selected-hover-item-text-color)}.igx-drop-down__item--selected:hover igx-icon{color:var(--selected-hover-item-icon-color)}.igx-drop-down__item--selected.igx-drop-down__item--focused{background:var(--selected-focus-item-background);color:var(--selected-focus-item-text-color)}.igx-drop-down__item--selected.igx-drop-down__item--focused:hover{background:var(--selected-hover-item-background);color:var(--selected-hover-item-text-color)}.igx-drop-down__item--selected.igx-drop-down__item--focused:hover igx-icon{color:var(--selected-hover-item-icon-color)}.igx-drop-down__item--disabled{background:var(--disabled-item-background);color:var(--disabled-item-text-color);cursor:default;pointer-events:none}.igx-drop-down__item--disabled igx-icon{color:var(--disabled-item-text-color)}.igx-drop-down__group{pointer-events:auto}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-drop-down .igx-drop-down__header,.igx-drop-down .igx-drop-down__item{--ig-icon-size: max(var(--is-large, 1) * max(1rem, -1 * 1rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(.875rem, -1 * .875rem));padding-inline:max(var(--is-large, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}.igx-drop-down .igx-drop-down__header igx-icon,.igx-drop-down .igx-drop-down__item igx-icon{--component-size: inherit}.igx-drop-down{padding:.1875rem}.igx-drop-down__item{margin-block:.125rem}.igx-drop-down__item:first-of-type,.igx-drop-down__item:last-of-type{margin-block:initial}.igx-drop-down__item--focused{outline:.125rem solid var(--focused-item-border-color);outline-offset:-.125rem}.igx-drop-down__header{margin-block-end:.125rem;padding-block:max(var(--is-large, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.375rem,-1 * .375rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.25rem,-1 * .25rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}.igx-drop-down__group label{padding-inline:max(var(--is-large, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));padding-block:max(var(--is-large, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(.375rem,-1 * .375rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(.25rem,-1 * .25rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))));margin-block-end:.125rem}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-drop-down__item--focused{outline:.0625rem solid var(--border-color);outline-offset:-.0625rem}.igx-drop-down__header{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom)}.igx-drop-down__group{pointer-events:auto}.igx-drop-down__group label{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom)}}}\n"], dependencies: [{ kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
1659
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1660
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: IgxDropDownComponent, isStandalone: true, selector: "igx-drop-down", inputs: { allowItemsFocus: ["allowItemsFocus", "allowItemsFocus", booleanAttribute], labelledBy: "labelledBy", role: "role" }, outputs: { opening: "opening", opened: "opened", closing: "closing", closed: "closed" }, providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxDropDownComponent }], queries: [{ propertyName: "children", predicate: i0.forwardRef(() => IgxDropDownItemComponent), descendants: true }, { propertyName: "_forOfQuery", predicate: IgxForOfToken, descendants: true }, { propertyName: "_virtualScrollQuery", predicate: IgxVirtualScrollComponent, descendants: true }, { propertyName: "_virtualScrollRefQuery", predicate: IgxVirtualScrollComponent, descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "toggleDirective", first: true, predicate: IgxToggleDirective, descendants: true, static: true }, { propertyName: "scrollContainerRef", first: true, predicate: ["scrollContainer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"igx-drop-down\" [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", styles: ["@layer ig.base{.igx-drop-down__group label,.igx-drop-down__header,.igx-drop-down__item{display:flex;justify-content:flex-start;align-items:center;width:100%;white-space:nowrap;position:relative;height:var(--size);color:var(--item-text-color)}.igx-drop-down__group label igx-divider,.igx-drop-down__header igx-divider,.igx-drop-down__item igx-divider{position:absolute;width:100%;inset-inline-start:0;bottom:0}.igx-drop-down__group label igx-icon,.igx-drop-down__header igx-icon,.igx-drop-down__item igx-icon{--component-size: 1;justify-content:center}.igx-drop-down__group label,.igx-drop-down__header{font-family:var(--ig-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);color:var(--header-text-color);pointer-events:none;padding-inline:max(var(--is-large, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}.igx-drop-down{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);--component-size: var(--ig-size, var(--default-size));--dropdown-size: var(--component-size);width:-moz-max-content;width:max-content;overflow:hidden;border-radius:var(--border-radius);background:var(--background-color);box-shadow:var(--elevation);min-width:8rem;border:var(--border-width) solid var(--border-color)}.igx-drop-down__list-scroll{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;position:relative}.igx-drop-down__list-scroll .igx-display-container--scrollbar{padding-inline-end:var(--vhelper-scrollbar-size)}.igx-drop-down__item{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);--component-size: var(--dropdown-size);cursor:pointer;padding-inline:max(var(--is-large, 1)*max(1.5rem,-1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1.25rem,-1 * 1.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));border-radius:var(--item-border-radius)}.igx-drop-down__item igx-icon{color:var(--item-icon-color)}.igx-drop-down__item:hover{background:var(--hover-item-background);color:var(--hover-item-text-color)}.igx-drop-down__item:hover igx-icon{color:var(--hover-item-icon-color)}.igx-drop-down__item:focus{outline:0;outline-color:#0000;background:var(--focused-item-background);color:var(--focused-item-text-color)}.igx-drop-down__inner{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;align-items:center;gap:.5rem;margin-inline-end:auto}.igx-drop-down__inner>div{display:flex;align-items:center;gap:.5rem}.igx-drop-down__content{display:flex;width:100%;align-items:center;gap:.5rem}.igx-drop-down__item--focused{background:var(--focused-item-background);color:var(--focused-item-text-color)}.igx-drop-down__item--selected{background:var(--selected-item-background);color:var(--selected-item-text-color)}.igx-drop-down__item--selected igx-icon{color:var(--selected-item-icon-color)}.igx-drop-down__item--selected:hover{background:var(--selected-hover-item-background);color:var(--selected-hover-item-text-color)}.igx-drop-down__item--selected:hover igx-icon{color:var(--selected-hover-item-icon-color)}.igx-drop-down__item--selected.igx-drop-down__item--focused{background:var(--selected-focus-item-background);color:var(--selected-focus-item-text-color)}.igx-drop-down__item--selected.igx-drop-down__item--focused:hover{background:var(--selected-hover-item-background);color:var(--selected-hover-item-text-color)}.igx-drop-down__item--selected.igx-drop-down__item--focused:hover igx-icon{color:var(--selected-hover-item-icon-color)}.igx-drop-down__item--disabled{background:var(--disabled-item-background);color:var(--disabled-item-text-color);cursor:default;pointer-events:none}.igx-drop-down__item--disabled igx-icon{color:var(--disabled-item-text-color)}.igx-drop-down__group{pointer-events:auto}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-drop-down .igx-drop-down__header,.igx-drop-down .igx-drop-down__item{--ig-icon-size: max(var(--is-large, 1) * max(1rem, -1 * 1rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(.875rem, -1 * .875rem));padding-inline:max(var(--is-large, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}.igx-drop-down .igx-drop-down__header igx-icon,.igx-drop-down .igx-drop-down__item igx-icon{--component-size: inherit}.igx-drop-down{padding:.1875rem}.igx-drop-down__item{margin-block:.125rem}.igx-drop-down__item:first-of-type,.igx-drop-down__item:last-of-type{margin-block:initial}.igx-drop-down__item--focused{outline:.125rem solid var(--focused-item-border-color);outline-offset:-.125rem}.igx-drop-down__header{margin-block-end:.125rem;padding-block:max(var(--is-large, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.375rem,-1 * .375rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.25rem,-1 * .25rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}.igx-drop-down__group label{padding-inline:max(var(--is-large, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));padding-block:max(var(--is-large, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(.375rem,-1 * .375rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(.25rem,-1 * .25rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))));margin-block-end:.125rem}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-drop-down__item--focused{outline:.0625rem solid var(--border-color);outline-offset:-.0625rem}.igx-drop-down__header{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom)}.igx-drop-down__group{pointer-events:auto}.igx-drop-down__group label{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom)}}}\n"], dependencies: [{ kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
1440
1661
  }
1441
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownComponent, decorators: [{
1662
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownComponent, decorators: [{
1442
1663
  type: Component,
1443
1664
  args: [{ selector: 'igx-drop-down', encapsulation: ViewEncapsulation.None, providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxDropDownComponent }], changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxToggleDirective], template: "<div class=\"igx-drop-down\" [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", styles: ["@layer ig.base{.igx-drop-down__group label,.igx-drop-down__header,.igx-drop-down__item{display:flex;justify-content:flex-start;align-items:center;width:100%;white-space:nowrap;position:relative;height:var(--size);color:var(--item-text-color)}.igx-drop-down__group label igx-divider,.igx-drop-down__header igx-divider,.igx-drop-down__item igx-divider{position:absolute;width:100%;inset-inline-start:0;bottom:0}.igx-drop-down__group label igx-icon,.igx-drop-down__header igx-icon,.igx-drop-down__item igx-icon{--component-size: 1;justify-content:center}.igx-drop-down__group label,.igx-drop-down__header{font-family:var(--ig-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);color:var(--header-text-color);pointer-events:none;padding-inline:max(var(--is-large, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}.igx-drop-down{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);--component-size: var(--ig-size, var(--default-size));--dropdown-size: var(--component-size);width:-moz-max-content;width:max-content;overflow:hidden;border-radius:var(--border-radius);background:var(--background-color);box-shadow:var(--elevation);min-width:8rem;border:var(--border-width) solid var(--border-color)}.igx-drop-down__list-scroll{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;position:relative}.igx-drop-down__list-scroll .igx-display-container--scrollbar{padding-inline-end:var(--vhelper-scrollbar-size)}.igx-drop-down__item{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);--component-size: var(--dropdown-size);cursor:pointer;padding-inline:max(var(--is-large, 1)*max(1.5rem,-1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1.25rem,-1 * 1.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));border-radius:var(--item-border-radius)}.igx-drop-down__item igx-icon{color:var(--item-icon-color)}.igx-drop-down__item:hover{background:var(--hover-item-background);color:var(--hover-item-text-color)}.igx-drop-down__item:hover igx-icon{color:var(--hover-item-icon-color)}.igx-drop-down__item:focus{outline:0;outline-color:#0000;background:var(--focused-item-background);color:var(--focused-item-text-color)}.igx-drop-down__inner{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;align-items:center;gap:.5rem;margin-inline-end:auto}.igx-drop-down__inner>div{display:flex;align-items:center;gap:.5rem}.igx-drop-down__content{display:flex;width:100%;align-items:center;gap:.5rem}.igx-drop-down__item--focused{background:var(--focused-item-background);color:var(--focused-item-text-color)}.igx-drop-down__item--selected{background:var(--selected-item-background);color:var(--selected-item-text-color)}.igx-drop-down__item--selected igx-icon{color:var(--selected-item-icon-color)}.igx-drop-down__item--selected:hover{background:var(--selected-hover-item-background);color:var(--selected-hover-item-text-color)}.igx-drop-down__item--selected:hover igx-icon{color:var(--selected-hover-item-icon-color)}.igx-drop-down__item--selected.igx-drop-down__item--focused{background:var(--selected-focus-item-background);color:var(--selected-focus-item-text-color)}.igx-drop-down__item--selected.igx-drop-down__item--focused:hover{background:var(--selected-hover-item-background);color:var(--selected-hover-item-text-color)}.igx-drop-down__item--selected.igx-drop-down__item--focused:hover igx-icon{color:var(--selected-hover-item-icon-color)}.igx-drop-down__item--disabled{background:var(--disabled-item-background);color:var(--disabled-item-text-color);cursor:default;pointer-events:none}.igx-drop-down__item--disabled igx-icon{color:var(--disabled-item-text-color)}.igx-drop-down__group{pointer-events:auto}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-drop-down .igx-drop-down__header,.igx-drop-down .igx-drop-down__item{--ig-icon-size: max(var(--is-large, 1) * max(1rem, -1 * 1rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(.875rem, -1 * .875rem));padding-inline:max(var(--is-large, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}.igx-drop-down .igx-drop-down__header igx-icon,.igx-drop-down .igx-drop-down__item igx-icon{--component-size: inherit}.igx-drop-down{padding:.1875rem}.igx-drop-down__item{margin-block:.125rem}.igx-drop-down__item:first-of-type,.igx-drop-down__item:last-of-type{margin-block:initial}.igx-drop-down__item--focused{outline:.125rem solid var(--focused-item-border-color);outline-offset:-.125rem}.igx-drop-down__header{margin-block-end:.125rem;padding-block:max(var(--is-large, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.375rem,-1 * .375rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.25rem,-1 * .25rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))))}.igx-drop-down__group label{padding-inline:max(var(--is-large, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));padding-block:max(var(--is-large, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(.375rem,-1 * .375rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(.25rem,-1 * .25rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))));margin-block-end:.125rem}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-drop-down__item--focused{outline:.0625rem solid var(--border-color);outline-offset:-.0625rem}.igx-drop-down__header{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom)}.igx-drop-down__group{pointer-events:auto}.igx-drop-down__group label{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom)}}}\n"] }]
1444
1665
  }], propDecorators: { children: [{
@@ -1459,9 +1680,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
1459
1680
  type: Input
1460
1681
  }], role: [{
1461
1682
  type: Input
1462
- }], virtDir: [{
1463
- type: ContentChild,
1464
- args: [IgxForOfToken]
1683
+ }], _forOfQuery: [{
1684
+ type: ContentChildren,
1685
+ args: [IgxForOfToken, { descendants: true }]
1686
+ }], _virtualScrollQuery: [{
1687
+ type: ContentChildren,
1688
+ args: [IgxVirtualScrollComponent, { descendants: true }]
1689
+ }], _virtualScrollRefQuery: [{
1690
+ type: ContentChildren,
1691
+ args: [IgxVirtualScrollComponent, { read: ElementRef, descendants: true }]
1465
1692
  }], toggleDirective: [{
1466
1693
  type: ViewChild,
1467
1694
  args: [IgxToggleDirective, { static: true }]
@@ -1729,10 +1956,10 @@ class IgxAutocompleteDirective extends IgxDropDownItemNavigationDirective {
1729
1956
  this.target.navigateFirst();
1730
1957
  this.cdr.detectChanges();
1731
1958
  }
1732
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxAutocompleteDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
1733
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.1.1", type: IgxAutocompleteDirective, isStandalone: true, selector: "[igxAutocomplete]", inputs: { target: ["igxAutocomplete", "target"], autocompleteSettings: ["igxAutocompleteSettings", "autocompleteSettings"], disabled: ["igxAutocompleteDisabled", "disabled", booleanAttribute] }, outputs: { selectionChanging: "selectionChanging" }, host: { listeners: { "input": "onInput()", "compositionstart": "onCompositionStart()", "compositionend": "onCompositionEnd()", "keydown.ArrowDown": "onArrowDown($event)", "keydown.Alt.ArrowDown": "onArrowDown($event)", "keydown.ArrowUp": "onArrowDown($event)", "keydown.Alt.ArrowUp": "onArrowDown($event)", "keydown.Tab": "onTab()", "keydown.Shift.Tab": "onTab()" }, properties: { "attr.autocomplete": "this.autofill", "attr.role": "this.role", "attr.aria-expanded": "this.ariaExpanded", "attr.aria-haspopup": "this.hasPopUp", "attr.aria-owns": "this.ariaOwns", "attr.aria-activedescendant": "this.ariaActiveDescendant", "attr.aria-autocomplete": "this.ariaAutocomplete" } }, exportAs: ["igxAutocomplete"], usesInheritance: true, ngImport: i0 }); }
1959
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxAutocompleteDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
1960
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.1.7", type: IgxAutocompleteDirective, isStandalone: true, selector: "[igxAutocomplete]", inputs: { target: ["igxAutocomplete", "target"], autocompleteSettings: ["igxAutocompleteSettings", "autocompleteSettings"], disabled: ["igxAutocompleteDisabled", "disabled", booleanAttribute] }, outputs: { selectionChanging: "selectionChanging" }, host: { listeners: { "input": "onInput()", "compositionstart": "onCompositionStart()", "compositionend": "onCompositionEnd()", "keydown.ArrowDown": "onArrowDown($event)", "keydown.Alt.ArrowDown": "onArrowDown($event)", "keydown.ArrowUp": "onArrowDown($event)", "keydown.Alt.ArrowUp": "onArrowDown($event)", "keydown.Tab": "onTab()", "keydown.Shift.Tab": "onTab()" }, properties: { "attr.autocomplete": "this.autofill", "attr.role": "this.role", "attr.aria-expanded": "this.ariaExpanded", "attr.aria-haspopup": "this.hasPopUp", "attr.aria-owns": "this.ariaOwns", "attr.aria-activedescendant": "this.ariaActiveDescendant", "attr.aria-autocomplete": "this.ariaAutocomplete" } }, exportAs: ["igxAutocomplete"], usesInheritance: true, ngImport: i0 }); }
1734
1961
  }
1735
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxAutocompleteDirective, decorators: [{
1962
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxAutocompleteDirective, decorators: [{
1736
1963
  type: Directive,
1737
1964
  args: [{
1738
1965
  selector: '[igxAutocomplete]',
@@ -1805,11 +2032,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
1805
2032
  * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
1806
2033
  */
1807
2034
  class IgxAutocompleteModule {
1808
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1809
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.1", ngImport: i0, type: IgxAutocompleteModule, imports: [IgxAutocompleteDirective], exports: [IgxAutocompleteDirective] }); }
1810
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxAutocompleteModule }); }
2035
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2036
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxAutocompleteModule, imports: [IgxAutocompleteDirective], exports: [IgxAutocompleteDirective] }); }
2037
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxAutocompleteModule }); }
1811
2038
  }
1812
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxAutocompleteModule, decorators: [{
2039
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxAutocompleteModule, decorators: [{
1813
2040
  type: NgModule,
1814
2041
  args: [{
1815
2042
  imports: [IgxAutocompleteDirective],
@@ -1830,11 +2057,11 @@ const IGX_DROP_DOWN_DIRECTIVES = [
1830
2057
  * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
1831
2058
  */
1832
2059
  class IgxDropDownModule {
1833
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1834
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownModule, imports: [IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownGroupComponent, IgxDropDownItemNavigationDirective], exports: [IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownGroupComponent, IgxDropDownItemNavigationDirective] }); }
1835
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownModule }); }
2060
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2061
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownModule, imports: [IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownGroupComponent, IgxDropDownItemNavigationDirective], exports: [IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownGroupComponent, IgxDropDownItemNavigationDirective] }); }
2062
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownModule }); }
1836
2063
  }
1837
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxDropDownModule, decorators: [{
2064
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxDropDownModule, decorators: [{
1838
2065
  type: NgModule,
1839
2066
  args: [{
1840
2067
  imports: [