igniteui-angular 22.1.4 → 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.
- package/README.md +2 -2
- package/combo/README.md +19 -0
- package/drop-down/README.md +40 -4
- package/fesm2022/igniteui-angular-accordion.mjs +7 -7
- package/fesm2022/igniteui-angular-action-strip.mjs +10 -10
- package/fesm2022/igniteui-angular-avatar.mjs +7 -7
- package/fesm2022/igniteui-angular-badge.mjs +7 -7
- package/fesm2022/igniteui-angular-banner.mjs +10 -10
- package/fesm2022/igniteui-angular-bottom-nav.mjs +22 -22
- package/fesm2022/igniteui-angular-button-group.mjs +12 -13
- package/fesm2022/igniteui-angular-button-group.mjs.map +1 -1
- package/fesm2022/igniteui-angular-calendar.mjs +61 -61
- package/fesm2022/igniteui-angular-card.mjs +31 -31
- package/fesm2022/igniteui-angular-carousel.mjs +22 -22
- package/fesm2022/igniteui-angular-chat-extras.mjs +6 -6
- package/fesm2022/igniteui-angular-chat.mjs +12 -12
- package/fesm2022/igniteui-angular-checkbox.mjs +7 -7
- package/fesm2022/igniteui-angular-chips.mjs +10 -10
- package/fesm2022/igniteui-angular-combo.mjs +268 -120
- package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
- package/fesm2022/igniteui-angular-core.mjs +188 -59
- package/fesm2022/igniteui-angular-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-date-picker.mjs +71 -80
- package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
- package/fesm2022/igniteui-angular-dialog.mjs +13 -13
- package/fesm2022/igniteui-angular-directives.mjs +321 -457
- package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
- package/fesm2022/igniteui-angular-drop-down.mjs +331 -104
- package/fesm2022/igniteui-angular-drop-down.mjs.map +1 -1
- package/fesm2022/igniteui-angular-expansion-panel.mjs +28 -28
- package/fesm2022/igniteui-angular-grids-core.mjs +552 -516
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +79 -80
- package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +59 -46
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-lite.mjs +12 -12
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +113 -86
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs +57 -57
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-icon.mjs +10 -10
- package/fesm2022/igniteui-angular-input-group.mjs +47 -61
- package/fesm2022/igniteui-angular-input-group.mjs.map +1 -1
- package/fesm2022/igniteui-angular-list.mjs +40 -40
- package/fesm2022/igniteui-angular-navbar.mjs +13 -13
- package/fesm2022/igniteui-angular-navigation-drawer.mjs +16 -16
- package/fesm2022/igniteui-angular-paginator.mjs +19 -19
- package/fesm2022/igniteui-angular-progressbar.mjs +19 -19
- package/fesm2022/igniteui-angular-query-builder.mjs +23 -23
- package/fesm2022/igniteui-angular-query-builder.mjs.map +1 -1
- package/fesm2022/igniteui-angular-radio.mjs +59 -35
- package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
- package/fesm2022/igniteui-angular-select.mjs +35 -43
- package/fesm2022/igniteui-angular-select.mjs.map +1 -1
- package/fesm2022/igniteui-angular-simple-combo.mjs +44 -33
- package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
- package/fesm2022/igniteui-angular-slider.mjs +28 -28
- package/fesm2022/igniteui-angular-snackbar.mjs +7 -7
- package/fesm2022/igniteui-angular-splitter.mjs +13 -13
- package/fesm2022/igniteui-angular-stepper.mjs +34 -34
- package/fesm2022/igniteui-angular-switch.mjs +7 -7
- package/fesm2022/igniteui-angular-tabs.mjs +34 -34
- package/fesm2022/igniteui-angular-time-picker.mjs +29 -38
- package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
- package/fesm2022/igniteui-angular-toast.mjs +7 -7
- package/fesm2022/igniteui-angular-tree.mjs +28 -28
- package/fesm2022/igniteui-angular-virtual-scroll.mjs +1257 -0
- package/fesm2022/igniteui-angular-virtual-scroll.mjs.map +1 -0
- package/fesm2022/igniteui-angular.mjs +1 -0
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/input-group/README.md +2 -0
- package/lib/core/styles/components/scrollbar/scrollbar-component.scss +0 -2
- package/lib/core/styles/components/scrollbar/scrollbar-theme.scss +23 -51
- package/lib/grids/core/src/column-actions/themes/_derived.scss +3 -3
- package/lib/grids/core/src/filtering/excel-style/themes/_derived.scss +3 -3
- package/lib/grids/themes/_derived.scss +3 -3
- package/lib/query-builder/src/query-builder/themes/_derived.scss +3 -3
- package/migrations/migration-collection.json +10 -0
- package/migrations/update-22_2_0/changes/theme-changes.json +77 -0
- package/migrations/update-22_2_0/index.d.ts +3 -0
- package/migrations/update-22_2_0/index.js +18 -0
- package/migrations/update-22_2_0/index.spec.d.ts +1 -0
- package/migrations/update-22_2_0/index.spec.js +88 -0
- package/migrations/update-22_2_0_grid-summary-borders/changes/theme-changes.json +17 -0
- package/migrations/update-22_2_0_grid-summary-borders/index.d.ts +3 -0
- package/migrations/update-22_2_0_grid-summary-borders/index.js +64 -0
- package/migrations/update-22_2_0_grid-summary-borders/index.spec.d.ts +1 -0
- package/migrations/update-22_2_0_grid-summary-borders/index.spec.js +100 -0
- package/package.json +6 -2
- package/schematics/tsconfig.tsbuildinfo +1 -1
- package/simple-combo/README.md +3 -0
- package/skills/igniteui-angular-components/references/form-controls.md +58 -0
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
- package/types/igniteui-angular-calendar.d.ts +1 -1
- package/types/igniteui-angular-combo.d.ts +55 -12
- package/types/igniteui-angular-core.d.ts +64 -11
- package/types/igniteui-angular-date-picker.d.ts +3 -4
- package/types/igniteui-angular-directives.d.ts +50 -164
- package/types/igniteui-angular-drop-down.d.ts +76 -4
- package/types/igniteui-angular-grids-core.d.ts +63 -28
- package/types/igniteui-angular-grids-grid.d.ts +2 -7
- package/types/igniteui-angular-grids-hierarchical-grid.d.ts +5 -4
- package/types/igniteui-angular-grids-pivot-grid.d.ts +11 -5
- package/types/igniteui-angular-grids-tree-grid.d.ts +1 -1
- package/types/igniteui-angular-icon.d.ts +1 -1
- package/types/igniteui-angular-input-group.d.ts +1 -2
- package/types/igniteui-angular-query-builder.d.ts +1 -1
- package/types/igniteui-angular-radio.d.ts +16 -1
- package/types/igniteui-angular-select.d.ts +1 -2
- package/types/igniteui-angular-simple-combo.d.ts +7 -0
- package/types/igniteui-angular-stepper.d.ts +1 -1
- package/types/igniteui-angular-time-picker.d.ts +1 -2
- package/types/igniteui-angular-tree.d.ts +3 -3
- package/types/igniteui-angular-virtual-scroll.d.ts +408 -0
- package/types/igniteui-angular.d.ts +1 -0
- 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,
|
|
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 {
|
|
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.
|
|
61
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "22.1.
|
|
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.
|
|
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.
|
|
334
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.1.
|
|
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.
|
|
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.
|
|
485
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.
|
|
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.
|
|
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.
|
|
619
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
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.
|
|
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.
|
|
869
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
1050
|
-
return this.
|
|
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 (
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
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
|
-
|
|
1117
|
-
|
|
1278
|
+
if (index < 0 || index >= this.items.length) {
|
|
1279
|
+
return;
|
|
1118
1280
|
}
|
|
1119
|
-
this.selectItem(
|
|
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.
|
|
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.
|
|
1296
|
+
value: this.virtualization.itemAt(index),
|
|
1136
1297
|
index
|
|
1137
1298
|
};
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
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.
|
|
1316
|
+
if (!this.virtualization) {
|
|
1164
1317
|
return;
|
|
1165
1318
|
}
|
|
1166
1319
|
if (!this.selectedItem) {
|
|
1167
|
-
this.
|
|
1320
|
+
this.virtualization.scrollPosition = 0;
|
|
1168
1321
|
return;
|
|
1169
1322
|
}
|
|
1170
|
-
|
|
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.
|
|
1187
|
-
this.
|
|
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.
|
|
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.
|
|
1216
|
-
this._scrollPosition = this.
|
|
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
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
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.
|
|
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.
|
|
1293
|
-
this.navigateItem(this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
}],
|
|
1463
|
-
type:
|
|
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.
|
|
1733
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.1.
|
|
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.
|
|
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.
|
|
1809
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.
|
|
1810
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.
|
|
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.
|
|
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.
|
|
1834
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.
|
|
1835
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.
|
|
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.
|
|
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: [
|