igniteui-angular 22.1.4 → 22.2.0-rc.1
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 -124
- package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
- package/fesm2022/igniteui-angular-core.mjs +207 -59
- package/fesm2022/igniteui-angular-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-date-picker.mjs +80 -106
- 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 +73 -83
- 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 +36 -48
- 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 +32 -51
- 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/common/UpdateChanges.d.ts +36 -0
- package/migrations/common/UpdateChanges.js +175 -31
- package/migrations/common/UpdateChanges.spec.js +66 -0
- 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 +161 -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 +73 -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 +18 -5
- 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 -3
- 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,19 +1,20 @@
|
|
|
1
1
|
import * as i3 from 'igniteui-angular/input-group';
|
|
2
|
-
import { IGX_INPUT_GROUP_TYPE, IgxInputState, IgxInputGroupComponent, IgxInputDirective, IgxSuffixDirective, IgxPrefixDirective, IgxHintDirective, IgxLabelDirective, IgxReadOnlyInputDirective } from 'igniteui-angular/input-group';
|
|
2
|
+
import { IGX_INPUT_GROUP_TYPE, IgxInputState, toInputState, IgxInputGroupComponent, IgxInputDirective, IgxSuffixDirective, IgxPrefixDirective, IgxHintDirective, IgxLabelDirective, IgxReadOnlyInputDirective } from 'igniteui-angular/input-group';
|
|
3
3
|
import { NgTemplateOutlet, NgClass } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { Injectable, inject, booleanAttribute, Input, HostBinding, ChangeDetectionStrategy, Component, Directive, InjectionToken, ElementRef, ChangeDetectorRef, DOCUMENT, Injector, EventEmitter, QueryList, TemplateRef, ViewChildren, ContentChildren, ViewChild, ContentChild, forwardRef, Output, ViewEncapsulation, Pipe, HostListener, NgModule } from '@angular/core';
|
|
6
6
|
import * as i1 from '@angular/forms';
|
|
7
7
|
import { NgControl, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { IgxVirtualScrollComponent, IgxVirtualItemDirective } from 'igniteui-angular/virtual-scroll';
|
|
9
|
+
import { IgxToggleDirective, IgxButtonDirective, IgxRippleDirective } from 'igniteui-angular/directives';
|
|
10
|
+
import { rem, IgxSelectionAPIService, getCurrentResourceStrings, ComboResourceStringsEN, SortingDirection, onResourceChangeHandle, AutoPositionStrategy, AbsoluteScrollStrategy, NgControlAdapter, cloneArray } from 'igniteui-angular/core';
|
|
10
11
|
import { IgxCheckboxComponent } from 'igniteui-angular/checkbox';
|
|
11
12
|
import { IgxDropDownItemComponent, Navigate, IgxDropDownComponent, DropDownActionKey, IGX_DROPDOWN_BASE, IgxDropDownItemNavigationDirective } from 'igniteui-angular/drop-down';
|
|
12
13
|
import { caseSensitive } from '@igniteui/material-icons-extended';
|
|
13
14
|
import { Subject, noop } from 'rxjs';
|
|
14
15
|
import { takeUntil } from 'rxjs/operators';
|
|
15
16
|
import { IgxIconService, IgxIconComponent } from 'igniteui-angular/icon';
|
|
16
|
-
import { isEqual } from 'lodash-es';
|
|
17
|
+
import { isObject, isEqual } from 'lodash-es';
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* @hidden
|
|
@@ -61,10 +62,10 @@ class IgxComboAPIService {
|
|
|
61
62
|
is_item_selected(itemID) {
|
|
62
63
|
return this.combo.isItemSelected(itemID);
|
|
63
64
|
}
|
|
64
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
65
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.
|
|
65
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboAPIService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
66
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboAPIService }); }
|
|
66
67
|
}
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboAPIService, decorators: [{
|
|
68
69
|
type: Injectable
|
|
69
70
|
}] });
|
|
70
71
|
|
|
@@ -163,10 +164,10 @@ class IgxComboItemComponent extends IgxDropDownItemComponent {
|
|
|
163
164
|
disableCheck(event) {
|
|
164
165
|
event.preventDefault();
|
|
165
166
|
}
|
|
166
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
167
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
167
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
168
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: IgxComboItemComponent, isStandalone: true, selector: "igx-combo-item", inputs: { itemHeight: "itemHeight", ariaLabel: "ariaLabel", singleMode: ["singleMode", "singleMode", booleanAttribute] }, host: { properties: { "style.height.rem": "this._itemHeightToRem", "attr.aria-label": "this.ariaLabel" } }, usesInheritance: true, ngImport: i0, template: "@if (!isHeader && !singleMode) {\n <!-- checkbox should not allow changing its state from UI click (that's why it should be readonly=true), becasue when cancelling the selectionChange event in the combo, then checkbox will still change state.-->\n <igx-checkbox [checked]=\"selected\" [readonly]=\"true\" [disableRipple]=\"true\" [disableTransitions]=\"disableTransitions\" [tabindex]=\"-1\" (click)=\"disableCheck($event)\" class=\"igx-combo__checkbox\"></igx-checkbox>\n}\n<span class=\"igx-drop-down__inner\"><ng-content></ng-content></span>\n", dependencies: [{ kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
168
169
|
}
|
|
169
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboItemComponent, decorators: [{
|
|
170
171
|
type: Component,
|
|
171
172
|
args: [{ selector: 'igx-combo-item', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxCheckboxComponent], template: "@if (!isHeader && !singleMode) {\n <!-- checkbox should not allow changing its state from UI click (that's why it should be readonly=true), becasue when cancelling the selectionChange event in the combo, then checkbox will still change state.-->\n <igx-checkbox [checked]=\"selected\" [readonly]=\"true\" [disableRipple]=\"true\" [disableTransitions]=\"disableTransitions\" [tabindex]=\"-1\" (click)=\"disableCheck($event)\" class=\"igx-combo__checkbox\"></igx-checkbox>\n}\n<span class=\"igx-drop-down__inner\"><ng-content></ng-content></span>\n" }]
|
|
172
173
|
}], propDecorators: { itemHeight: [{
|
|
@@ -201,10 +202,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
201
202
|
* </igx-combo>
|
|
202
203
|
*/
|
|
203
204
|
class IgxComboHeaderDirective {
|
|
204
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
205
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
205
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
206
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxComboHeaderDirective, isStandalone: true, selector: "[igxComboHeader]", ngImport: i0 }); }
|
|
206
207
|
}
|
|
207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboHeaderDirective, decorators: [{
|
|
208
209
|
type: Directive,
|
|
209
210
|
args: [{
|
|
210
211
|
selector: '[igxComboHeader]',
|
|
@@ -228,10 +229,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
228
229
|
* </igx-combo>
|
|
229
230
|
*/
|
|
230
231
|
class IgxComboFooterDirective {
|
|
231
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
232
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
232
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
233
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxComboFooterDirective, isStandalone: true, selector: "[igxComboFooter]", ngImport: i0 }); }
|
|
233
234
|
}
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
235
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboFooterDirective, decorators: [{
|
|
235
236
|
type: Directive,
|
|
236
237
|
args: [{
|
|
237
238
|
selector: '[igxComboFooter]',
|
|
@@ -257,10 +258,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
257
258
|
* </igx-combo>
|
|
258
259
|
*/
|
|
259
260
|
class IgxComboItemDirective {
|
|
260
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
261
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
262
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxComboItemDirective, isStandalone: true, selector: "[igxComboItem]", ngImport: i0 }); }
|
|
262
263
|
}
|
|
263
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
264
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboItemDirective, decorators: [{
|
|
264
265
|
type: Directive,
|
|
265
266
|
args: [{
|
|
266
267
|
selector: '[igxComboItem]',
|
|
@@ -285,10 +286,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
285
286
|
* </igx-combo>
|
|
286
287
|
*/
|
|
287
288
|
class IgxComboEmptyDirective {
|
|
288
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
289
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
289
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboEmptyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
290
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxComboEmptyDirective, isStandalone: true, selector: "[igxComboEmpty]", ngImport: i0 }); }
|
|
290
291
|
}
|
|
291
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
292
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboEmptyDirective, decorators: [{
|
|
292
293
|
type: Directive,
|
|
293
294
|
args: [{
|
|
294
295
|
selector: '[igxComboEmpty]',
|
|
@@ -311,10 +312,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
311
312
|
* </igx-combo>
|
|
312
313
|
*/
|
|
313
314
|
class IgxComboHeaderItemDirective {
|
|
314
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
315
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
315
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboHeaderItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
316
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxComboHeaderItemDirective, isStandalone: true, selector: "[igxComboHeaderItem]", ngImport: i0 }); }
|
|
316
317
|
}
|
|
317
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
318
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboHeaderItemDirective, decorators: [{
|
|
318
319
|
type: Directive,
|
|
319
320
|
args: [{
|
|
320
321
|
selector: '[igxComboHeaderItem]',
|
|
@@ -341,10 +342,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
341
342
|
* </igx-combo>
|
|
342
343
|
*/
|
|
343
344
|
class IgxComboAddItemDirective {
|
|
344
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
345
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
345
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboAddItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
346
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxComboAddItemDirective, isStandalone: true, selector: "[igxComboAddItem]", ngImport: i0 }); }
|
|
346
347
|
}
|
|
347
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
348
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboAddItemDirective, decorators: [{
|
|
348
349
|
type: Directive,
|
|
349
350
|
args: [{
|
|
350
351
|
selector: '[igxComboAddItem]',
|
|
@@ -367,10 +368,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
367
368
|
* </igx-combo>
|
|
368
369
|
*/
|
|
369
370
|
class IgxComboToggleIconDirective {
|
|
370
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
371
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
371
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboToggleIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
372
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxComboToggleIconDirective, isStandalone: true, selector: "[igxComboToggleIcon]", ngImport: i0 }); }
|
|
372
373
|
}
|
|
373
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboToggleIconDirective, decorators: [{
|
|
374
375
|
type: Directive,
|
|
375
376
|
args: [{
|
|
376
377
|
selector: '[igxComboToggleIcon]',
|
|
@@ -393,10 +394,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
393
394
|
* </igx-combo>
|
|
394
395
|
*/
|
|
395
396
|
class IgxComboClearIconDirective {
|
|
396
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
397
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
397
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboClearIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
398
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxComboClearIconDirective, isStandalone: true, selector: "[igxComboClearIcon]", ngImport: i0 }); }
|
|
398
399
|
}
|
|
399
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
400
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboClearIconDirective, decorators: [{
|
|
400
401
|
type: Directive,
|
|
401
402
|
args: [{
|
|
402
403
|
selector: '[igxComboClearIcon]',
|
|
@@ -406,6 +407,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
406
407
|
|
|
407
408
|
const IGX_COMBO_COMPONENT = /*@__PURE__*/ new InjectionToken('IgxComboComponentToken');
|
|
408
409
|
let NEXT_ID = 0;
|
|
410
|
+
/** Row height assumed before a real row has been measured, in pixels. */
|
|
411
|
+
const DEFAULT_ITEM_SIZE = 40;
|
|
409
412
|
class IgxComboBaseDirective {
|
|
410
413
|
/**
|
|
411
414
|
* Enables/disables filtering in the list. The default is `false`.
|
|
@@ -509,6 +512,7 @@ class IgxComboBaseDirective {
|
|
|
509
512
|
// during filtering & selection for the igx-simple-combo
|
|
510
513
|
// since the simple combo's input is both a container for the selection and a filter
|
|
511
514
|
this._data = (val) ? val.filter(x => x !== undefined) : [];
|
|
515
|
+
this._loadedStartIndex = this._requestedStartIndex;
|
|
512
516
|
}
|
|
513
517
|
set displayKey(val) {
|
|
514
518
|
this._displayKey = val;
|
|
@@ -673,7 +677,7 @@ class IgxComboBaseDirective {
|
|
|
673
677
|
* ```
|
|
674
678
|
*/
|
|
675
679
|
get virtualizationState() {
|
|
676
|
-
return this.
|
|
680
|
+
return this._virtualizationState;
|
|
677
681
|
}
|
|
678
682
|
/**
|
|
679
683
|
* Sets the current state of the virtualized data.
|
|
@@ -684,7 +688,9 @@ class IgxComboBaseDirective {
|
|
|
684
688
|
* ```
|
|
685
689
|
*/
|
|
686
690
|
set virtualizationState(state) {
|
|
687
|
-
this.
|
|
691
|
+
this._virtualizationState = { ...state };
|
|
692
|
+
this._requestedStartIndex = state.startIndex ?? 0;
|
|
693
|
+
void this.virtualScrollContainer?.scrollToIndex(state.startIndex ?? 0);
|
|
688
694
|
}
|
|
689
695
|
/**
|
|
690
696
|
* Gets drop down state.
|
|
@@ -705,18 +711,29 @@ class IgxComboBaseDirective {
|
|
|
705
711
|
* ```
|
|
706
712
|
*/
|
|
707
713
|
get totalItemCount() {
|
|
708
|
-
return this.
|
|
714
|
+
return this._totalItemCount;
|
|
709
715
|
}
|
|
710
716
|
/**
|
|
711
717
|
* Sets total count of the virtual data items, when using remote service.
|
|
712
718
|
*
|
|
713
719
|
* ```typescript
|
|
714
720
|
* // set
|
|
715
|
-
* this.combo.totalItemCount
|
|
721
|
+
* this.combo.totalItemCount = remoteService.count;
|
|
716
722
|
* ```
|
|
717
723
|
*/
|
|
718
724
|
set totalItemCount(count) {
|
|
719
|
-
this.
|
|
725
|
+
if (this._totalItemCount === count) {
|
|
726
|
+
return;
|
|
727
|
+
}
|
|
728
|
+
this._totalItemCount = count;
|
|
729
|
+
this.cdr.markForCheck();
|
|
730
|
+
// Move an out-of-range viewport without relocating its loaded records.
|
|
731
|
+
// The record-window pipe excludes records past the new total.
|
|
732
|
+
const lastStart = Math.max(0, count - (this._virtualizationState.chunkSize ?? 0));
|
|
733
|
+
if ((this._virtualizationState.startIndex ?? 0) > lastStart) {
|
|
734
|
+
this._virtualizationState = { ...this._virtualizationState, startIndex: lastStart };
|
|
735
|
+
void this.virtualScrollContainer?.scrollToIndex(lastStart);
|
|
736
|
+
}
|
|
720
737
|
}
|
|
721
738
|
/** @hidden @internal */
|
|
722
739
|
get template() {
|
|
@@ -1069,8 +1086,18 @@ class IgxComboBaseDirective {
|
|
|
1069
1086
|
this.defaultFallbackGroup = 'Other';
|
|
1070
1087
|
/** @hidden @internal */
|
|
1071
1088
|
this.activeDescendant = '';
|
|
1072
|
-
this.containerSize = undefined;
|
|
1073
1089
|
this.itemSize = undefined;
|
|
1090
|
+
/** The wanted window, in the shape `virtualizationState` and `dataPreLoad` use. */
|
|
1091
|
+
this._virtualizationState = { startIndex: 0, chunkSize: 0 };
|
|
1092
|
+
/** Where the records currently bound sit, which a pending request has not moved yet. */
|
|
1093
|
+
this._loadedStartIndex = 0;
|
|
1094
|
+
/** The index the last asked-for range began at, which arriving records belong to. */
|
|
1095
|
+
this._requestedStartIndex = 0;
|
|
1096
|
+
this._recordsByKey = new Map();
|
|
1097
|
+
this._recordsByKeySource = null;
|
|
1098
|
+
this._recordsByKeyLength = -1;
|
|
1099
|
+
this._recordsByKeyValueKey = null;
|
|
1100
|
+
this._totalItemCount = 0;
|
|
1074
1101
|
this._data = [];
|
|
1075
1102
|
this._value = [];
|
|
1076
1103
|
this._displayValue = '';
|
|
@@ -1083,6 +1110,7 @@ class IgxComboBaseDirective {
|
|
|
1083
1110
|
this._defaultResourceStrings = getCurrentResourceStrings(ComboResourceStringsEN);
|
|
1084
1111
|
this._valid = IgxInputState.INITIAL;
|
|
1085
1112
|
this.ngControl = null;
|
|
1113
|
+
this.control = null;
|
|
1086
1114
|
this.destroy$ = new Subject();
|
|
1087
1115
|
this._onTouchedCallback = noop;
|
|
1088
1116
|
this._onChangeCallback = noop;
|
|
@@ -1097,13 +1125,9 @@ class IgxComboBaseDirective {
|
|
|
1097
1125
|
this._defaultFilteringOptions = { caseSensitive: false };
|
|
1098
1126
|
this.itemsInContainer = 10;
|
|
1099
1127
|
this.onStatusChanged = () => {
|
|
1100
|
-
if (this.
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
}
|
|
1104
|
-
else {
|
|
1105
|
-
this.valid = this.ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;
|
|
1106
|
-
}
|
|
1128
|
+
if (this.control && this.control.touchedOrDirty && !this.control.disabled) {
|
|
1129
|
+
const showSuccess = this.control.hasValidators && (!this.collapsed || this.inputGroup.isFocused);
|
|
1130
|
+
this.valid = toInputState(this.control.status, showSuccess ? 'allowed' : 'suppressed');
|
|
1107
1131
|
}
|
|
1108
1132
|
else {
|
|
1109
1133
|
// B.P. 18 May 2021: IgxDatePicker does not reset its state upon resetForm #9526
|
|
@@ -1154,6 +1178,7 @@ class IgxComboBaseDirective {
|
|
|
1154
1178
|
/** @hidden @internal */
|
|
1155
1179
|
ngOnInit() {
|
|
1156
1180
|
this.ngControl = this._injector.get(NgControl, null);
|
|
1181
|
+
this.control = NgControlAdapter.from(this.ngControl, this._injector);
|
|
1157
1182
|
this.selectionService.set(this.id, new Set());
|
|
1158
1183
|
this._iconService?.addSvgIconFromText(caseSensitive.name, caseSensitive.value, 'imx-icons');
|
|
1159
1184
|
this.computedStyles = this.document.defaultView.getComputedStyle(this.elementRef.nativeElement);
|
|
@@ -1161,26 +1186,53 @@ class IgxComboBaseDirective {
|
|
|
1161
1186
|
/** @hidden @internal */
|
|
1162
1187
|
ngAfterViewInit() {
|
|
1163
1188
|
this.filteredData = [...this.data];
|
|
1164
|
-
if (this.
|
|
1165
|
-
this.
|
|
1189
|
+
if (this.control) {
|
|
1190
|
+
this.control.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(this.onStatusChanged);
|
|
1166
1191
|
this.manageRequiredAsterisk();
|
|
1167
1192
|
this.cdr.detectChanges();
|
|
1168
1193
|
}
|
|
1169
|
-
this.virtDir.chunkPreload.pipe(takeUntil(this.destroy$)).subscribe((e) => {
|
|
1170
|
-
const eventArgs = Object.assign({}, e, { owner: this });
|
|
1171
|
-
this.dataPreLoad.emit(eventArgs);
|
|
1172
|
-
});
|
|
1173
1194
|
this.dropdown?.opening.subscribe((_args) => {
|
|
1174
|
-
//
|
|
1175
|
-
const dropdownContainerHeight = this.dropdownContainer.nativeElement.getBoundingClientRect().height;
|
|
1176
|
-
if (dropdownContainerHeight) {
|
|
1177
|
-
this.containerSize = parseFloat(dropdownContainerHeight);
|
|
1178
|
-
}
|
|
1195
|
+
// Take the row height from a real item, for the combos that do not set itemHeight.
|
|
1179
1196
|
if (this.dropdown.children?.first) {
|
|
1180
1197
|
this.itemSize = this.dropdown.children.first.element.nativeElement.getBoundingClientRect().height;
|
|
1181
1198
|
}
|
|
1182
1199
|
});
|
|
1183
1200
|
}
|
|
1201
|
+
/** @hidden @internal The height the list gets, for the pass that opens the drop-down. */
|
|
1202
|
+
get viewportSize() {
|
|
1203
|
+
return this.itemsMaxHeight || this.estimatedItemSize * this.itemsInContainer;
|
|
1204
|
+
}
|
|
1205
|
+
/** @hidden @internal The size rows are assumed to be until they are measured. */
|
|
1206
|
+
get estimatedItemSize() {
|
|
1207
|
+
return this.itemHeight || this.itemSize || DEFAULT_ITEM_SIZE;
|
|
1208
|
+
}
|
|
1209
|
+
/** @hidden @internal Where the loaded items sit in the collection they came from. */
|
|
1210
|
+
get virtualStartIndex() {
|
|
1211
|
+
return this._loadedStartIndex;
|
|
1212
|
+
}
|
|
1213
|
+
/**
|
|
1214
|
+
* @hidden @internal
|
|
1215
|
+
* Reports the wanted window as `virtualizationState` and asks for the data behind it.
|
|
1216
|
+
*/
|
|
1217
|
+
handleVirtualStateChange(state) {
|
|
1218
|
+
const chunkSize = state.endIndex - state.startIndex + 1;
|
|
1219
|
+
if (this._virtualizationState.startIndex === state.startIndex &&
|
|
1220
|
+
this._virtualizationState.chunkSize === chunkSize) {
|
|
1221
|
+
return;
|
|
1222
|
+
}
|
|
1223
|
+
const initial = !this._virtualizationState.chunkSize;
|
|
1224
|
+
const startIndex = state.startIndex;
|
|
1225
|
+
this._virtualizationState = { startIndex, chunkSize };
|
|
1226
|
+
this._requestedStartIndex = startIndex;
|
|
1227
|
+
// The first window a list reports can already be covered by the page it was given,
|
|
1228
|
+
// and then there is nothing to fetch. Later windows are always reported, so a reply
|
|
1229
|
+
// to a range the list has left is superseded rather than left in flight.
|
|
1230
|
+
if (initial && startIndex >= this._loadedStartIndex &&
|
|
1231
|
+
state.endIndex <= this._loadedStartIndex + this._data.length - 1) {
|
|
1232
|
+
return;
|
|
1233
|
+
}
|
|
1234
|
+
this.dataPreLoad.emit({ ...this._virtualizationState, owner: this });
|
|
1235
|
+
}
|
|
1184
1236
|
/** @hidden @internal */
|
|
1185
1237
|
ngOnDestroy() {
|
|
1186
1238
|
this.destroy$.next();
|
|
@@ -1296,7 +1348,7 @@ class IgxComboBaseDirective {
|
|
|
1296
1348
|
this.customValueFlag = false;
|
|
1297
1349
|
this.searchInput?.nativeElement.focus();
|
|
1298
1350
|
this.dropdown.focusedItem = null;
|
|
1299
|
-
this.
|
|
1351
|
+
void this.virtualScrollContainer?.scrollToIndex(0);
|
|
1300
1352
|
}
|
|
1301
1353
|
/** @hidden @internal */
|
|
1302
1354
|
isAddButtonVisible() {
|
|
@@ -1311,13 +1363,35 @@ class IgxComboBaseDirective {
|
|
|
1311
1363
|
owner: this,
|
|
1312
1364
|
cancel: false
|
|
1313
1365
|
};
|
|
1366
|
+
const restore = this.resetVirtualizationState();
|
|
1314
1367
|
this.searchInputUpdate.emit(args);
|
|
1315
1368
|
if (args.cancel) {
|
|
1316
1369
|
this.filterValue = null;
|
|
1370
|
+
restore();
|
|
1371
|
+
}
|
|
1372
|
+
else {
|
|
1373
|
+
void this.virtualScrollContainer?.scrollToIndex(0);
|
|
1317
1374
|
}
|
|
1318
1375
|
}
|
|
1319
1376
|
this.checkMatch();
|
|
1320
1377
|
}
|
|
1378
|
+
/**
|
|
1379
|
+
* @hidden @internal
|
|
1380
|
+
* Reports the start of the list without moving it. Returns a callback that puts it back.
|
|
1381
|
+
*/
|
|
1382
|
+
resetVirtualizationState() {
|
|
1383
|
+
const previous = this._virtualizationState;
|
|
1384
|
+
const previousRequested = this._requestedStartIndex;
|
|
1385
|
+
if (previous.startIndex === 0 && previousRequested === 0) {
|
|
1386
|
+
return () => { };
|
|
1387
|
+
}
|
|
1388
|
+
this._virtualizationState = { startIndex: 0, chunkSize: previous.chunkSize };
|
|
1389
|
+
this._requestedStartIndex = 0;
|
|
1390
|
+
return () => {
|
|
1391
|
+
this._virtualizationState = previous;
|
|
1392
|
+
this._requestedStartIndex = previousRequested;
|
|
1393
|
+
};
|
|
1394
|
+
}
|
|
1321
1395
|
/**
|
|
1322
1396
|
* Event handlers
|
|
1323
1397
|
*
|
|
@@ -1409,21 +1483,49 @@ class IgxComboBaseDirective {
|
|
|
1409
1483
|
this.valid = IgxInputState.INITIAL;
|
|
1410
1484
|
}
|
|
1411
1485
|
}
|
|
1412
|
-
get isTouchedOrDirty() {
|
|
1413
|
-
return (this.ngControl.control.touched || this.ngControl.control.dirty);
|
|
1414
|
-
}
|
|
1415
|
-
get hasValidators() {
|
|
1416
|
-
return (!!this.ngControl.control.validator || !!this.ngControl.control.asyncValidator);
|
|
1417
|
-
}
|
|
1418
1486
|
/** if there is a valueKey - map the keys to data items, else - just return the keys */
|
|
1419
1487
|
convertKeysToItems(keys) {
|
|
1420
|
-
if (this.valueKey === null || this.valueKey === undefined) {
|
|
1488
|
+
if (!keys.length || this.valueKey === null || this.valueKey === undefined) {
|
|
1421
1489
|
return keys;
|
|
1422
1490
|
}
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1491
|
+
if (keys.some(isObject)) {
|
|
1492
|
+
return keys.map(key => this.data.find(entry => isEqual(entry[this.valueKey], key)) ?? { [this.valueKey]: key });
|
|
1493
|
+
}
|
|
1494
|
+
const data = this.data;
|
|
1495
|
+
if (this._recordsByKeySource !== data || this._recordsByKeyLength !== data.length ||
|
|
1496
|
+
this._recordsByKeyValueKey !== this.valueKey) {
|
|
1497
|
+
this._recordsByKey.clear();
|
|
1498
|
+
this._recordsByKeySource = data;
|
|
1499
|
+
this._recordsByKeyLength = data.length;
|
|
1500
|
+
this._recordsByKeyValueKey = this.valueKey;
|
|
1501
|
+
}
|
|
1502
|
+
// A cached hit must still occupy its original index and carry the requested key.
|
|
1503
|
+
// Missing or replaced records are resolved together, without caching misses.
|
|
1504
|
+
const remaining = new Set();
|
|
1505
|
+
for (const key of keys) {
|
|
1506
|
+
const cached = this._recordsByKey.get(key);
|
|
1507
|
+
if (!cached || data[cached.index] !== cached.item || !isEqual(cached.item[this.valueKey], key)) {
|
|
1508
|
+
this._recordsByKey.delete(key);
|
|
1509
|
+
remaining.add(key);
|
|
1510
|
+
}
|
|
1511
|
+
}
|
|
1512
|
+
for (let index = 0; remaining.size && index < data.length; index++) {
|
|
1513
|
+
const item = data[index];
|
|
1514
|
+
const itemKey = item[this.valueKey];
|
|
1515
|
+
if (isObject(itemKey)) {
|
|
1516
|
+
// A boxed key can be deeply equal to a requested primitive key.
|
|
1517
|
+
for (const key of remaining) {
|
|
1518
|
+
if (isEqual(itemKey, key)) {
|
|
1519
|
+
this._recordsByKey.set(key, { item, index });
|
|
1520
|
+
remaining.delete(key);
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
else if (remaining.delete(itemKey)) {
|
|
1525
|
+
this._recordsByKey.set(itemKey, { item, index });
|
|
1526
|
+
}
|
|
1527
|
+
}
|
|
1528
|
+
return keys.map(key => this._recordsByKey.get(key)?.item ?? { [this.valueKey]: key });
|
|
1427
1529
|
}
|
|
1428
1530
|
checkMatch() {
|
|
1429
1531
|
const itemMatch = this.filteredData.some(this.findMatch);
|
|
@@ -1470,17 +1572,12 @@ class IgxComboBaseDirective {
|
|
|
1470
1572
|
return Object.keys(this._remoteSelection).map(e => this._remoteSelection[e]).join(', ');
|
|
1471
1573
|
}
|
|
1472
1574
|
get required() {
|
|
1473
|
-
|
|
1474
|
-
// Run the validation with empty object to check if required is enabled.
|
|
1475
|
-
const error = this.ngControl.control.validator({});
|
|
1476
|
-
return error && error.required;
|
|
1477
|
-
}
|
|
1478
|
-
return false;
|
|
1575
|
+
return this.control?.required ?? false;
|
|
1479
1576
|
}
|
|
1480
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
1481
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.1.
|
|
1577
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1578
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.1.7", type: IgxComboBaseDirective, isStandalone: true, inputs: { showSearchCaseIcon: ["showSearchCaseIcon", "showSearchCaseIcon", booleanAttribute], disableFiltering: ["disableFiltering", "disableFiltering", booleanAttribute], overlaySettings: "overlaySettings", id: "id", width: "width", allowCustomValues: ["allowCustomValues", "allowCustomValues", booleanAttribute], itemsMaxHeight: "itemsMaxHeight", itemHeight: "itemHeight", itemsWidth: "itemsWidth", placeholder: "placeholder", data: "data", valueKey: "valueKey", displayKey: "displayKey", groupKey: "groupKey", groupSortingDirection: "groupSortingDirection", filterFunction: "filterFunction", ariaLabelledBy: "ariaLabelledBy", disabled: ["disabled", "disabled", booleanAttribute], disableClear: ["disableClear", "disableClear", booleanAttribute], type: "type", resourceStrings: "resourceStrings", filteringOptions: "filteringOptions" }, outputs: { opening: "opening", opened: "opened", closing: "closing", closed: "closed", addition: "addition", searchInputUpdate: "searchInputUpdate", dataPreLoad: "dataPreLoad" }, host: { properties: { "attr.id": "this.id", "style.width": "this.width", "class.igx-combo": "this.cssClass" } }, queries: [{ propertyName: "itemTemplate", first: true, predicate: IgxComboItemDirective, descendants: true, read: TemplateRef }, { propertyName: "headerTemplate", first: true, predicate: IgxComboHeaderDirective, descendants: true, read: TemplateRef }, { propertyName: "footerTemplate", first: true, predicate: IgxComboFooterDirective, descendants: true, read: TemplateRef }, { propertyName: "headerItemTemplate", first: true, predicate: IgxComboHeaderItemDirective, descendants: true, read: TemplateRef }, { propertyName: "addItemTemplate", first: true, predicate: IgxComboAddItemDirective, descendants: true, read: TemplateRef }, { propertyName: "emptyTemplate", first: true, predicate: IgxComboEmptyDirective, descendants: true, read: TemplateRef }, { propertyName: "toggleIconTemplate", first: true, predicate: IgxComboToggleIconDirective, descendants: true, read: TemplateRef }, { propertyName: "clearIconTemplate", first: true, predicate: IgxComboClearIconDirective, descendants: true, read: TemplateRef }, { propertyName: "label", first: true, predicate: i0.forwardRef(() => IgxLabelDirective), descendants: true, static: true }, { propertyName: "prefixes", predicate: IgxPrefixDirective, descendants: true }, { propertyName: "suffixes", predicate: IgxSuffixDirective, descendants: true }, { propertyName: "contentHints", predicate: IgxHintDirective, descendants: true }], viewQueries: [{ propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true, read: IgxInputGroupComponent, static: true }, { propertyName: "comboInput", first: true, predicate: ["comboInput"], descendants: true, read: IgxInputDirective, static: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "virtualScrollContainer", first: true, predicate: ["virtualScroll"], descendants: true, static: true }, { propertyName: "dropdownContainer", first: true, predicate: ["dropdownItemContainer"], descendants: true, static: true }, { propertyName: "primitiveTemplate", first: true, predicate: ["primitive"], descendants: true, read: TemplateRef, static: true }, { propertyName: "complexTemplate", first: true, predicate: ["complex"], descendants: true, read: TemplateRef, static: true }, { propertyName: "internalSuffixes", predicate: IgxSuffixDirective, descendants: true }], ngImport: i0 }); }
|
|
1482
1579
|
}
|
|
1483
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
1580
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboBaseDirective, decorators: [{
|
|
1484
1581
|
type: Directive
|
|
1485
1582
|
}], ctorParameters: () => [], propDecorators: { showSearchCaseIcon: [{
|
|
1486
1583
|
type: Input,
|
|
@@ -1590,10 +1687,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
1590
1687
|
args: ['searchInput']
|
|
1591
1688
|
}], virtualScrollContainer: [{
|
|
1592
1689
|
type: ViewChild,
|
|
1593
|
-
args: [
|
|
1594
|
-
}], virtDir: [{
|
|
1595
|
-
type: ViewChild,
|
|
1596
|
-
args: [IgxForOfDirective, { read: IgxForOfDirective, static: true }]
|
|
1690
|
+
args: ['virtualScroll', { static: true }]
|
|
1597
1691
|
}], dropdownContainer: [{
|
|
1598
1692
|
type: ViewChild,
|
|
1599
1693
|
args: ['dropdownItemContainer', { static: true }]
|
|
@@ -1635,10 +1729,10 @@ class IgxComboAddItemComponent extends IgxComboItemComponent {
|
|
|
1635
1729
|
this.comboAPI.disableTransitions = false;
|
|
1636
1730
|
this.comboAPI.add_custom_item();
|
|
1637
1731
|
}
|
|
1638
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
1639
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.
|
|
1732
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboAddItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1733
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.7", type: IgxComboAddItemComponent, isStandalone: true, selector: "igx-combo-add-item", host: { properties: { "class.igx-drop-down__item": "this.isDropDownItem" } }, providers: [{ provide: IgxComboItemComponent, useExisting: IgxComboAddItemComponent }], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
1640
1734
|
}
|
|
1641
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
1735
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboAddItemComponent, decorators: [{
|
|
1642
1736
|
type: Component,
|
|
1643
1737
|
args: [{
|
|
1644
1738
|
selector: 'igx-combo-add-item',
|
|
@@ -1670,13 +1764,7 @@ class IgxComboDropDownComponent extends IgxDropDownComponent {
|
|
|
1670
1764
|
}
|
|
1671
1765
|
/** @hidden @internal */
|
|
1672
1766
|
get scrollContainer() {
|
|
1673
|
-
|
|
1674
|
-
return this.virtDir.dc.location.nativeElement;
|
|
1675
|
-
}
|
|
1676
|
-
get isScrolledToLast() {
|
|
1677
|
-
const scrollTop = this.virtDir.scrollPosition;
|
|
1678
|
-
const scrollHeight = this.virtDir.getScroll().scrollHeight;
|
|
1679
|
-
return Math.floor(scrollTop + this.virtDir.igxForContainerSize) === scrollHeight;
|
|
1767
|
+
return this.virtualization.scrollElement;
|
|
1680
1768
|
}
|
|
1681
1769
|
get lastVisibleIndex() {
|
|
1682
1770
|
return this.combo.totalItemCount ?
|
|
@@ -1764,14 +1852,18 @@ class IgxComboDropDownComponent extends IgxDropDownComponent {
|
|
|
1764
1852
|
* @hidden
|
|
1765
1853
|
*/
|
|
1766
1854
|
navigateFirst() {
|
|
1767
|
-
|
|
1855
|
+
// The first selectable entry can only be looked for in what is loaded. A page that
|
|
1856
|
+
// starts further in does not hold it, so the collection's own start is the target.
|
|
1857
|
+
this.navigateItem(this.virtualization?.startIndex === 0
|
|
1858
|
+
? this.virtualization.findIndex(e => !e?.isHeader)
|
|
1859
|
+
: 0);
|
|
1768
1860
|
this.combo.setActiveDescendant();
|
|
1769
1861
|
}
|
|
1770
1862
|
/**
|
|
1771
1863
|
* @hidden
|
|
1772
1864
|
*/
|
|
1773
1865
|
navigatePrev() {
|
|
1774
|
-
if (this._focusedItem && this._focusedItem.index === 0
|
|
1866
|
+
if (this._focusedItem && this._focusedItem.index === 0) {
|
|
1775
1867
|
this.combo.focusSearchInput(false);
|
|
1776
1868
|
this.focusedItem = null;
|
|
1777
1869
|
}
|
|
@@ -1784,7 +1876,7 @@ class IgxComboDropDownComponent extends IgxDropDownComponent {
|
|
|
1784
1876
|
* @hidden
|
|
1785
1877
|
*/
|
|
1786
1878
|
navigateNext() {
|
|
1787
|
-
const lastIndex = this.
|
|
1879
|
+
const lastIndex = (this.virtualization?.length ?? 0) - 1;
|
|
1788
1880
|
if (this._focusedItem && this._focusedItem.index === lastIndex) {
|
|
1789
1881
|
this.focusAddItemButton();
|
|
1790
1882
|
}
|
|
@@ -1809,7 +1901,7 @@ class IgxComboDropDownComponent extends IgxDropDownComponent {
|
|
|
1809
1901
|
* @hidden @internal
|
|
1810
1902
|
*/
|
|
1811
1903
|
updateScrollPosition() {
|
|
1812
|
-
this.
|
|
1904
|
+
this.virtualization.scrollPosition = this._scrollPosition;
|
|
1813
1905
|
}
|
|
1814
1906
|
/**
|
|
1815
1907
|
* @hidden @internal
|
|
@@ -1830,13 +1922,14 @@ class IgxComboDropDownComponent extends IgxDropDownComponent {
|
|
|
1830
1922
|
}
|
|
1831
1923
|
}
|
|
1832
1924
|
ngAfterViewInit() {
|
|
1833
|
-
|
|
1925
|
+
super.ngAfterViewInit();
|
|
1926
|
+
this.scrollContainer.addEventListener('scroll', this.scrollHandler);
|
|
1834
1927
|
}
|
|
1835
1928
|
/**
|
|
1836
1929
|
* @hidden @internal
|
|
1837
1930
|
*/
|
|
1838
1931
|
ngOnDestroy() {
|
|
1839
|
-
this.
|
|
1932
|
+
this.virtualization?.scrollElement.removeEventListener('scroll', this.scrollHandler);
|
|
1840
1933
|
super.ngOnDestroy();
|
|
1841
1934
|
}
|
|
1842
1935
|
scrollToHiddenItem(_newItem) { }
|
|
@@ -1866,10 +1959,10 @@ class IgxComboDropDownComponent extends IgxDropDownComponent {
|
|
|
1866
1959
|
this.focusedItem = this.items[this.items.length - 1];
|
|
1867
1960
|
}
|
|
1868
1961
|
}
|
|
1869
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
1870
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxComboDropDownComponent, isStandalone: true, selector: "igx-combo-drop-down", inputs: { singleMode: ["singleMode", "singleMode", booleanAttribute] }, providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxComboDropDownComponent }], queries: [{ propertyName: "children", predicate: IgxComboItemComponent, descendants: true }], usesInheritance: 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 }); }
|
|
1962
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboDropDownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1963
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: IgxComboDropDownComponent, isStandalone: true, selector: "igx-combo-drop-down", inputs: { singleMode: ["singleMode", "singleMode", booleanAttribute] }, providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxComboDropDownComponent }], queries: [{ propertyName: "children", predicate: IgxComboItemComponent, descendants: true }], usesInheritance: 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 }); }
|
|
1871
1964
|
}
|
|
1872
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
1965
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboDropDownComponent, decorators: [{
|
|
1873
1966
|
type: Component,
|
|
1874
1967
|
args: [{ selector: 'igx-combo-drop-down', encapsulation: ViewEncapsulation.None, providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxComboDropDownComponent }], 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"] }]
|
|
1875
1968
|
}], propDecorators: { singleMode: [{
|
|
@@ -1880,7 +1973,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
1880
1973
|
args: [IgxComboItemComponent, { descendants: true }]
|
|
1881
1974
|
}] } });
|
|
1882
1975
|
|
|
1883
|
-
/**
|
|
1976
|
+
/**
|
|
1977
|
+
* @hidden @internal
|
|
1978
|
+
* Keeps the loaded records inside the remote total without changing their indices.
|
|
1979
|
+
* Runs before grouping, so headers do not count against the number of remote records.
|
|
1980
|
+
*/
|
|
1981
|
+
class IgxComboRecordWindowPipe {
|
|
1982
|
+
transform(collection, totalItemCount, startIndex) {
|
|
1983
|
+
const remaining = Math.max(0, totalItemCount - startIndex);
|
|
1984
|
+
return totalItemCount > 0 && collection.length > remaining
|
|
1985
|
+
? collection.slice(0, remaining)
|
|
1986
|
+
: collection;
|
|
1987
|
+
}
|
|
1988
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboRecordWindowPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1989
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxComboRecordWindowPipe, isStandalone: true, name: "comboRecordWindow" }); }
|
|
1990
|
+
}
|
|
1991
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboRecordWindowPipe, decorators: [{
|
|
1992
|
+
type: Pipe,
|
|
1993
|
+
args: [{
|
|
1994
|
+
name: 'comboRecordWindow'
|
|
1995
|
+
}]
|
|
1996
|
+
}] });
|
|
1997
|
+
/**
|
|
1998
|
+
* @hidden @internal
|
|
1999
|
+
* The items the drop-down has and where they sit in the collection they came from. Pure, so
|
|
2000
|
+
* the window keeps its identity while its inputs do.
|
|
2001
|
+
*/
|
|
2002
|
+
class IgxComboDataWindowPipe {
|
|
2003
|
+
transform(collection, totalItemCount, startIndex) {
|
|
2004
|
+
if (!(totalItemCount > 0)) {
|
|
2005
|
+
return { items: collection, startIndex: 0, totalCount: collection.length };
|
|
2006
|
+
}
|
|
2007
|
+
// An empty page has no position of its own, and anchoring one would stretch the
|
|
2008
|
+
// collection to reach it.
|
|
2009
|
+
return { items: collection, startIndex: collection.length ? startIndex : 0, totalCount: totalItemCount };
|
|
2010
|
+
}
|
|
2011
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboDataWindowPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2012
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxComboDataWindowPipe, isStandalone: true, name: "comboDataWindow" }); }
|
|
2013
|
+
}
|
|
2014
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboDataWindowPipe, decorators: [{
|
|
2015
|
+
type: Pipe,
|
|
2016
|
+
args: [{
|
|
2017
|
+
name: 'comboDataWindow',
|
|
2018
|
+
standalone: true
|
|
2019
|
+
}]
|
|
2020
|
+
}] });
|
|
1884
2021
|
class IgxComboFilteringPipe {
|
|
1885
2022
|
transform(collection, searchValue, displayKey, filteringOptions, filterFunction = defaultFilterFunction, disableFiltering = false) {
|
|
1886
2023
|
if (!collection) {
|
|
@@ -1892,10 +2029,10 @@ class IgxComboFilteringPipe {
|
|
|
1892
2029
|
filteringOptions.filteringKey = filteringOptions.filteringKey ?? displayKey;
|
|
1893
2030
|
return filterFunction(collection, searchValue, filteringOptions);
|
|
1894
2031
|
}
|
|
1895
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
1896
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.
|
|
2032
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboFilteringPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2033
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxComboFilteringPipe, isStandalone: true, name: "comboFiltering" }); }
|
|
1897
2034
|
}
|
|
1898
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
2035
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboFilteringPipe, decorators: [{
|
|
1899
2036
|
type: Pipe,
|
|
1900
2037
|
args: [{
|
|
1901
2038
|
name: 'comboFiltering',
|
|
@@ -1930,10 +2067,10 @@ class IgxComboGroupingPipe {
|
|
|
1930
2067
|
});
|
|
1931
2068
|
return result;
|
|
1932
2069
|
}
|
|
1933
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
1934
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.
|
|
2070
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboGroupingPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2071
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxComboGroupingPipe, isStandalone: true, name: "comboGrouping" }); }
|
|
1935
2072
|
}
|
|
1936
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
2073
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboGroupingPipe, decorators: [{
|
|
1937
2074
|
type: Pipe,
|
|
1938
2075
|
args: [{
|
|
1939
2076
|
name: 'comboGrouping',
|
|
@@ -2097,9 +2234,13 @@ class IgxComboComponent extends IgxComboBaseDirective {
|
|
|
2097
2234
|
}
|
|
2098
2235
|
/** @hidden @internal */
|
|
2099
2236
|
ngDoCheck() {
|
|
2100
|
-
if (this.data?.length
|
|
2101
|
-
|
|
2102
|
-
|
|
2237
|
+
if (!this.data?.length) {
|
|
2238
|
+
return;
|
|
2239
|
+
}
|
|
2240
|
+
const selection = this.selection;
|
|
2241
|
+
if (selection.length) {
|
|
2242
|
+
this._displayValue = this._displayText || this.createDisplayText(selection, []);
|
|
2243
|
+
this._value = this.valueKey ? selection.map(item => item[this.valueKey]) : selection;
|
|
2103
2244
|
}
|
|
2104
2245
|
}
|
|
2105
2246
|
/**
|
|
@@ -2314,14 +2455,14 @@ class IgxComboComponent extends IgxComboBaseDirective {
|
|
|
2314
2455
|
selection.join(', ');
|
|
2315
2456
|
return value;
|
|
2316
2457
|
}
|
|
2317
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
2318
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
2458
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2459
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: IgxComboComponent, isStandalone: true, selector: "igx-combo", inputs: { autoFocusSearch: ["autoFocusSearch", "autoFocusSearch", booleanAttribute], searchPlaceholder: "searchPlaceholder" }, outputs: { selectionChanging: "selectionChanging", selectionChanged: "selectionChanged" }, host: { listeners: { "keydown.ArrowDown": "onArrowDown($event)", "keydown.Alt.ArrowDown": "onArrowDown($event)", "keydown.Escape": "onEscape($event)" } }, providers: [
|
|
2319
2460
|
IgxComboAPIService,
|
|
2320
2461
|
{ provide: IGX_COMBO_COMPONENT, useExisting: IgxComboComponent },
|
|
2321
2462
|
{ provide: NG_VALUE_ACCESSOR, useExisting: IgxComboComponent, multi: true }
|
|
2322
|
-
], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [type]=\"type === 'search' ? 'box' : type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [igxReadOnlyInput]=\"false\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n [attr.aria-label]=\"getAriaLabel()\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n @if (displayValue && !disableClear) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button igx-input-group__clear-button\"\n (click)=\"handleClearItems($event)\">\n @if (clearIconTemplate) {\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n }\n @if (!clearIconTemplate) {\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n }\n </igx-suffix>\n }\n <igx-suffix class=\"igx-input-group__toggle-button igx-combo__toggle-button\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n\n <!-- The igx-combo class is needed here in order to scope the css variables -->\n <div class=\"igx-combo\">\n @if (displaySearchInput) {\n <div class=\"igx-combo__search\">\n <igx-input-group type=\"line\">\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n @if (showSearchCaseIcon) {\n <igx-suffix\n class=\"igx-input-group__case-icon igx-combo__case-icon\"\n [ngClass]=\"{ 'igx-combo__case-icon--active': filteringOptions.caseSensitive }\"\n (click)=\"toggleCaseSensitive()\"\n >\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n </div>\n }\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data!\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; initialChunkSize: 10; containerSize: itemsMaxHeight || containerSize; itemSize: itemHeight || itemSize, scrollOrientation: 'vertical';\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n @if (item?.isHeader) {\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n }\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n @if (!item?.isHeader) {\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n }\n </igx-combo-item>\n </div>\n\n @if (filteredData?.length === 0 || isAddButtonVisible()) {\n <div class=\"igx-combo__add\">\n @if (filteredData?.length === 0) {\n <div class=\"igx-combo__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n }\n @if (isAddButtonVisible()) {\n <igx-combo-add-item [itemHeight]=\"itemHeight\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf!.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n </div>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", styles: ["@layer ig.base{.igx-drop-down{--item-count: 6;--_search-input-inline-padding: 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(.5rem, -1 * .5rem) * 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))));--_search-input-block-padding: 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(.5rem, -1 * .5rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-drop-down .igx-combo{display:contents}.igx-combo{position:relative;display:block}.igx-combo__checkbox{margin-inline-end:.5rem}.igx-combo__search{--ig-input-group-border-border-radius: 0;padding-inline:var(--_search-input-inline-padding);padding-block:var(--_search-input-block-padding);z-index:26;border-bottom:.0625rem dashed var(--search-separator-border-color)}.igx-combo__search igx-input-group{--ig-size: 1}.igx-combo__case-icon{cursor:pointer;color:var(--ig-gray-600);background:#0000}.igx-combo__case-icon .igx-icon--inactive{--ig-icon-disabled-color: var(--ig-gray-600);opacity:1}.igx-combo__case-icon--active{color:var(--ig-primary-500)}.igx-combo__content .igx-vhelper--vertical{position:relative}.igx-combo__content{position:relative;overflow:hidden;max-height:calc(var(--size)*var(--item-count))}.igx-combo__content:focus{outline:rgba(0,0,0,0)}.igx-combo__add{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:1rem 1.5rem;gap:1rem;background:var(--empty-list-background)}.igx-combo__add-item{height:auto;background:var(--empty-list-background);justify-content:center;outline:none}.igx-combo__empty{display:flex;justify-content:center;align-items:center;width:100%;color:var(--empty-list-placeholder-color);padding:0 1.5rem;font-size:.8125rem}}@layer ig.material{@container style(--ig-theme: material){.igx-combo__checkbox{margin-inline-end:1rem}.igx-combo__checkbox div{padding:0}.igx-combo__search igx-input-group{--size: 2.375rem}.igx-combo__search .igx-input-group__bundle{padding-block-start:0;height:auto}.igx-combo__search .igx-input-group__bundle-main{padding-inline-start:0!important}.igx-combo__search .igx-input-group__bundle-start,.igx-combo__search .igx-input-group__bundle-end{min-width:0}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-combo__search{--ig-input-group-border-border-radius: 0}.igx-combo__search igx-input-group{--size: 1.75rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-start,.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-end{border-block-end-color:var(--focused-border-color);border-block-end-width:.125rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-main{border-block-end-width:.125rem}.igx-combo__search igx-input-group:not(.igx-input-group--prefixed) .igx-input-group__bundle-main,.igx-combo__search igx-input-group:not(.igx-input-group--suffixed) .igx-input-group__bundle-main{border-inline-width:0;border-block-start-width:0}.igx-combo__search igx-input-group.igx-input-group--suffixed .igx-input-group__bundle-end{border-inline-end-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline:0}.igx-combo__search .igx-input-group--focused:not(.igx-input-group--file) .igx-input-group__bundle-main{box-shadow:none}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-combo{--_search-input-inline-padding: 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(.25rem, -1 * .25rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: 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(.25rem, -1 * .25rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search .igx-input-group__bundle{border-inline-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline-start:0}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle:after{border-inline-width:0;border-block-start-width:0}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-combo{--_search-input-inline-padding: 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))));--_search-input-block-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search igx-input-group{--ig-size: 2}.igx-combo__content{max-height:calc(var(--size)*var(--item-count) + 1rem)}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxComboDropDownComponent, selector: "igx-combo-drop-down", inputs: ["singleMode"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForInitialChunkSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "chunkSizeChange", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxComboItemComponent, selector: "igx-combo-item", inputs: ["itemHeight", "ariaLabel", "singleMode"] }, { kind: "component", type: IgxComboAddItemComponent, selector: "igx-combo-add-item" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "directive", type: IgxReadOnlyInputDirective, selector: "[igxReadOnlyInput]", inputs: ["igxReadOnlyInput"], exportAs: ["igxReadOnlyInput"] }, { kind: "pipe", type: IgxComboFilteringPipe, name: "comboFiltering" }, { kind: "pipe", type: IgxComboGroupingPipe, name: "comboGrouping" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2463
|
+
], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [type]=\"type === 'search' ? 'box' : type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [igxReadOnlyInput]=\"false\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n [attr.aria-label]=\"getAriaLabel()\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n @if (displayValue && !disableClear) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button igx-input-group__clear-button\"\n (click)=\"handleClearItems($event)\">\n @if (clearIconTemplate) {\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n }\n @if (!clearIconTemplate) {\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n }\n </igx-suffix>\n }\n <igx-suffix class=\"igx-input-group__toggle-button igx-combo__toggle-button\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n</igx-input-group>\n<!-- Outside the drop-down: its content is detached while closed, and a @let there fails to serialize (NG0502). -->\n@let itemWindow = data!\n | comboRecordWindow:totalItemCount:virtualStartIndex\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator\n | comboDataWindow:totalItemCount:virtualStartIndex;\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n\n <!-- The igx-combo class is needed here in order to scope the css variables -->\n <div class=\"igx-combo\">\n @if (displaySearchInput) {\n <div class=\"igx-combo__search\">\n <igx-input-group type=\"line\">\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n @if (showSearchCaseIcon) {\n <igx-suffix\n class=\"igx-input-group__case-icon igx-combo__case-icon\"\n [ngClass]=\"{ 'igx-combo__case-icon--active': filteringOptions.caseSensitive }\"\n (click)=\"toggleCaseSensitive()\"\n >\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n </div>\n }\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-virtual-scroll #virtualScroll role=\"presentation\"\n [dataWindow]=\"itemWindow\"\n [estimatedItemSize]=\"estimatedItemSize\"\n [initialViewportSize]=\"viewportSize\"\n (stateChange)=\"handleVirtualStateChange($event)\">\n <ng-template igxVirtualItem let-item let-rowIndex=\"index\">\n <igx-combo-item [itemHeight]=\"itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n @if (item?.isHeader) {\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n }\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n @if (!item?.isHeader) {\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n }\n </igx-combo-item>\n </ng-template>\n </igx-virtual-scroll>\n </div>\n\n @if (filteredData?.length === 0 || isAddButtonVisible()) {\n <div class=\"igx-combo__add\">\n @if (filteredData?.length === 0) {\n <div class=\"igx-combo__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n }\n @if (isAddButtonVisible()) {\n <igx-combo-add-item [itemHeight]=\"itemHeight\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"itemWindow.totalCount\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n </div>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", styles: ["@layer ig.base{.igx-drop-down{--item-count: 6;--_search-input-inline-padding: 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(.5rem, -1 * .5rem) * 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))));--_search-input-block-padding: 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(.5rem, -1 * .5rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-drop-down .igx-combo{display:contents}.igx-combo{position:relative;display:block}.igx-combo__checkbox{margin-inline-end:.5rem}.igx-combo__search{--ig-input-group-border-border-radius: 0;padding-inline:var(--_search-input-inline-padding);padding-block:var(--_search-input-block-padding);z-index:26;border-bottom:.0625rem dashed var(--search-separator-border-color)}.igx-combo__search igx-input-group{--ig-size: 1}.igx-combo__case-icon{cursor:pointer;color:var(--ig-gray-600);background:#0000}.igx-combo__case-icon .igx-icon--inactive{--ig-icon-disabled-color: var(--ig-gray-600);opacity:1}.igx-combo__case-icon--active{color:var(--ig-primary-500)}.igx-combo__content{position:relative;overflow:hidden;max-height:calc(var(--size)*var(--item-count))}.igx-combo__content igx-virtual-scroll{max-height:inherit}.igx-combo__content:focus{outline:rgba(0,0,0,0)}.igx-combo__add{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:1rem 1.5rem;gap:1rem;background:var(--empty-list-background)}.igx-combo__add-item{height:auto;background:var(--empty-list-background);justify-content:center;outline:none}.igx-combo__empty{display:flex;justify-content:center;align-items:center;width:100%;color:var(--empty-list-placeholder-color);padding:0 1.5rem;font-size:.8125rem}}@layer ig.material{@container style(--ig-theme: material){.igx-combo__checkbox{margin-inline-end:1rem}.igx-combo__checkbox div{padding:0}.igx-combo__search igx-input-group{--size: 2.375rem}.igx-combo__search .igx-input-group__bundle{padding-block-start:0;height:auto}.igx-combo__search .igx-input-group__bundle-main{padding-inline-start:0!important}.igx-combo__search .igx-input-group__bundle-start,.igx-combo__search .igx-input-group__bundle-end{min-width:0}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-combo__search{--ig-input-group-border-border-radius: 0}.igx-combo__search igx-input-group{--size: 1.75rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-start,.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-end{border-block-end-color:var(--focused-border-color);border-block-end-width:.125rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-main{border-block-end-width:.125rem}.igx-combo__search igx-input-group:not(.igx-input-group--prefixed) .igx-input-group__bundle-main,.igx-combo__search igx-input-group:not(.igx-input-group--suffixed) .igx-input-group__bundle-main{border-inline-width:0;border-block-start-width:0}.igx-combo__search igx-input-group.igx-input-group--suffixed .igx-input-group__bundle-end{border-inline-end-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline:0}.igx-combo__search .igx-input-group--focused:not(.igx-input-group--file) .igx-input-group__bundle-main{box-shadow:none}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-combo{--_search-input-inline-padding: 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(.25rem, -1 * .25rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: 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(.25rem, -1 * .25rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search .igx-input-group__bundle{border-inline-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline-start:0}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle:after{border-inline-width:0;border-block-start-width:0}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-combo{--_search-input-inline-padding: 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))));--_search-input-block-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search igx-input-group{--ig-size: 2}.igx-combo__content{max-height:calc(var(--size)*var(--item-count) + 1rem)}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxComboDropDownComponent, selector: "igx-combo-drop-down", inputs: ["singleMode"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "component", type: IgxVirtualScrollComponent, selector: "igx-virtual-scroll", inputs: ["data", "orientation", "overScan", "estimatedItemSize", "dataWindow", "initialViewportSize", "itemTemplate"], outputs: ["stateChange", "dataRequest"] }, { kind: "directive", type: IgxVirtualItemDirective, selector: "ng-template[igxVirtualItem]" }, { kind: "component", type: IgxComboItemComponent, selector: "igx-combo-item", inputs: ["itemHeight", "ariaLabel", "singleMode"] }, { kind: "component", type: IgxComboAddItemComponent, selector: "igx-combo-add-item" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "directive", type: IgxReadOnlyInputDirective, selector: "[igxReadOnlyInput]", inputs: ["igxReadOnlyInput"], exportAs: ["igxReadOnlyInput"] }, { kind: "pipe", type: IgxComboFilteringPipe, name: "comboFiltering" }, { kind: "pipe", type: IgxComboGroupingPipe, name: "comboGrouping" }, { kind: "pipe", type: IgxComboDataWindowPipe, name: "comboDataWindow" }, { kind: "pipe", type: IgxComboRecordWindowPipe, name: "comboRecordWindow" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2323
2464
|
}
|
|
2324
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
2465
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboComponent, decorators: [{
|
|
2325
2466
|
type: Component,
|
|
2326
2467
|
args: [{ selector: 'igx-combo', encapsulation: ViewEncapsulation.None, providers: [
|
|
2327
2468
|
IgxComboAPIService,
|
|
@@ -2337,15 +2478,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
2337
2478
|
IgxIconComponent,
|
|
2338
2479
|
IgxComboDropDownComponent,
|
|
2339
2480
|
IgxDropDownItemNavigationDirective,
|
|
2340
|
-
|
|
2481
|
+
IgxVirtualScrollComponent,
|
|
2482
|
+
IgxVirtualItemDirective,
|
|
2341
2483
|
IgxComboItemComponent,
|
|
2342
2484
|
IgxComboAddItemComponent,
|
|
2343
2485
|
IgxButtonDirective,
|
|
2344
2486
|
IgxRippleDirective,
|
|
2345
2487
|
IgxReadOnlyInputDirective,
|
|
2346
2488
|
IgxComboFilteringPipe,
|
|
2347
|
-
IgxComboGroupingPipe
|
|
2348
|
-
], template: "<igx-input-group #inputGroup [type]=\"type === 'search' ? 'box' : type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [igxReadOnlyInput]=\"false\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n [attr.aria-label]=\"getAriaLabel()\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n @if (displayValue && !disableClear) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button igx-input-group__clear-button\"\n (click)=\"handleClearItems($event)\">\n @if (clearIconTemplate) {\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n }\n @if (!clearIconTemplate) {\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n }\n </igx-suffix>\n }\n <igx-suffix class=\"igx-input-group__toggle-button igx-combo__toggle-button\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n\n <!-- The igx-combo class is needed here in order to scope the css variables -->\n <div class=\"igx-combo\">\n @if (displaySearchInput) {\n <div class=\"igx-combo__search\">\n <igx-input-group type=\"line\">\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n @if (showSearchCaseIcon) {\n <igx-suffix\n class=\"igx-input-group__case-icon igx-combo__case-icon\"\n [ngClass]=\"{ 'igx-combo__case-icon--active': filteringOptions.caseSensitive }\"\n (click)=\"toggleCaseSensitive()\"\n >\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n </div>\n }\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data!\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; initialChunkSize: 10; containerSize: itemsMaxHeight || containerSize; itemSize: itemHeight || itemSize, scrollOrientation: 'vertical';\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n @if (item?.isHeader) {\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n }\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n @if (!item?.isHeader) {\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n }\n </igx-combo-item>\n </div>\n\n @if (filteredData?.length === 0 || isAddButtonVisible()) {\n <div class=\"igx-combo__add\">\n @if (filteredData?.length === 0) {\n <div class=\"igx-combo__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n }\n @if (isAddButtonVisible()) {\n <igx-combo-add-item [itemHeight]=\"itemHeight\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf!.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n </div>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", styles: ["@layer ig.base{.igx-drop-down{--item-count: 6;--_search-input-inline-padding: 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(.5rem, -1 * .5rem) * 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))));--_search-input-block-padding: 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(.5rem, -1 * .5rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-drop-down .igx-combo{display:contents}.igx-combo{position:relative;display:block}.igx-combo__checkbox{margin-inline-end:.5rem}.igx-combo__search{--ig-input-group-border-border-radius: 0;padding-inline:var(--_search-input-inline-padding);padding-block:var(--_search-input-block-padding);z-index:26;border-bottom:.0625rem dashed var(--search-separator-border-color)}.igx-combo__search igx-input-group{--ig-size: 1}.igx-combo__case-icon{cursor:pointer;color:var(--ig-gray-600);background:#0000}.igx-combo__case-icon .igx-icon--inactive{--ig-icon-disabled-color: var(--ig-gray-600);opacity:1}.igx-combo__case-icon--active{color:var(--ig-primary-500)}.igx-combo__content .igx-vhelper--vertical{position:relative}.igx-combo__content{position:relative;overflow:hidden;max-height:calc(var(--size)*var(--item-count))}.igx-combo__content:focus{outline:rgba(0,0,0,0)}.igx-combo__add{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:1rem 1.5rem;gap:1rem;background:var(--empty-list-background)}.igx-combo__add-item{height:auto;background:var(--empty-list-background);justify-content:center;outline:none}.igx-combo__empty{display:flex;justify-content:center;align-items:center;width:100%;color:var(--empty-list-placeholder-color);padding:0 1.5rem;font-size:.8125rem}}@layer ig.material{@container style(--ig-theme: material){.igx-combo__checkbox{margin-inline-end:1rem}.igx-combo__checkbox div{padding:0}.igx-combo__search igx-input-group{--size: 2.375rem}.igx-combo__search .igx-input-group__bundle{padding-block-start:0;height:auto}.igx-combo__search .igx-input-group__bundle-main{padding-inline-start:0!important}.igx-combo__search .igx-input-group__bundle-start,.igx-combo__search .igx-input-group__bundle-end{min-width:0}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-combo__search{--ig-input-group-border-border-radius: 0}.igx-combo__search igx-input-group{--size: 1.75rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-start,.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-end{border-block-end-color:var(--focused-border-color);border-block-end-width:.125rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-main{border-block-end-width:.125rem}.igx-combo__search igx-input-group:not(.igx-input-group--prefixed) .igx-input-group__bundle-main,.igx-combo__search igx-input-group:not(.igx-input-group--suffixed) .igx-input-group__bundle-main{border-inline-width:0;border-block-start-width:0}.igx-combo__search igx-input-group.igx-input-group--suffixed .igx-input-group__bundle-end{border-inline-end-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline:0}.igx-combo__search .igx-input-group--focused:not(.igx-input-group--file) .igx-input-group__bundle-main{box-shadow:none}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-combo{--_search-input-inline-padding: 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(.25rem, -1 * .25rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: 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(.25rem, -1 * .25rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search .igx-input-group__bundle{border-inline-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline-start:0}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle:after{border-inline-width:0;border-block-start-width:0}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-combo{--_search-input-inline-padding: 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))));--_search-input-block-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search igx-input-group{--ig-size: 2}.igx-combo__content{max-height:calc(var(--size)*var(--item-count) + 1rem)}}}\n"] }]
|
|
2489
|
+
IgxComboGroupingPipe,
|
|
2490
|
+
IgxComboDataWindowPipe,
|
|
2491
|
+
IgxComboRecordWindowPipe
|
|
2492
|
+
], template: "<igx-input-group #inputGroup [type]=\"type === 'search' ? 'box' : type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [igxReadOnlyInput]=\"false\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n [attr.aria-label]=\"getAriaLabel()\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n @if (displayValue && !disableClear) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button igx-input-group__clear-button\"\n (click)=\"handleClearItems($event)\">\n @if (clearIconTemplate) {\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n }\n @if (!clearIconTemplate) {\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n }\n </igx-suffix>\n }\n <igx-suffix class=\"igx-input-group__toggle-button igx-combo__toggle-button\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n</igx-input-group>\n<!-- Outside the drop-down: its content is detached while closed, and a @let there fails to serialize (NG0502). -->\n@let itemWindow = data!\n | comboRecordWindow:totalItemCount:virtualStartIndex\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator\n | comboDataWindow:totalItemCount:virtualStartIndex;\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n\n <!-- The igx-combo class is needed here in order to scope the css variables -->\n <div class=\"igx-combo\">\n @if (displaySearchInput) {\n <div class=\"igx-combo__search\">\n <igx-input-group type=\"line\">\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n @if (showSearchCaseIcon) {\n <igx-suffix\n class=\"igx-input-group__case-icon igx-combo__case-icon\"\n [ngClass]=\"{ 'igx-combo__case-icon--active': filteringOptions.caseSensitive }\"\n (click)=\"toggleCaseSensitive()\"\n >\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n </div>\n }\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-virtual-scroll #virtualScroll role=\"presentation\"\n [dataWindow]=\"itemWindow\"\n [estimatedItemSize]=\"estimatedItemSize\"\n [initialViewportSize]=\"viewportSize\"\n (stateChange)=\"handleVirtualStateChange($event)\">\n <ng-template igxVirtualItem let-item let-rowIndex=\"index\">\n <igx-combo-item [itemHeight]=\"itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n @if (item?.isHeader) {\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n }\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n @if (!item?.isHeader) {\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n }\n </igx-combo-item>\n </ng-template>\n </igx-virtual-scroll>\n </div>\n\n @if (filteredData?.length === 0 || isAddButtonVisible()) {\n <div class=\"igx-combo__add\">\n @if (filteredData?.length === 0) {\n <div class=\"igx-combo__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n }\n @if (isAddButtonVisible()) {\n <igx-combo-add-item [itemHeight]=\"itemHeight\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"itemWindow.totalCount\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n </div>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", styles: ["@layer ig.base{.igx-drop-down{--item-count: 6;--_search-input-inline-padding: 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(.5rem, -1 * .5rem) * 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))));--_search-input-block-padding: 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(.5rem, -1 * .5rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-drop-down .igx-combo{display:contents}.igx-combo{position:relative;display:block}.igx-combo__checkbox{margin-inline-end:.5rem}.igx-combo__search{--ig-input-group-border-border-radius: 0;padding-inline:var(--_search-input-inline-padding);padding-block:var(--_search-input-block-padding);z-index:26;border-bottom:.0625rem dashed var(--search-separator-border-color)}.igx-combo__search igx-input-group{--ig-size: 1}.igx-combo__case-icon{cursor:pointer;color:var(--ig-gray-600);background:#0000}.igx-combo__case-icon .igx-icon--inactive{--ig-icon-disabled-color: var(--ig-gray-600);opacity:1}.igx-combo__case-icon--active{color:var(--ig-primary-500)}.igx-combo__content{position:relative;overflow:hidden;max-height:calc(var(--size)*var(--item-count))}.igx-combo__content igx-virtual-scroll{max-height:inherit}.igx-combo__content:focus{outline:rgba(0,0,0,0)}.igx-combo__add{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:1rem 1.5rem;gap:1rem;background:var(--empty-list-background)}.igx-combo__add-item{height:auto;background:var(--empty-list-background);justify-content:center;outline:none}.igx-combo__empty{display:flex;justify-content:center;align-items:center;width:100%;color:var(--empty-list-placeholder-color);padding:0 1.5rem;font-size:.8125rem}}@layer ig.material{@container style(--ig-theme: material){.igx-combo__checkbox{margin-inline-end:1rem}.igx-combo__checkbox div{padding:0}.igx-combo__search igx-input-group{--size: 2.375rem}.igx-combo__search .igx-input-group__bundle{padding-block-start:0;height:auto}.igx-combo__search .igx-input-group__bundle-main{padding-inline-start:0!important}.igx-combo__search .igx-input-group__bundle-start,.igx-combo__search .igx-input-group__bundle-end{min-width:0}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-combo__search{--ig-input-group-border-border-radius: 0}.igx-combo__search igx-input-group{--size: 1.75rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-start,.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-end{border-block-end-color:var(--focused-border-color);border-block-end-width:.125rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-main{border-block-end-width:.125rem}.igx-combo__search igx-input-group:not(.igx-input-group--prefixed) .igx-input-group__bundle-main,.igx-combo__search igx-input-group:not(.igx-input-group--suffixed) .igx-input-group__bundle-main{border-inline-width:0;border-block-start-width:0}.igx-combo__search igx-input-group.igx-input-group--suffixed .igx-input-group__bundle-end{border-inline-end-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline:0}.igx-combo__search .igx-input-group--focused:not(.igx-input-group--file) .igx-input-group__bundle-main{box-shadow:none}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-combo{--_search-input-inline-padding: 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(.25rem, -1 * .25rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: 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(.25rem, -1 * .25rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search .igx-input-group__bundle{border-inline-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline-start:0}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle:after{border-inline-width:0;border-block-start-width:0}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-combo{--_search-input-inline-padding: 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))));--_search-input-block-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search igx-input-group{--ig-size: 2}.igx-combo__content{max-height:calc(var(--size)*var(--item-count) + 1rem)}}}\n"] }]
|
|
2349
2493
|
}], ctorParameters: () => [], propDecorators: { autoFocusSearch: [{
|
|
2350
2494
|
type: Input,
|
|
2351
2495
|
args: [{ transform: booleanAttribute }]
|
|
@@ -2391,11 +2535,11 @@ const IGX_COMBO_DIRECTIVES = [
|
|
|
2391
2535
|
* IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
|
|
2392
2536
|
*/
|
|
2393
2537
|
class IgxComboModule {
|
|
2394
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
2395
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.
|
|
2396
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.
|
|
2538
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2539
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxComboModule, imports: [IgxComboComponent, IgxComboAddItemDirective, IgxComboClearIconDirective, IgxComboEmptyDirective, IgxComboFooterDirective, IgxComboHeaderDirective, IgxComboHeaderItemDirective, IgxComboItemDirective, IgxComboToggleIconDirective, i3.IgxLabelDirective, i3.IgxPrefixDirective, i3.IgxSuffixDirective, i3.IgxHintDirective], exports: [IgxComboComponent, IgxComboAddItemDirective, IgxComboClearIconDirective, IgxComboEmptyDirective, IgxComboFooterDirective, IgxComboHeaderDirective, IgxComboHeaderItemDirective, IgxComboItemDirective, IgxComboToggleIconDirective, i3.IgxLabelDirective, i3.IgxPrefixDirective, i3.IgxSuffixDirective, i3.IgxHintDirective] }); }
|
|
2540
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboModule, imports: [IgxComboComponent] }); }
|
|
2397
2541
|
}
|
|
2398
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
2542
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxComboModule, decorators: [{
|
|
2399
2543
|
type: NgModule,
|
|
2400
2544
|
args: [{
|
|
2401
2545
|
imports: [
|
|
@@ -2411,5 +2555,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
|
|
|
2411
2555
|
* Generated bundle index. Do not edit.
|
|
2412
2556
|
*/
|
|
2413
2557
|
|
|
2414
|
-
export { IGX_COMBO_COMPONENT, IGX_COMBO_DIRECTIVES, IgxComboAPIService, IgxComboAddItemComponent, IgxComboAddItemDirective, IgxComboBaseDirective, IgxComboClearIconDirective, IgxComboComponent, IgxComboDropDownComponent, IgxComboEmptyDirective, IgxComboFilteringPipe, IgxComboFooterDirective, IgxComboGroupingPipe, IgxComboHeaderDirective, IgxComboHeaderItemDirective, IgxComboItemComponent, IgxComboItemDirective, IgxComboModule, IgxComboToggleIconDirective, comboIgnoreDiacriticsFilter };
|
|
2558
|
+
export { IGX_COMBO_COMPONENT, IGX_COMBO_DIRECTIVES, IgxComboAPIService, IgxComboAddItemComponent, IgxComboAddItemDirective, IgxComboBaseDirective, IgxComboClearIconDirective, IgxComboComponent, IgxComboDataWindowPipe, IgxComboDropDownComponent, IgxComboEmptyDirective, IgxComboFilteringPipe, IgxComboFooterDirective, IgxComboGroupingPipe, IgxComboHeaderDirective, IgxComboHeaderItemDirective, IgxComboItemComponent, IgxComboItemDirective, IgxComboModule, IgxComboRecordWindowPipe, IgxComboToggleIconDirective, comboIgnoreDiacriticsFilter };
|
|
2415
2559
|
//# sourceMappingURL=igniteui-angular-combo.mjs.map
|