igniteui-angular 12.2.4 → 12.3.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -11
- package/bundles/igniteui-angular.umd.js +1773 -1462
- package/bundles/igniteui-angular.umd.js.map +1 -1
- package/esm2015/igniteui-angular.js +97 -97
- package/esm2015/lib/combo/combo-dropdown.component.js +9 -4
- package/esm2015/lib/combo/combo-item.component.js +4 -3
- package/esm2015/lib/combo/combo.api.js +3 -3
- package/esm2015/lib/combo/combo.common.js +999 -2
- package/esm2015/lib/combo/combo.component.js +92 -1124
- package/esm2015/lib/combo/combo.pipes.js +3 -3
- package/esm2015/lib/data-operations/data-util.js +2 -3
- package/esm2015/lib/data-operations/grouping-strategy.js +1 -1
- package/esm2015/lib/grids/grid/grid.component.js +19 -2
- package/esm2015/lib/grids/grid/grid.pipes.js +3 -3
- package/esm2015/lib/services/exporter-common/base-export-service.js +2 -2
- package/esm2015/lib/simple-combo/public_api.js +2 -0
- package/esm2015/lib/simple-combo/simple-combo.component.js +298 -0
- package/esm2015/lib/toast/toast.component.js +46 -21
- package/esm2015/public_api.js +2 -1
- package/fesm2015/igniteui-angular.js +1305 -1025
- package/fesm2015/igniteui-angular.js.map +1 -1
- package/igniteui-angular.d.ts +96 -96
- package/igniteui-angular.metadata.json +1 -1
- package/lib/combo/combo-dropdown.component.d.ts +2 -0
- package/lib/combo/combo-item.component.d.ts +2 -0
- package/lib/combo/combo.common.d.ts +717 -4
- package/lib/combo/combo.component.d.ts +39 -782
- package/lib/combo/combo.pipes.d.ts +1 -1
- package/lib/data-operations/data-util.d.ts +2 -1
- package/lib/data-operations/grouping-strategy.d.ts +5 -2
- package/lib/grids/grid/grid.component.d.ts +17 -0
- package/lib/grids/grid/grid.pipes.d.ts +2 -1
- package/lib/simple-combo/public_api.d.ts +1 -0
- package/lib/simple-combo/simple-combo.component.d.ts +109 -0
- package/lib/toast/toast.component.d.ts +8 -4
- package/migrations/migration-collection.json +5 -0
- package/migrations/update-12_3_0/changes/members.json +26 -0
- package/migrations/update-12_3_0/index.d.ts +3 -0
- package/migrations/update-12_3_0/index.js +9 -0
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
|
@@ -2064,8 +2064,7 @@ class DataUtil {
|
|
|
2064
2064
|
};
|
|
2065
2065
|
return rec;
|
|
2066
2066
|
}
|
|
2067
|
-
static group(data, state, grid = null, groupsRecords = [], fullResult = { data: [], metadata: [] }) {
|
|
2068
|
-
const grouping = new IgxGrouping();
|
|
2067
|
+
static group(data, state, grouping = new IgxGrouping(), grid = null, groupsRecords = [], fullResult = { data: [], metadata: [] }) {
|
|
2069
2068
|
groupsRecords.splice(0, groupsRecords.length);
|
|
2070
2069
|
return grouping.groupBy(data, state, grid, groupsRecords, fullResult);
|
|
2071
2070
|
}
|
|
@@ -11752,7 +11751,7 @@ class IgxBaseExporter {
|
|
|
11752
11751
|
}
|
|
11753
11752
|
if (hasGrouping && !this.options.ignoreGrouping) {
|
|
11754
11753
|
const groupsRecords = [];
|
|
11755
|
-
DataUtil.group(cloneArray(gridData), groupedGridGroupingState, grid, groupsRecords);
|
|
11754
|
+
DataUtil.group(cloneArray(gridData), groupedGridGroupingState, grid.groupStrategy, grid, groupsRecords);
|
|
11756
11755
|
gridData = groupsRecords;
|
|
11757
11756
|
}
|
|
11758
11757
|
if (hasGrouping && !this.options.ignoreGrouping) {
|
|
@@ -34953,10 +34952,10 @@ class IgxComboAPIService {
|
|
|
34953
34952
|
return;
|
|
34954
34953
|
}
|
|
34955
34954
|
if (!selected) {
|
|
34956
|
-
this.combo.
|
|
34955
|
+
this.combo.select([itemID], false, event);
|
|
34957
34956
|
}
|
|
34958
34957
|
else {
|
|
34959
|
-
this.combo.
|
|
34958
|
+
this.combo.deselect([itemID], event);
|
|
34960
34959
|
}
|
|
34961
34960
|
}
|
|
34962
34961
|
is_item_selected(itemID) {
|
|
@@ -35054,7 +35053,7 @@ class IgxComboItemComponent extends IgxDropDownItemComponent {
|
|
|
35054
35053
|
IgxComboItemComponent.decorators = [
|
|
35055
35054
|
{ type: Component, args: [{
|
|
35056
35055
|
selector: 'igx-combo-item',
|
|
35057
|
-
template: "<ng-container *ngIf=\"!isHeader\">\n <igx-checkbox [checked]=\"selected\" [disableRipple]=\"true\" [disableTransitions]=\"disableTransitions\" [tabindex]=\"-1\" (click)=\"disableCheck($event)\" class=\"igx-combo__checkbox\"></igx-checkbox>\n</ng-container>\n<span class=\"igx-drop-down__inner\"><ng-content></ng-content></span>\n"
|
|
35056
|
+
template: "<ng-container *ngIf=\"!isHeader && !singleMode\">\n <igx-checkbox [checked]=\"selected\" [disableRipple]=\"true\" [disableTransitions]=\"disableTransitions\" [tabindex]=\"-1\" (click)=\"disableCheck($event)\" class=\"igx-combo__checkbox\"></igx-checkbox>\n</ng-container>\n<span class=\"igx-drop-down__inner\"><ng-content></ng-content></span>\n"
|
|
35058
35057
|
},] }
|
|
35059
35058
|
];
|
|
35060
35059
|
IgxComboItemComponent.ctorParameters = () => [
|
|
@@ -35064,311 +35063,25 @@ IgxComboItemComponent.ctorParameters = () => [
|
|
|
35064
35063
|
{ type: IgxSelectionAPIService, decorators: [{ type: Inject, args: [IgxSelectionAPIService,] }] }
|
|
35065
35064
|
];
|
|
35066
35065
|
IgxComboItemComponent.propDecorators = {
|
|
35067
|
-
itemHeight: [{ type: Input }, { type: HostBinding, args: ['style.height.px',] }]
|
|
35066
|
+
itemHeight: [{ type: Input }, { type: HostBinding, args: ['style.height.px',] }],
|
|
35067
|
+
singleMode: [{ type: Input }]
|
|
35068
35068
|
};
|
|
35069
35069
|
|
|
35070
35070
|
const IGX_COMBO_COMPONENT = new InjectionToken('IgxComboComponentToken');
|
|
35071
|
-
|
|
35071
|
+
let NEXT_ID$c = 0;
|
|
35072
35072
|
/**
|
|
35073
35073
|
* @hidden
|
|
35074
|
+
* The default number of items that should be in the combo's
|
|
35075
|
+
* drop-down list if no `[itemsMaxHeight]` is specified
|
|
35074
35076
|
*/
|
|
35075
|
-
|
|
35076
|
-
|
|
35077
|
-
|
|
35078
|
-
|
|
35079
|
-
|
|
35080
|
-
|
|
35081
|
-
/**
|
|
35082
|
-
* @inheritdoc
|
|
35083
|
-
*/
|
|
35084
|
-
clicked(event) {
|
|
35085
|
-
this.comboAPI.disableTransitions = false;
|
|
35086
|
-
this.comboAPI.add_custom_item();
|
|
35087
|
-
}
|
|
35088
|
-
}
|
|
35089
|
-
IgxComboAddItemComponent.decorators = [
|
|
35090
|
-
{ type: Component, args: [{
|
|
35091
|
-
selector: 'igx-combo-add-item',
|
|
35092
|
-
template: '<ng-content></ng-content>',
|
|
35093
|
-
providers: [{ provide: IgxComboItemComponent, useExisting: IgxComboAddItemComponent }]
|
|
35094
|
-
},] }
|
|
35095
|
-
];
|
|
35096
|
-
|
|
35097
|
-
/** @hidden */
|
|
35098
|
-
class IgxComboDropDownComponent extends IgxDropDownComponent {
|
|
35099
|
-
constructor(elementRef, cdr, platform, selection, combo, comboAPI, _displayDensityOptions) {
|
|
35100
|
-
super(elementRef, cdr, platform, selection, _displayDensityOptions);
|
|
35101
|
-
this.elementRef = elementRef;
|
|
35102
|
-
this.cdr = cdr;
|
|
35103
|
-
this.platform = platform;
|
|
35104
|
-
this.selection = selection;
|
|
35105
|
-
this.combo = combo;
|
|
35106
|
-
this.comboAPI = comboAPI;
|
|
35107
|
-
this._displayDensityOptions = _displayDensityOptions;
|
|
35108
|
-
/**
|
|
35109
|
-
* @hidden
|
|
35110
|
-
* @internal
|
|
35111
|
-
*/
|
|
35112
|
-
this.children = null;
|
|
35113
|
-
this.scrollHandler = () => {
|
|
35114
|
-
this.comboAPI.disableTransitions = true;
|
|
35115
|
-
};
|
|
35116
|
-
}
|
|
35117
|
-
/** @hidden @internal */
|
|
35118
|
-
get scrollContainer() {
|
|
35119
|
-
return this.virtDir.dc.location.nativeElement;
|
|
35120
|
-
}
|
|
35121
|
-
get isScrolledToLast() {
|
|
35122
|
-
const scrollTop = this.virtDir.scrollPosition;
|
|
35123
|
-
const scrollHeight = this.virtDir.getScroll().scrollHeight;
|
|
35124
|
-
return Math.floor(scrollTop + this.virtDir.igxForContainerSize) === scrollHeight;
|
|
35125
|
-
}
|
|
35126
|
-
get lastVisibleIndex() {
|
|
35127
|
-
return this.combo.totalItemCount ?
|
|
35128
|
-
Math.floor(this.combo.itemsMaxHeight / this.combo.itemHeight) :
|
|
35129
|
-
this.items.length - 1;
|
|
35130
|
-
}
|
|
35131
|
-
get sortedChildren() {
|
|
35132
|
-
if (this.children !== undefined) {
|
|
35133
|
-
return this.children.toArray()
|
|
35134
|
-
.sort((a, b) => a.index - b.index);
|
|
35135
|
-
}
|
|
35136
|
-
return null;
|
|
35137
|
-
}
|
|
35138
|
-
/**
|
|
35139
|
-
* Get all non-header items
|
|
35140
|
-
*
|
|
35141
|
-
* ```typescript
|
|
35142
|
-
* let myDropDownItems = this.dropdown.items;
|
|
35143
|
-
* ```
|
|
35144
|
-
*/
|
|
35145
|
-
get items() {
|
|
35146
|
-
const items = [];
|
|
35147
|
-
if (this.children !== undefined) {
|
|
35148
|
-
const sortedChildren = this.sortedChildren;
|
|
35149
|
-
for (const child of sortedChildren) {
|
|
35150
|
-
if (!child.isHeader) {
|
|
35151
|
-
items.push(child);
|
|
35152
|
-
}
|
|
35153
|
-
}
|
|
35154
|
-
}
|
|
35155
|
-
return items;
|
|
35156
|
-
}
|
|
35157
|
-
/**
|
|
35158
|
-
* @hidden @internal
|
|
35159
|
-
*/
|
|
35160
|
-
onFocus() {
|
|
35161
|
-
this.focusedItem = this._focusedItem || this.items[0];
|
|
35162
|
-
}
|
|
35163
|
-
/**
|
|
35164
|
-
* @hidden @internal
|
|
35165
|
-
*/
|
|
35166
|
-
onBlur(_evt) {
|
|
35167
|
-
this.focusedItem = null;
|
|
35168
|
-
}
|
|
35169
|
-
/**
|
|
35170
|
-
* @hidden @internal
|
|
35171
|
-
*/
|
|
35172
|
-
onToggleOpened() {
|
|
35173
|
-
this.opened.emit();
|
|
35174
|
-
}
|
|
35175
|
-
/**
|
|
35176
|
-
* @hidden
|
|
35177
|
-
*/
|
|
35178
|
-
navigateFirst() {
|
|
35179
|
-
this.navigateItem(this.virtDir.igxForOf.findIndex(e => !e.isHeader));
|
|
35180
|
-
}
|
|
35181
|
-
/**
|
|
35182
|
-
* @hidden
|
|
35183
|
-
*/
|
|
35184
|
-
navigatePrev() {
|
|
35185
|
-
if (this._focusedItem && this._focusedItem.index === 0 && this.virtDir.state.startIndex === 0) {
|
|
35186
|
-
this.combo.focusSearchInput(false);
|
|
35187
|
-
}
|
|
35188
|
-
else {
|
|
35189
|
-
super.navigatePrev();
|
|
35190
|
-
}
|
|
35191
|
-
}
|
|
35192
|
-
/**
|
|
35193
|
-
* @hidden
|
|
35194
|
-
*/
|
|
35195
|
-
navigateNext() {
|
|
35196
|
-
const lastIndex = this.combo.totalItemCount ? this.combo.totalItemCount - 1 : this.virtDir.igxForOf.length - 1;
|
|
35197
|
-
if (this._focusedItem && this._focusedItem.index === lastIndex) {
|
|
35198
|
-
this.focusAddItemButton();
|
|
35199
|
-
}
|
|
35200
|
-
else {
|
|
35201
|
-
super.navigateNext();
|
|
35202
|
-
}
|
|
35203
|
-
}
|
|
35204
|
-
/**
|
|
35205
|
-
* @hidden @internal
|
|
35206
|
-
*/
|
|
35207
|
-
selectItem(item) {
|
|
35208
|
-
if (item === null || item === undefined) {
|
|
35209
|
-
return;
|
|
35210
|
-
}
|
|
35211
|
-
this.comboAPI.set_selected_item(item.itemID);
|
|
35212
|
-
this._focusedItem = item;
|
|
35213
|
-
}
|
|
35214
|
-
/**
|
|
35215
|
-
* @hidden @internal
|
|
35216
|
-
*/
|
|
35217
|
-
updateScrollPosition() {
|
|
35218
|
-
this.virtDir.getScroll().scrollTop = this._scrollPosition;
|
|
35219
|
-
}
|
|
35220
|
-
/**
|
|
35221
|
-
* @hidden @internal
|
|
35222
|
-
*/
|
|
35223
|
-
onItemActionKey(key) {
|
|
35224
|
-
switch (key) {
|
|
35225
|
-
case DropDownActionKey.ENTER:
|
|
35226
|
-
this.handleEnter();
|
|
35227
|
-
break;
|
|
35228
|
-
case DropDownActionKey.SPACE:
|
|
35229
|
-
this.handleSpace();
|
|
35230
|
-
break;
|
|
35231
|
-
case DropDownActionKey.ESCAPE:
|
|
35232
|
-
this.close();
|
|
35233
|
-
}
|
|
35234
|
-
}
|
|
35235
|
-
ngAfterViewInit() {
|
|
35236
|
-
this.virtDir.getScroll().addEventListener('scroll', this.scrollHandler);
|
|
35237
|
-
}
|
|
35238
|
-
/**
|
|
35239
|
-
* @hidden @internal
|
|
35240
|
-
*/
|
|
35241
|
-
ngOnDestroy() {
|
|
35242
|
-
this.virtDir.getScroll().removeEventListener('scroll', this.scrollHandler);
|
|
35243
|
-
this.destroy$.next(true);
|
|
35244
|
-
this.destroy$.complete();
|
|
35245
|
-
}
|
|
35246
|
-
scrollToHiddenItem(_newItem) { }
|
|
35247
|
-
handleEnter() {
|
|
35248
|
-
if (this.isAddItemFocused()) {
|
|
35249
|
-
this.combo.addItemToCollection();
|
|
35250
|
-
}
|
|
35251
|
-
else {
|
|
35252
|
-
this.close();
|
|
35253
|
-
}
|
|
35254
|
-
}
|
|
35255
|
-
handleSpace() {
|
|
35256
|
-
if (this.isAddItemFocused()) {
|
|
35257
|
-
return;
|
|
35258
|
-
}
|
|
35259
|
-
else {
|
|
35260
|
-
this.selectItem(this.focusedItem);
|
|
35261
|
-
}
|
|
35262
|
-
}
|
|
35263
|
-
isAddItemFocused() {
|
|
35264
|
-
return this.focusedItem instanceof IgxComboAddItemComponent;
|
|
35265
|
-
}
|
|
35266
|
-
focusAddItemButton() {
|
|
35267
|
-
if (this.combo.isAddButtonVisible()) {
|
|
35268
|
-
this.focusedItem = this.items[this.items.length - 1];
|
|
35269
|
-
}
|
|
35270
|
-
}
|
|
35271
|
-
}
|
|
35272
|
-
IgxComboDropDownComponent.decorators = [
|
|
35273
|
-
{ type: Component, args: [{
|
|
35274
|
-
selector: 'igx-combo-drop-down',
|
|
35275
|
-
template: "<div class=\"igx-drop-down__list\" [style.width]=\"width\"\nigxToggle\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]=\"this.listId\" role=\"listbox\" [attr.aria-label]=\"this.listId\"\n [style.height]=\"height\"\n [style.maxHeight]=\"maxHeight\">\n <ng-container *ngIf=\"!collapsed\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n</div>\n",
|
|
35276
|
-
providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxComboDropDownComponent }]
|
|
35277
|
-
},] }
|
|
35278
|
-
];
|
|
35279
|
-
IgxComboDropDownComponent.ctorParameters = () => [
|
|
35280
|
-
{ type: ElementRef },
|
|
35281
|
-
{ type: ChangeDetectorRef },
|
|
35282
|
-
{ type: PlatformUtil },
|
|
35283
|
-
{ type: IgxSelectionAPIService },
|
|
35284
|
-
{ type: undefined, decorators: [{ type: Inject, args: [IGX_COMBO_COMPONENT,] }] },
|
|
35285
|
-
{ type: IgxComboAPIService },
|
|
35286
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DisplayDensityToken,] }] }
|
|
35287
|
-
];
|
|
35288
|
-
IgxComboDropDownComponent.propDecorators = {
|
|
35289
|
-
children: [{ type: ContentChildren, args: [IgxComboItemComponent, { descendants: true },] }]
|
|
35077
|
+
const itemsInContainer = 10; // TODO: make private readonly
|
|
35078
|
+
/** @hidden @internal */
|
|
35079
|
+
const ItemHeights = {
|
|
35080
|
+
comfortable: 40,
|
|
35081
|
+
cosy: 32,
|
|
35082
|
+
compact: 28,
|
|
35290
35083
|
};
|
|
35291
|
-
|
|
35292
|
-
/**
|
|
35293
|
-
* @hidden
|
|
35294
|
-
*/
|
|
35295
|
-
class IgxComboFilteringPipe {
|
|
35296
|
-
transform(collection, searchValue, displayKey, shouldFilter, filteringOptions) {
|
|
35297
|
-
if (!collection) {
|
|
35298
|
-
return [];
|
|
35299
|
-
}
|
|
35300
|
-
if (!searchValue || !shouldFilter) {
|
|
35301
|
-
return collection;
|
|
35302
|
-
}
|
|
35303
|
-
else {
|
|
35304
|
-
const searchTerm = filteringOptions.caseSensitive ? searchValue.trim() : searchValue.toLowerCase().trim();
|
|
35305
|
-
if (displayKey != null) {
|
|
35306
|
-
return collection.filter(e => filteringOptions.caseSensitive ? e[displayKey].includes(searchTerm) :
|
|
35307
|
-
e[displayKey].toString().toLowerCase().includes(searchTerm));
|
|
35308
|
-
}
|
|
35309
|
-
else {
|
|
35310
|
-
return collection.filter(e => filteringOptions.caseSensitive ? e.includes(searchTerm) :
|
|
35311
|
-
e.toLowerCase().includes(searchTerm));
|
|
35312
|
-
}
|
|
35313
|
-
}
|
|
35314
|
-
}
|
|
35315
|
-
}
|
|
35316
|
-
IgxComboFilteringPipe.decorators = [
|
|
35317
|
-
{ type: Pipe, args: [{
|
|
35318
|
-
name: 'comboFiltering'
|
|
35319
|
-
},] }
|
|
35320
|
-
];
|
|
35321
|
-
/**
|
|
35322
|
-
* @hidden
|
|
35323
|
-
*/
|
|
35324
|
-
class IgxComboGroupingPipe {
|
|
35325
|
-
constructor(combo) {
|
|
35326
|
-
this.combo = combo;
|
|
35327
|
-
}
|
|
35328
|
-
transform(collection, groupKey, valueKey) {
|
|
35329
|
-
this.combo.filteredData = collection;
|
|
35330
|
-
if ((!groupKey && groupKey !== 0) || !collection.length) {
|
|
35331
|
-
return collection;
|
|
35332
|
-
}
|
|
35333
|
-
const sorted = DataUtil.sort(cloneArray(collection), [{
|
|
35334
|
-
fieldName: groupKey,
|
|
35335
|
-
dir: SortingDirection.Asc,
|
|
35336
|
-
ignoreCase: true,
|
|
35337
|
-
strategy: DefaultSortingStrategy.instance()
|
|
35338
|
-
}]);
|
|
35339
|
-
const data = cloneArray(sorted);
|
|
35340
|
-
let inserts = 0;
|
|
35341
|
-
let currentHeader = null;
|
|
35342
|
-
for (let i = 0; i < sorted.length; i++) {
|
|
35343
|
-
let insertFlag = 0;
|
|
35344
|
-
if (currentHeader !== sorted[i][groupKey]) {
|
|
35345
|
-
currentHeader = sorted[i][groupKey];
|
|
35346
|
-
insertFlag = 1;
|
|
35347
|
-
}
|
|
35348
|
-
if (insertFlag) {
|
|
35349
|
-
data.splice(i + inserts, 0, {
|
|
35350
|
-
[valueKey]: currentHeader,
|
|
35351
|
-
[groupKey]: currentHeader,
|
|
35352
|
-
isHeader: true
|
|
35353
|
-
});
|
|
35354
|
-
inserts++;
|
|
35355
|
-
}
|
|
35356
|
-
}
|
|
35357
|
-
return data;
|
|
35358
|
-
}
|
|
35359
|
-
}
|
|
35360
|
-
IgxComboGroupingPipe.decorators = [
|
|
35361
|
-
{ type: Pipe, args: [{
|
|
35362
|
-
name: 'comboGrouping'
|
|
35363
|
-
},] }
|
|
35364
|
-
];
|
|
35365
|
-
IgxComboGroupingPipe.ctorParameters = () => [
|
|
35366
|
-
{ type: undefined, decorators: [{ type: Inject, args: [IGX_COMBO_COMPONENT,] }] }
|
|
35367
|
-
];
|
|
35368
|
-
|
|
35369
|
-
/**
|
|
35370
|
-
* @hidden
|
|
35371
|
-
*/
|
|
35084
|
+
/** @hidden @internal */
|
|
35372
35085
|
var DataTypes;
|
|
35373
35086
|
(function (DataTypes) {
|
|
35374
35087
|
DataTypes["EMPTY"] = "empty";
|
|
@@ -35376,20 +35089,6 @@ var DataTypes;
|
|
|
35376
35089
|
DataTypes["COMPLEX"] = "complex";
|
|
35377
35090
|
DataTypes["PRIMARYKEY"] = "valueKey";
|
|
35378
35091
|
})(DataTypes || (DataTypes = {}));
|
|
35379
|
-
/**
|
|
35380
|
-
* @hidden
|
|
35381
|
-
*/
|
|
35382
|
-
const ItemHeights = {
|
|
35383
|
-
comfortable: 40,
|
|
35384
|
-
cosy: 32,
|
|
35385
|
-
compact: 28,
|
|
35386
|
-
};
|
|
35387
|
-
/**
|
|
35388
|
-
* @hidden
|
|
35389
|
-
* The default number of items that should be in the combo's
|
|
35390
|
-
* drop-down list if no `[itemsMaxHeight]` is specified
|
|
35391
|
-
*/
|
|
35392
|
-
const itemsInContainer = 10;
|
|
35393
35092
|
var IgxComboState;
|
|
35394
35093
|
(function (IgxComboState) {
|
|
35395
35094
|
/**
|
|
@@ -35405,47 +35104,12 @@ var IgxComboState;
|
|
|
35405
35104
|
*/
|
|
35406
35105
|
IgxComboState[IgxComboState["INVALID"] = 2] = "INVALID";
|
|
35407
35106
|
})(IgxComboState || (IgxComboState = {}));
|
|
35408
|
-
|
|
35409
|
-
|
|
35410
|
-
*
|
|
35411
|
-
* @hidden
|
|
35412
|
-
*/
|
|
35413
|
-
const diffInSets = (set1, set2) => {
|
|
35414
|
-
const results = [];
|
|
35415
|
-
set1.forEach(entry => {
|
|
35416
|
-
if (!set2.has(entry)) {
|
|
35417
|
-
results.push(entry);
|
|
35418
|
-
}
|
|
35419
|
-
});
|
|
35420
|
-
return results;
|
|
35421
|
-
};
|
|
35422
|
-
const ɵ0$1 = diffInSets;
|
|
35423
|
-
let NEXT_ID$c = 0;
|
|
35424
|
-
/**
|
|
35425
|
-
* Represents a drop-down list that provides editable functionalities, allowing users to choose an option from a predefined list.
|
|
35426
|
-
*
|
|
35427
|
-
* @igxModule IgxComboModule
|
|
35428
|
-
* @igxTheme igx-combo-theme
|
|
35429
|
-
* @igxKeywords combobox, combo selection
|
|
35430
|
-
* @igxGroup Grids & Lists
|
|
35431
|
-
*
|
|
35432
|
-
* @remarks
|
|
35433
|
-
* It provides the ability to filter items as well as perform single or multiple seleciton with the provided data.
|
|
35434
|
-
* Additionally, it exposes keyboard navigation and custom styling capabilities.
|
|
35435
|
-
* @example
|
|
35436
|
-
* ```html
|
|
35437
|
-
* <igx-combo [itemsMaxHeight]="250" [data]="locationData"
|
|
35438
|
-
* [displayKey]="'field'" [valueKey]="'field'"
|
|
35439
|
-
* placeholder="Location(s)" searchPlaceholder="Search...">
|
|
35440
|
-
* </igx-combo>
|
|
35441
|
-
* ```
|
|
35442
|
-
*/
|
|
35443
|
-
class IgxComboComponent extends DisplayDensityBase {
|
|
35444
|
-
constructor(elementRef, cdr, selection, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) {
|
|
35107
|
+
class IgxComboBaseDirective extends DisplayDensityBase {
|
|
35108
|
+
constructor(elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) {
|
|
35445
35109
|
super(_displayDensityOptions);
|
|
35446
35110
|
this.elementRef = elementRef;
|
|
35447
35111
|
this.cdr = cdr;
|
|
35448
|
-
this.
|
|
35112
|
+
this.selectionService = selectionService;
|
|
35449
35113
|
this.comboAPI = comboAPI;
|
|
35450
35114
|
this._iconService = _iconService;
|
|
35451
35115
|
this._displayDensityOptions = _displayDensityOptions;
|
|
@@ -35469,9 +35133,123 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35469
35133
|
*/
|
|
35470
35134
|
this.overlaySettings = null;
|
|
35471
35135
|
/**
|
|
35472
|
-
*
|
|
35136
|
+
* Gets/gets combo id.
|
|
35137
|
+
*
|
|
35138
|
+
* ```typescript
|
|
35139
|
+
* // get
|
|
35140
|
+
* let id = this.combo.id;
|
|
35141
|
+
* ```
|
|
35142
|
+
*
|
|
35143
|
+
* ```html
|
|
35144
|
+
* <!--set-->
|
|
35145
|
+
* <igx-combo [id]='combo1'></igx-combo>
|
|
35146
|
+
* ```
|
|
35473
35147
|
*/
|
|
35474
|
-
this.
|
|
35148
|
+
this.id = `igx-combo-${NEXT_ID$c++}`;
|
|
35149
|
+
/**
|
|
35150
|
+
* Controls whether custom values can be added to the collection
|
|
35151
|
+
*
|
|
35152
|
+
* ```typescript
|
|
35153
|
+
* // get
|
|
35154
|
+
* let comboAllowsCustomValues = this.combo.allowCustomValues;
|
|
35155
|
+
* ```
|
|
35156
|
+
*
|
|
35157
|
+
* ```html
|
|
35158
|
+
* <!--set-->
|
|
35159
|
+
* <igx-combo [allowCustomValues]='true'></igx-combo>
|
|
35160
|
+
* ```
|
|
35161
|
+
*/
|
|
35162
|
+
this.allowCustomValues = false;
|
|
35163
|
+
/**
|
|
35164
|
+
* Determines which column in the data source is used to determine the value.
|
|
35165
|
+
*
|
|
35166
|
+
* ```typescript
|
|
35167
|
+
* // get
|
|
35168
|
+
* let myComboValueKey = this.combo.valueKey;
|
|
35169
|
+
* ```
|
|
35170
|
+
*
|
|
35171
|
+
* ```html
|
|
35172
|
+
* <!--set-->
|
|
35173
|
+
* <igx-combo [valueKey]='myKey'></igx-combo>
|
|
35174
|
+
* ```
|
|
35175
|
+
*/
|
|
35176
|
+
this.valueKey = null;
|
|
35177
|
+
/** @hidden @internal */
|
|
35178
|
+
this.cssClass = 'igx-combo'; // Independent of display density for the time being
|
|
35179
|
+
/** @hidden @internal */
|
|
35180
|
+
this.role = 'combobox';
|
|
35181
|
+
/**
|
|
35182
|
+
* An @Input property that enabled/disables combo. The default is `false`.
|
|
35183
|
+
* ```html
|
|
35184
|
+
* <igx-combo [disabled]="'true'">
|
|
35185
|
+
* ```
|
|
35186
|
+
*/
|
|
35187
|
+
this.disabled = false;
|
|
35188
|
+
/**
|
|
35189
|
+
* Emitted when item selection is changing, before the selection completes
|
|
35190
|
+
*
|
|
35191
|
+
* ```html
|
|
35192
|
+
* <igx-combo (selectionChanging)='handleSelection()'></igx-combo>
|
|
35193
|
+
* ```
|
|
35194
|
+
*/
|
|
35195
|
+
// TODO: any for old/new selection?
|
|
35196
|
+
this.selectionChanging = new EventEmitter();
|
|
35197
|
+
/**
|
|
35198
|
+
* Emitted before the dropdown is opened
|
|
35199
|
+
*
|
|
35200
|
+
* ```html
|
|
35201
|
+
* <igx-combo opening='handleOpening($event)'></igx-combo>
|
|
35202
|
+
* ```
|
|
35203
|
+
*/
|
|
35204
|
+
this.opening = new EventEmitter();
|
|
35205
|
+
/**
|
|
35206
|
+
* Emitted after the dropdown is opened
|
|
35207
|
+
*
|
|
35208
|
+
* ```html
|
|
35209
|
+
* <igx-combo (opened)='handleOpened($event)'></igx-combo>
|
|
35210
|
+
* ```
|
|
35211
|
+
*/
|
|
35212
|
+
this.opened = new EventEmitter();
|
|
35213
|
+
/**
|
|
35214
|
+
* Emitted before the dropdown is closed
|
|
35215
|
+
*
|
|
35216
|
+
* ```html
|
|
35217
|
+
* <igx-combo (closing)='handleClosing($event)'></igx-combo>
|
|
35218
|
+
* ```
|
|
35219
|
+
*/
|
|
35220
|
+
this.closing = new EventEmitter();
|
|
35221
|
+
/**
|
|
35222
|
+
* Emitted after the dropdown is closed
|
|
35223
|
+
*
|
|
35224
|
+
* ```html
|
|
35225
|
+
* <igx-combo (closed)='handleClosed($event)'></igx-combo>
|
|
35226
|
+
* ```
|
|
35227
|
+
*/
|
|
35228
|
+
this.closed = new EventEmitter();
|
|
35229
|
+
/**
|
|
35230
|
+
* Emitted when an item is being added to the data collection
|
|
35231
|
+
*
|
|
35232
|
+
* ```html
|
|
35233
|
+
* <igx-combo (addition)='handleAdditionEvent($event)'></igx-combo>
|
|
35234
|
+
* ```
|
|
35235
|
+
*/
|
|
35236
|
+
this.addition = new EventEmitter();
|
|
35237
|
+
/**
|
|
35238
|
+
* Emitted when the value of the search input changes (e.g. typing, pasting, clear, etc.)
|
|
35239
|
+
*
|
|
35240
|
+
* ```html
|
|
35241
|
+
* <igx-combo (searchInputUpdate)='handleSearchInputEvent($event)'></igx-combo>
|
|
35242
|
+
* ```
|
|
35243
|
+
*/
|
|
35244
|
+
this.searchInputUpdate = new EventEmitter();
|
|
35245
|
+
/**
|
|
35246
|
+
* Emitted when new chunk of data is loaded from the virtualization
|
|
35247
|
+
*
|
|
35248
|
+
* ```html
|
|
35249
|
+
* <igx-combo (dataPreLoad)='handleDataPreloadEvent($event)'></igx-combo>
|
|
35250
|
+
* ```
|
|
35251
|
+
*/
|
|
35252
|
+
this.dataPreLoad = new EventEmitter();
|
|
35475
35253
|
/**
|
|
35476
35254
|
* The custom template, if any, that should be used when rendering ITEMS in the combo list
|
|
35477
35255
|
*
|
|
@@ -35635,207 +35413,34 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35635
35413
|
* ```
|
|
35636
35414
|
*/
|
|
35637
35415
|
this.clearIconTemplate = null;
|
|
35638
|
-
/**
|
|
35639
|
-
|
|
35640
|
-
*
|
|
35641
|
-
* ```html
|
|
35642
|
-
* <igx-combo (selectionChanging)='handleSelection()'></igx-combo>
|
|
35643
|
-
* ```
|
|
35644
|
-
*/
|
|
35645
|
-
this.selectionChanging = new EventEmitter();
|
|
35646
|
-
/**
|
|
35647
|
-
* Emitted before the dropdown is opened
|
|
35648
|
-
*
|
|
35649
|
-
* ```html
|
|
35650
|
-
* <igx-combo opening='handleOpening($event)'></igx-combo>
|
|
35651
|
-
* ```
|
|
35652
|
-
*/
|
|
35653
|
-
this.opening = new EventEmitter();
|
|
35654
|
-
/**
|
|
35655
|
-
* Emitted after the dropdown is opened
|
|
35656
|
-
*
|
|
35657
|
-
* ```html
|
|
35658
|
-
* <igx-combo (opened)='handleOpened($event)'></igx-combo>
|
|
35659
|
-
* ```
|
|
35660
|
-
*/
|
|
35661
|
-
this.opened = new EventEmitter();
|
|
35662
|
-
/**
|
|
35663
|
-
* Emitted before the dropdown is closed
|
|
35664
|
-
*
|
|
35665
|
-
* ```html
|
|
35666
|
-
* <igx-combo (closing)='handleClosing($event)'></igx-combo>
|
|
35667
|
-
* ```
|
|
35668
|
-
*/
|
|
35669
|
-
this.closing = new EventEmitter();
|
|
35670
|
-
/**
|
|
35671
|
-
* Emitted after the dropdown is closed
|
|
35672
|
-
*
|
|
35673
|
-
* ```html
|
|
35674
|
-
* <igx-combo (closed)='handleClosed($event)'></igx-combo>
|
|
35675
|
-
* ```
|
|
35676
|
-
*/
|
|
35677
|
-
this.closed = new EventEmitter();
|
|
35678
|
-
/**
|
|
35679
|
-
* Emitted when an item is being added to the data collection
|
|
35680
|
-
*
|
|
35681
|
-
* ```html
|
|
35682
|
-
* <igx-combo (addition)='handleAdditionEvent($event)'></igx-combo>
|
|
35683
|
-
* ```
|
|
35684
|
-
*/
|
|
35685
|
-
this.addition = new EventEmitter();
|
|
35686
|
-
/**
|
|
35687
|
-
* Emitted when the value of the search input changes (e.g. typing, pasting, clear, etc.)
|
|
35688
|
-
*
|
|
35689
|
-
* ```html
|
|
35690
|
-
* <igx-combo (searchInputUpdate)='handleSearchInputEvent($event)'></igx-combo>
|
|
35691
|
-
* ```
|
|
35692
|
-
*/
|
|
35693
|
-
this.searchInputUpdate = new EventEmitter();
|
|
35694
|
-
/**
|
|
35695
|
-
* Emitted when new chunk of data is loaded from the virtualization
|
|
35696
|
-
*
|
|
35697
|
-
* ```html
|
|
35698
|
-
* <igx-combo (dataPreLoad)='handleDataPreloadEvent($event)'></igx-combo>
|
|
35699
|
-
* ```
|
|
35700
|
-
*/
|
|
35701
|
-
this.dataPreLoad = new EventEmitter();
|
|
35702
|
-
/**
|
|
35703
|
-
* Gets/gets combo id.
|
|
35704
|
-
*
|
|
35705
|
-
* ```typescript
|
|
35706
|
-
* // get
|
|
35707
|
-
* let id = this.combo.id;
|
|
35708
|
-
* ```
|
|
35709
|
-
*
|
|
35710
|
-
* ```html
|
|
35711
|
-
* <!--set-->
|
|
35712
|
-
* <igx-combo [id]='combo1'></igx-combo>
|
|
35713
|
-
* ```
|
|
35714
|
-
*/
|
|
35715
|
-
this.id = `igx-combo-${NEXT_ID$c++}`;
|
|
35716
|
-
/**
|
|
35717
|
-
* @hidden @internal
|
|
35718
|
-
*/
|
|
35719
|
-
this.cssClass = 'igx-combo'; // Independent of display density, at the time being
|
|
35720
|
-
/**
|
|
35721
|
-
* @hidden @internal
|
|
35722
|
-
*/
|
|
35723
|
-
this.role = 'combobox';
|
|
35724
|
-
/**
|
|
35725
|
-
* Controls whether custom values can be added to the collection
|
|
35726
|
-
*
|
|
35727
|
-
* ```typescript
|
|
35728
|
-
* // get
|
|
35729
|
-
* let comboAllowsCustomValues = this.combo.allowCustomValues;
|
|
35730
|
-
* ```
|
|
35731
|
-
*
|
|
35732
|
-
* ```html
|
|
35733
|
-
* <!--set-->
|
|
35734
|
-
* <igx-combo [allowCustomValues]='true'></igx-combo>
|
|
35735
|
-
* ```
|
|
35736
|
-
*/
|
|
35737
|
-
this.allowCustomValues = false;
|
|
35738
|
-
/**
|
|
35739
|
-
* Defines the placeholder value for the combo dropdown search field
|
|
35740
|
-
*
|
|
35741
|
-
* ```typescript
|
|
35742
|
-
* // get
|
|
35743
|
-
* let myComboSearchPlaceholder = this.combo.searchPlaceholder;
|
|
35744
|
-
* ```
|
|
35745
|
-
*
|
|
35746
|
-
* ```html
|
|
35747
|
-
* <!--set-->
|
|
35748
|
-
* <igx-combo [searchPlaceholder]='newPlaceHolder'></igx-combo>
|
|
35749
|
-
* ```
|
|
35750
|
-
*/
|
|
35751
|
-
this.searchPlaceholder = 'Enter a Search Term';
|
|
35752
|
-
/**
|
|
35753
|
-
* Defines whether the caseSensitive icon should be shown in the search input
|
|
35754
|
-
*
|
|
35755
|
-
* ```typescript
|
|
35756
|
-
* // get
|
|
35757
|
-
* let myComboShowSearchCaseIcon = this.combo.showSearchCaseIcon;
|
|
35758
|
-
* ```
|
|
35759
|
-
*
|
|
35760
|
-
* ```html
|
|
35761
|
-
* <!--set-->
|
|
35762
|
-
* <igx-combo [showSearchCaseIcon]='true'></igx-combo>
|
|
35763
|
-
* ```
|
|
35764
|
-
*/
|
|
35765
|
-
this.showSearchCaseIcon = false;
|
|
35766
|
-
/**
|
|
35767
|
-
* Combo value data source property.
|
|
35768
|
-
*
|
|
35769
|
-
* ```typescript
|
|
35770
|
-
* // get
|
|
35771
|
-
* let myComboValueKey = this.combo.valueKey;
|
|
35772
|
-
* ```
|
|
35773
|
-
*
|
|
35774
|
-
* ```html
|
|
35775
|
-
* <!--set-->
|
|
35776
|
-
* <igx-combo [valueKey]='myKey'></igx-combo>
|
|
35777
|
-
* ```
|
|
35778
|
-
*/
|
|
35779
|
-
this.valueKey = null;
|
|
35780
|
-
/**
|
|
35781
|
-
* An @Input property that enabled/disables filtering in the list. The default is `true`.
|
|
35782
|
-
* ```html
|
|
35783
|
-
* <igx-combo [filterable]="false">
|
|
35784
|
-
* ```
|
|
35785
|
-
*/
|
|
35786
|
-
this.filterable = true;
|
|
35787
|
-
/**
|
|
35788
|
-
* An @Input property that enabled/disables combo. The default is `false`.
|
|
35789
|
-
* ```html
|
|
35790
|
-
* <igx-combo [disabled]="'true'">
|
|
35791
|
-
* ```
|
|
35792
|
-
*/
|
|
35793
|
-
this.disabled = false;
|
|
35794
|
-
/**
|
|
35795
|
-
* An @Input property that controls whether the combo's search box
|
|
35796
|
-
* should be focused after the `opened` event is called
|
|
35797
|
-
* When `false`, the combo's list item container will be focused instead
|
|
35798
|
-
*/
|
|
35799
|
-
this.autoFocusSearch = true;
|
|
35416
|
+
/** @hidden @internal */
|
|
35417
|
+
this.searchInput = null;
|
|
35800
35418
|
this.dropdownContainer = null;
|
|
35801
|
-
/**
|
|
35802
|
-
* @hidden @internal
|
|
35803
|
-
*/
|
|
35419
|
+
/** @hidden @internal */
|
|
35804
35420
|
this.customValueFlag = true;
|
|
35805
|
-
/**
|
|
35806
|
-
|
|
35807
|
-
|
|
35421
|
+
/** @hidden @internal */
|
|
35422
|
+
this.filterValue = '';
|
|
35423
|
+
/** @hidden @internal */
|
|
35808
35424
|
this.defaultFallbackGroup = 'Other';
|
|
35809
|
-
/**
|
|
35810
|
-
* @hidden @internal
|
|
35811
|
-
*/
|
|
35425
|
+
/** @hidden @internal */
|
|
35812
35426
|
this.filteringOptions = {
|
|
35813
35427
|
caseSensitive: false
|
|
35814
35428
|
};
|
|
35815
|
-
|
|
35816
|
-
|
|
35817
|
-
*/
|
|
35818
|
-
this.filteringLogic = FilteringLogic.Or;
|
|
35819
|
-
/** @hidden @internal */
|
|
35820
|
-
this.filterValue = '';
|
|
35821
|
-
this.stringFilters = IgxStringFilteringOperand;
|
|
35822
|
-
this.booleanFilters = IgxBooleanFilteringOperand;
|
|
35429
|
+
this._data = [];
|
|
35430
|
+
this._value = '';
|
|
35823
35431
|
this._groupKey = '';
|
|
35824
|
-
this.
|
|
35825
|
-
this.
|
|
35826
|
-
this.
|
|
35827
|
-
this._type = null;
|
|
35432
|
+
this._filteredData = [];
|
|
35433
|
+
this._remoteSelection = {};
|
|
35434
|
+
this._valid = IgxComboState.INITIAL;
|
|
35828
35435
|
this.ngControl = null;
|
|
35829
35436
|
this.destroy$ = new Subject();
|
|
35830
|
-
this.
|
|
35831
|
-
this.
|
|
35437
|
+
this._onTouchedCallback = noop;
|
|
35438
|
+
this._onChangeCallback = noop;
|
|
35439
|
+
this._type = null;
|
|
35440
|
+
this._dataType = '';
|
|
35441
|
+
this._searchValue = '';
|
|
35832
35442
|
this._itemHeight = null;
|
|
35833
35443
|
this._itemsMaxHeight = null;
|
|
35834
|
-
this._remoteSelection = {};
|
|
35835
|
-
this._onChangeCallback = noop;
|
|
35836
|
-
this._onTouchedCallback = noop;
|
|
35837
|
-
this._value = '';
|
|
35838
|
-
this._valid = IgxComboState.INITIAL;
|
|
35839
35444
|
this.onStatusChanged = () => {
|
|
35840
35445
|
if ((this.ngControl.control.touched || this.ngControl.control.dirty) &&
|
|
35841
35446
|
(this.ngControl.control.validator || this.ngControl.control.asyncValidator)) {
|
|
@@ -35852,31 +35457,10 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35852
35457
|
}
|
|
35853
35458
|
this.manageRequiredAsterisk();
|
|
35854
35459
|
};
|
|
35855
|
-
this.
|
|
35856
|
-
|
|
35857
|
-
|
|
35858
|
-
|
|
35859
|
-
*/
|
|
35860
|
-
get displaySearchInput() {
|
|
35861
|
-
return this.filterable || this.allowCustomValues;
|
|
35862
|
-
}
|
|
35863
|
-
/**
|
|
35864
|
-
* @hidden @internal
|
|
35865
|
-
*/
|
|
35866
|
-
get ariaExpanded() {
|
|
35867
|
-
return !this.dropdown.collapsed;
|
|
35868
|
-
}
|
|
35869
|
-
/**
|
|
35870
|
-
* @hidden @internal
|
|
35871
|
-
*/
|
|
35872
|
-
get hasPopUp() {
|
|
35873
|
-
return 'listbox';
|
|
35874
|
-
}
|
|
35875
|
-
/**
|
|
35876
|
-
* @hidden @internal
|
|
35877
|
-
*/
|
|
35878
|
-
get ariaOwns() {
|
|
35879
|
-
return this.dropdown.id;
|
|
35460
|
+
this.findMatch = (element) => {
|
|
35461
|
+
const value = this.displayKey ? element[this.displayKey] : element;
|
|
35462
|
+
return value.toString().toLowerCase() === this.searchValue.trim().toLowerCase();
|
|
35463
|
+
};
|
|
35880
35464
|
}
|
|
35881
35465
|
/**
|
|
35882
35466
|
* Configures the drop down list height
|
|
@@ -35922,12 +35506,6 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35922
35506
|
set itemHeight(val) {
|
|
35923
35507
|
this._itemHeight = val;
|
|
35924
35508
|
}
|
|
35925
|
-
/**
|
|
35926
|
-
* @hidden @internal
|
|
35927
|
-
*/
|
|
35928
|
-
get inputEmpty() {
|
|
35929
|
-
return !this.value && !this.placeholder;
|
|
35930
|
-
}
|
|
35931
35509
|
/**
|
|
35932
35510
|
* Combo data source.
|
|
35933
35511
|
*
|
|
@@ -35946,7 +35524,7 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35946
35524
|
this._displayKey = val;
|
|
35947
35525
|
}
|
|
35948
35526
|
/**
|
|
35949
|
-
*
|
|
35527
|
+
* Determines which column in the data source is used to determine the display value.
|
|
35950
35528
|
*
|
|
35951
35529
|
* ```typescript
|
|
35952
35530
|
* // get
|
|
@@ -35987,6 +35565,18 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35987
35565
|
get groupKey() {
|
|
35988
35566
|
return this._groupKey;
|
|
35989
35567
|
}
|
|
35568
|
+
/** @hidden @internal */
|
|
35569
|
+
get ariaExpanded() {
|
|
35570
|
+
return !this.dropdown.collapsed;
|
|
35571
|
+
}
|
|
35572
|
+
/** @hidden @internal */
|
|
35573
|
+
get hasPopUp() {
|
|
35574
|
+
return 'listbox';
|
|
35575
|
+
}
|
|
35576
|
+
/** @hidden @internal */
|
|
35577
|
+
get ariaOwns() {
|
|
35578
|
+
return this.dropdown.id;
|
|
35579
|
+
}
|
|
35990
35580
|
/**
|
|
35991
35581
|
* An @Input property that sets how the combo will be styled.
|
|
35992
35582
|
* The allowed values are `line`, `box`, `border` and `search`. The default is `box`.
|
|
@@ -36000,6 +35590,27 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36000
35590
|
set type(val) {
|
|
36001
35591
|
this._type = val;
|
|
36002
35592
|
}
|
|
35593
|
+
/** @hidden @internal */
|
|
35594
|
+
get searchValue() {
|
|
35595
|
+
return this._searchValue;
|
|
35596
|
+
}
|
|
35597
|
+
set searchValue(val) {
|
|
35598
|
+
this.filterValue = val;
|
|
35599
|
+
this._searchValue = val;
|
|
35600
|
+
}
|
|
35601
|
+
/** @hidden @internal */
|
|
35602
|
+
get isRemote() {
|
|
35603
|
+
return this.totalItemCount > 0 &&
|
|
35604
|
+
this.valueKey &&
|
|
35605
|
+
this.dataType === DataTypes.COMPLEX;
|
|
35606
|
+
}
|
|
35607
|
+
/** @hidden @internal */
|
|
35608
|
+
get dataType() {
|
|
35609
|
+
if (this.displayKey) {
|
|
35610
|
+
return DataTypes.COMPLEX;
|
|
35611
|
+
}
|
|
35612
|
+
return DataTypes.PRIMITIVE;
|
|
35613
|
+
}
|
|
36003
35614
|
/**
|
|
36004
35615
|
* Gets if control is valid, when used in a form
|
|
36005
35616
|
*
|
|
@@ -36024,32 +35635,15 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36024
35635
|
this.comboInput.valid = IgxInputState[IgxComboState[valid]];
|
|
36025
35636
|
}
|
|
36026
35637
|
/**
|
|
36027
|
-
*
|
|
36028
|
-
|
|
36029
|
-
|
|
36030
|
-
|
|
36031
|
-
|
|
36032
|
-
|
|
36033
|
-
this.filterValue = val;
|
|
36034
|
-
this._searchValue = val;
|
|
36035
|
-
}
|
|
36036
|
-
/**
|
|
36037
|
-
* @hidden @internal
|
|
36038
|
-
*/
|
|
36039
|
-
onArrowDown(event) {
|
|
36040
|
-
event.preventDefault();
|
|
36041
|
-
event.stopPropagation();
|
|
36042
|
-
this.open();
|
|
36043
|
-
}
|
|
36044
|
-
/**
|
|
36045
|
-
* @hidden @internal
|
|
35638
|
+
* The text displayed in the combo input
|
|
35639
|
+
*
|
|
35640
|
+
* ```typescript
|
|
35641
|
+
* // get
|
|
35642
|
+
* let comboValue = this.combo.value;
|
|
35643
|
+
* ```
|
|
36046
35644
|
*/
|
|
36047
|
-
|
|
36048
|
-
|
|
36049
|
-
event.preventDefault();
|
|
36050
|
-
if (!this.disabled) {
|
|
36051
|
-
this.toggle();
|
|
36052
|
-
}
|
|
35645
|
+
get value() {
|
|
35646
|
+
return this._value;
|
|
36053
35647
|
}
|
|
36054
35648
|
/**
|
|
36055
35649
|
* Defines the current state of the virtualized data. It contains `startIndex` and `chunkSize`
|
|
@@ -36073,6 +35667,16 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36073
35667
|
set virtualizationState(state) {
|
|
36074
35668
|
this.virtDir.state = state;
|
|
36075
35669
|
}
|
|
35670
|
+
/**
|
|
35671
|
+
* Gets drop down state.
|
|
35672
|
+
*
|
|
35673
|
+
* ```typescript
|
|
35674
|
+
* let state = this.combo.collapsed;
|
|
35675
|
+
* ```
|
|
35676
|
+
*/
|
|
35677
|
+
get collapsed() {
|
|
35678
|
+
return this.dropdown.collapsed;
|
|
35679
|
+
}
|
|
36076
35680
|
/**
|
|
36077
35681
|
* Gets total count of the virtual data items, when using remote service.
|
|
36078
35682
|
*
|
|
@@ -36095,94 +35699,92 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36095
35699
|
set totalItemCount(count) {
|
|
36096
35700
|
this.virtDir.totalItemCount = count;
|
|
36097
35701
|
}
|
|
36098
|
-
/**
|
|
36099
|
-
|
|
36100
|
-
|
|
36101
|
-
|
|
36102
|
-
|
|
36103
|
-
* let comboValue = this.combo.value;
|
|
36104
|
-
* ```
|
|
36105
|
-
*/
|
|
36106
|
-
get value() {
|
|
36107
|
-
return this._value;
|
|
36108
|
-
}
|
|
36109
|
-
/**
|
|
36110
|
-
* @hidden @internal
|
|
36111
|
-
*/
|
|
36112
|
-
get filteredData() {
|
|
36113
|
-
return this.filterable ? this._filteredData : this.data;
|
|
36114
|
-
}
|
|
36115
|
-
/**
|
|
36116
|
-
* @hidden @internal
|
|
36117
|
-
*/
|
|
36118
|
-
set filteredData(val) {
|
|
36119
|
-
this._filteredData = this.groupKey ? (val || []).filter((e) => e.isHeader !== true) : val;
|
|
36120
|
-
this.checkMatch();
|
|
36121
|
-
}
|
|
36122
|
-
/**
|
|
36123
|
-
* @hidden @internal
|
|
36124
|
-
*/
|
|
36125
|
-
handleKeyUp(event) {
|
|
36126
|
-
if (event.key === 'ArrowDown' || event.key === 'Down') {
|
|
36127
|
-
this.dropdown.focusedItem = this.dropdown.items[0];
|
|
36128
|
-
this.dropdownContainer.nativeElement.focus();
|
|
35702
|
+
/** @hidden @internal */
|
|
35703
|
+
get template() {
|
|
35704
|
+
this._dataType = this.dataType;
|
|
35705
|
+
if (this.itemTemplate) {
|
|
35706
|
+
return this.itemTemplate;
|
|
36129
35707
|
}
|
|
36130
|
-
|
|
36131
|
-
this.
|
|
35708
|
+
if (this._dataType === DataTypes.COMPLEX) {
|
|
35709
|
+
return this.complexTemplate;
|
|
36132
35710
|
}
|
|
35711
|
+
return this.primitiveTemplate;
|
|
36133
35712
|
}
|
|
36134
|
-
/**
|
|
36135
|
-
|
|
36136
|
-
|
|
36137
|
-
|
|
36138
|
-
|
|
36139
|
-
event.preventDefault();
|
|
36140
|
-
event.stopPropagation();
|
|
36141
|
-
this.close();
|
|
36142
|
-
}
|
|
35713
|
+
/** @hidden @internal */
|
|
35714
|
+
onArrowDown(event) {
|
|
35715
|
+
event.preventDefault();
|
|
35716
|
+
event.stopPropagation();
|
|
35717
|
+
this.open();
|
|
36143
35718
|
}
|
|
36144
|
-
/**
|
|
36145
|
-
|
|
36146
|
-
|
|
36147
|
-
|
|
36148
|
-
|
|
36149
|
-
|
|
36150
|
-
|
|
36151
|
-
|
|
36152
|
-
|
|
36153
|
-
|
|
36154
|
-
|
|
36155
|
-
|
|
36156
|
-
|
|
36157
|
-
|
|
35719
|
+
/** @hidden @internal */
|
|
35720
|
+
ngOnInit() {
|
|
35721
|
+
this.ngControl = this._injector.get(NgControl, null);
|
|
35722
|
+
const targetElement = this.elementRef.nativeElement;
|
|
35723
|
+
this._overlaySettings = {
|
|
35724
|
+
target: targetElement,
|
|
35725
|
+
scrollStrategy: new AbsoluteScrollStrategy(),
|
|
35726
|
+
positionStrategy: new AutoPositionStrategy(),
|
|
35727
|
+
modal: false,
|
|
35728
|
+
closeOnOutsideClick: true,
|
|
35729
|
+
excludeFromOutsideClick: [targetElement]
|
|
35730
|
+
};
|
|
35731
|
+
this.selectionService.set(this.id, new Set());
|
|
35732
|
+
this._iconService.addSvgIconFromText(caseSensitive.name, caseSensitive.value, 'imx-icons');
|
|
35733
|
+
}
|
|
35734
|
+
/** @hidden @internal */
|
|
35735
|
+
ngAfterViewInit() {
|
|
35736
|
+
this.filteredData = [...this.data];
|
|
35737
|
+
if (this.ngControl) {
|
|
35738
|
+
this.ngControl.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(this.onStatusChanged);
|
|
35739
|
+
this.manageRequiredAsterisk();
|
|
35740
|
+
this.cdr.detectChanges();
|
|
36158
35741
|
}
|
|
36159
|
-
this.
|
|
35742
|
+
this.virtDir.chunkPreload.pipe(takeUntil(this.destroy$)).subscribe((e) => {
|
|
35743
|
+
const eventArgs = Object.assign({}, e, { owner: this });
|
|
35744
|
+
this.dataPreLoad.emit(eventArgs);
|
|
35745
|
+
});
|
|
35746
|
+
}
|
|
35747
|
+
/** @hidden @internal */
|
|
35748
|
+
ngOnDestroy() {
|
|
35749
|
+
this.destroy$.next();
|
|
35750
|
+
this.destroy$.complete();
|
|
35751
|
+
this.comboAPI.clear();
|
|
35752
|
+
this.selectionService.clear(this.id);
|
|
36160
35753
|
}
|
|
36161
35754
|
/**
|
|
36162
|
-
*
|
|
35755
|
+
* A method that opens/closes the combo.
|
|
35756
|
+
*
|
|
35757
|
+
* ```html
|
|
35758
|
+
* <button (click)="combo.toggle()">Toggle Combo</button>
|
|
35759
|
+
* <igx-combo #combo></igx-combo>
|
|
35760
|
+
* ```
|
|
36163
35761
|
*/
|
|
36164
|
-
|
|
36165
|
-
|
|
36166
|
-
|
|
36167
|
-
}
|
|
36168
|
-
return DataTypes.PRIMITIVE;
|
|
35762
|
+
toggle() {
|
|
35763
|
+
const overlaySettings = Object.assign({}, this._overlaySettings, this.overlaySettings);
|
|
35764
|
+
this.dropdown.toggle(overlaySettings);
|
|
36169
35765
|
}
|
|
36170
35766
|
/**
|
|
36171
|
-
*
|
|
35767
|
+
* A method that opens the combo.
|
|
35768
|
+
*
|
|
35769
|
+
* ```html
|
|
35770
|
+
* <button (click)="combo.open()">Open Combo</button>
|
|
35771
|
+
* <igx-combo #combo></igx-combo>
|
|
35772
|
+
* ```
|
|
36172
35773
|
*/
|
|
36173
|
-
|
|
36174
|
-
|
|
36175
|
-
|
|
36176
|
-
this.dataType === DataTypes.COMPLEX;
|
|
35774
|
+
open() {
|
|
35775
|
+
const overlaySettings = Object.assign({}, this._overlaySettings, this.overlaySettings);
|
|
35776
|
+
this.dropdown.open(overlaySettings);
|
|
36177
35777
|
}
|
|
36178
35778
|
/**
|
|
36179
|
-
*
|
|
35779
|
+
* A method that closes the combo.
|
|
36180
35780
|
*
|
|
36181
|
-
*
|
|
36182
|
-
*
|
|
35781
|
+
* ```html
|
|
35782
|
+
* <button (click)="combo.close()">Close Combo</button>
|
|
35783
|
+
* <igx-combo #combo></igx-combo>
|
|
35784
|
+
* ```
|
|
36183
35785
|
*/
|
|
36184
|
-
|
|
36185
|
-
|
|
35786
|
+
close() {
|
|
35787
|
+
this.dropdown.close();
|
|
36186
35788
|
}
|
|
36187
35789
|
/**
|
|
36188
35790
|
* Triggers change detection on the combo view
|
|
@@ -36191,27 +35793,29 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36191
35793
|
this.cdr.detectChanges();
|
|
36192
35794
|
}
|
|
36193
35795
|
/**
|
|
36194
|
-
*
|
|
35796
|
+
* Get current selection state
|
|
35797
|
+
*
|
|
35798
|
+
* @returns Array of selected items
|
|
35799
|
+
* ```typescript
|
|
35800
|
+
* let selectedItems = this.combo.selectedItems();
|
|
35801
|
+
* ```
|
|
36195
35802
|
*/
|
|
36196
|
-
|
|
36197
|
-
|
|
36198
|
-
return
|
|
35803
|
+
get selection() {
|
|
35804
|
+
const items = Array.from(this.selectionService.get(this.id));
|
|
35805
|
+
return items;
|
|
36199
35806
|
}
|
|
36200
35807
|
/**
|
|
36201
|
-
*
|
|
35808
|
+
* Returns if the specified itemID is selected
|
|
35809
|
+
*
|
|
35810
|
+
* @hidden
|
|
35811
|
+
* @internal
|
|
36202
35812
|
*/
|
|
36203
|
-
|
|
36204
|
-
|
|
36205
|
-
this.selectAllItems();
|
|
36206
|
-
}
|
|
36207
|
-
else {
|
|
36208
|
-
this.deselectAllItems();
|
|
36209
|
-
}
|
|
35813
|
+
isItemSelected(item) {
|
|
35814
|
+
return this.selectionService.is_item_selected(this.id, item);
|
|
36210
35815
|
}
|
|
36211
|
-
/**
|
|
36212
|
-
* @hidden @internal
|
|
36213
|
-
*/
|
|
35816
|
+
/** @hidden @internal */
|
|
36214
35817
|
addItemToCollection() {
|
|
35818
|
+
var _a;
|
|
36215
35819
|
if (!this.searchValue) {
|
|
36216
35820
|
return;
|
|
36217
35821
|
}
|
|
@@ -36236,212 +35840,697 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36236
35840
|
this.data.push(args.addedItem);
|
|
36237
35841
|
// trigger re-render
|
|
36238
35842
|
this.data = cloneArray(this.data);
|
|
36239
|
-
this.
|
|
35843
|
+
this.select(this.valueKey !== null && this.valueKey !== undefined ?
|
|
36240
35844
|
[args.addedItem[this.valueKey]] : [args.addedItem], false);
|
|
36241
35845
|
this.customValueFlag = false;
|
|
36242
|
-
this.searchInput.nativeElement.focus();
|
|
35846
|
+
(_a = this.searchInput) === null || _a === void 0 ? void 0 : _a.nativeElement.focus();
|
|
36243
35847
|
this.dropdown.focusedItem = null;
|
|
36244
35848
|
this.virtDir.scrollTo(0);
|
|
36245
35849
|
}
|
|
36246
|
-
/**
|
|
36247
|
-
|
|
36248
|
-
|
|
36249
|
-
|
|
36250
|
-
if (this.displaySearchInput && this.searchInput) {
|
|
36251
|
-
this.searchInput.nativeElement.focus();
|
|
36252
|
-
}
|
|
36253
|
-
else {
|
|
36254
|
-
if (opening) {
|
|
36255
|
-
this.dropdownContainer.nativeElement.focus();
|
|
36256
|
-
}
|
|
36257
|
-
else {
|
|
36258
|
-
this.comboInput.nativeElement.focus();
|
|
36259
|
-
this.toggle();
|
|
36260
|
-
}
|
|
36261
|
-
}
|
|
35850
|
+
/** @hidden @internal */
|
|
35851
|
+
isAddButtonVisible() {
|
|
35852
|
+
// This should always return a boolean value. If this.searchValue was '', it returns '' instead of false;
|
|
35853
|
+
return this.searchValue !== '' && this.customValueFlag;
|
|
36262
35854
|
}
|
|
36263
|
-
/**
|
|
36264
|
-
|
|
36265
|
-
|
|
36266
|
-
|
|
36267
|
-
|
|
36268
|
-
|
|
36269
|
-
|
|
36270
|
-
|
|
36271
|
-
|
|
36272
|
-
|
|
36273
|
-
this.
|
|
35855
|
+
/** @hidden @internal */
|
|
35856
|
+
handleInputChange(event) {
|
|
35857
|
+
if (event !== undefined) {
|
|
35858
|
+
const args = {
|
|
35859
|
+
searchText: typeof event === 'string' ? event : event.target.value,
|
|
35860
|
+
owner: this,
|
|
35861
|
+
cancel: false
|
|
35862
|
+
};
|
|
35863
|
+
this.searchInputUpdate.emit(args);
|
|
35864
|
+
if (args.cancel) {
|
|
35865
|
+
this.filterValue = null;
|
|
36274
35866
|
}
|
|
36275
35867
|
}
|
|
35868
|
+
this.checkMatch();
|
|
36276
35869
|
}
|
|
36277
35870
|
/**
|
|
36278
|
-
*
|
|
35871
|
+
* Event handlers
|
|
35872
|
+
*
|
|
35873
|
+
* @hidden
|
|
35874
|
+
* @internal
|
|
36279
35875
|
*/
|
|
36280
|
-
|
|
36281
|
-
|
|
36282
|
-
|
|
36283
|
-
|
|
36284
|
-
target: targetElement,
|
|
36285
|
-
scrollStrategy: new AbsoluteScrollStrategy(),
|
|
36286
|
-
positionStrategy: new AutoPositionStrategy(),
|
|
36287
|
-
modal: false,
|
|
36288
|
-
closeOnOutsideClick: true,
|
|
36289
|
-
excludeFromOutsideClick: [targetElement]
|
|
36290
|
-
};
|
|
36291
|
-
this.selection.set(this.id, new Set());
|
|
36292
|
-
this._iconService.addSvgIconFromText(caseSensitive.name, caseSensitive.value, 'imx-icons');
|
|
35876
|
+
handleOpening(e) {
|
|
35877
|
+
const args = { owner: this, event: e.event, cancel: e.cancel };
|
|
35878
|
+
this.opening.emit(args);
|
|
35879
|
+
e.cancel = args.cancel;
|
|
36293
35880
|
}
|
|
36294
|
-
/**
|
|
36295
|
-
|
|
36296
|
-
|
|
36297
|
-
|
|
36298
|
-
this.
|
|
36299
|
-
|
|
36300
|
-
|
|
36301
|
-
|
|
36302
|
-
|
|
36303
|
-
|
|
36304
|
-
|
|
36305
|
-
|
|
36306
|
-
|
|
36307
|
-
|
|
35881
|
+
/** @hidden @internal */
|
|
35882
|
+
handleClosing(e) {
|
|
35883
|
+
var _a;
|
|
35884
|
+
const args = { owner: this, event: e.event, cancel: e.cancel };
|
|
35885
|
+
this.closing.emit(args);
|
|
35886
|
+
e.cancel = args.cancel;
|
|
35887
|
+
if (e.cancel) {
|
|
35888
|
+
return;
|
|
35889
|
+
}
|
|
35890
|
+
this.searchValue = '';
|
|
35891
|
+
if (!e.event) {
|
|
35892
|
+
(_a = this.comboInput) === null || _a === void 0 ? void 0 : _a.nativeElement.focus();
|
|
35893
|
+
}
|
|
35894
|
+
}
|
|
35895
|
+
/** @hidden @internal */
|
|
35896
|
+
handleClosed() {
|
|
35897
|
+
this.closed.emit({ owner: this });
|
|
35898
|
+
}
|
|
35899
|
+
/** @hidden @internal */
|
|
35900
|
+
handleKeyDown(event) {
|
|
35901
|
+
if (event.key === 'ArrowUp' || event.key === 'Up') {
|
|
35902
|
+
event.preventDefault();
|
|
35903
|
+
event.stopPropagation();
|
|
35904
|
+
this.close();
|
|
35905
|
+
}
|
|
35906
|
+
}
|
|
35907
|
+
/** @hidden @internal */
|
|
35908
|
+
registerOnChange(fn) {
|
|
35909
|
+
this._onChangeCallback = fn;
|
|
35910
|
+
}
|
|
35911
|
+
/** @hidden @internal */
|
|
35912
|
+
registerOnTouched(fn) {
|
|
35913
|
+
this._onTouchedCallback = fn;
|
|
35914
|
+
}
|
|
35915
|
+
/** @hidden @internal */
|
|
35916
|
+
setDisabledState(isDisabled) {
|
|
35917
|
+
this.disabled = isDisabled;
|
|
35918
|
+
}
|
|
35919
|
+
/** @hidden @internal */
|
|
35920
|
+
onClick(event) {
|
|
35921
|
+
event.stopPropagation();
|
|
35922
|
+
event.preventDefault();
|
|
35923
|
+
if (!this.disabled) {
|
|
35924
|
+
this.toggle();
|
|
35925
|
+
}
|
|
35926
|
+
}
|
|
35927
|
+
/** @hidden @internal */
|
|
35928
|
+
onBlur() {
|
|
35929
|
+
if (this.collapsed) {
|
|
35930
|
+
this._onTouchedCallback();
|
|
35931
|
+
if (this.ngControl && this.ngControl.invalid) {
|
|
35932
|
+
this.valid = IgxComboState.INVALID;
|
|
35933
|
+
}
|
|
35934
|
+
else {
|
|
35935
|
+
this.valid = IgxComboState.INITIAL;
|
|
35936
|
+
}
|
|
35937
|
+
}
|
|
35938
|
+
}
|
|
35939
|
+
/** if there is a valueKey - map the keys to data items, else - just return the keys */
|
|
35940
|
+
convertKeysToItems(keys) {
|
|
35941
|
+
if (this.comboAPI.valueKey === null) {
|
|
35942
|
+
return keys;
|
|
35943
|
+
}
|
|
35944
|
+
// map keys vs. filter data to retain the order of the selected items
|
|
35945
|
+
return keys.map(key => this.data.find(entry => entry[this.valueKey] === key)).filter(e => e !== undefined);
|
|
35946
|
+
}
|
|
35947
|
+
checkMatch() {
|
|
35948
|
+
const itemMatch = this.filteredData.some(this.findMatch);
|
|
35949
|
+
this.customValueFlag = this.allowCustomValues && !itemMatch;
|
|
35950
|
+
}
|
|
35951
|
+
manageRequiredAsterisk() {
|
|
35952
|
+
if (this.ngControl && this.ngControl.control.validator) {
|
|
35953
|
+
// Run the validation with empty object to check if required is enabled.
|
|
35954
|
+
const error = this.ngControl.control.validator({});
|
|
35955
|
+
this.inputGroup.isRequired = error && error.required;
|
|
35956
|
+
}
|
|
35957
|
+
}
|
|
35958
|
+
/** Contains key-value pairs of the selected valueKeys and their resp. displayKeys */
|
|
35959
|
+
registerRemoteEntries(ids, add = true) {
|
|
35960
|
+
if (add) {
|
|
35961
|
+
const selection = this.getValueDisplayPairs(ids);
|
|
35962
|
+
for (const entry of selection) {
|
|
35963
|
+
this._remoteSelection[entry[this.valueKey]] = entry[this.displayKey];
|
|
35964
|
+
}
|
|
35965
|
+
}
|
|
35966
|
+
else {
|
|
35967
|
+
for (const entry of ids) {
|
|
35968
|
+
delete this._remoteSelection[entry];
|
|
35969
|
+
}
|
|
35970
|
+
}
|
|
36308
35971
|
}
|
|
36309
35972
|
/**
|
|
36310
|
-
*
|
|
35973
|
+
* For `id: any[]` returns a mapped `{ [combo.valueKey]: any, [combo.displayKey]: any }[]`
|
|
36311
35974
|
*/
|
|
36312
|
-
|
|
36313
|
-
this.
|
|
36314
|
-
|
|
36315
|
-
|
|
36316
|
-
|
|
35975
|
+
getValueDisplayPairs(ids) {
|
|
35976
|
+
return this.data.filter(entry => ids.indexOf(entry[this.valueKey]) > -1).map(e => ({
|
|
35977
|
+
[this.valueKey]: e[this.valueKey],
|
|
35978
|
+
[this.displayKey]: e[this.displayKey]
|
|
35979
|
+
}));
|
|
35980
|
+
}
|
|
35981
|
+
getRemoteSelection(newSelection, oldSelection) {
|
|
35982
|
+
if (!newSelection.length) {
|
|
35983
|
+
// If new selection is empty, clear all items
|
|
35984
|
+
this.registerRemoteEntries(oldSelection, false);
|
|
35985
|
+
return '';
|
|
35986
|
+
}
|
|
35987
|
+
const removedItems = oldSelection.filter(e => newSelection.indexOf(e) < 0);
|
|
35988
|
+
const addedItems = newSelection.filter(e => oldSelection.indexOf(e) < 0);
|
|
35989
|
+
this.registerRemoteEntries(addedItems);
|
|
35990
|
+
this.registerRemoteEntries(removedItems, false);
|
|
35991
|
+
return Object.keys(this._remoteSelection).map(e => this._remoteSelection[e]).join(', ');
|
|
35992
|
+
}
|
|
35993
|
+
}
|
|
35994
|
+
IgxComboBaseDirective.decorators = [
|
|
35995
|
+
{ type: Directive }
|
|
35996
|
+
];
|
|
35997
|
+
IgxComboBaseDirective.ctorParameters = () => [
|
|
35998
|
+
{ type: ElementRef },
|
|
35999
|
+
{ type: ChangeDetectorRef },
|
|
36000
|
+
{ type: IgxSelectionAPIService },
|
|
36001
|
+
{ type: IgxComboAPIService },
|
|
36002
|
+
{ type: IgxIconService },
|
|
36003
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DisplayDensityToken,] }] },
|
|
36004
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [IGX_INPUT_GROUP_TYPE,] }] },
|
|
36005
|
+
{ type: Injector, decorators: [{ type: Optional }] }
|
|
36006
|
+
];
|
|
36007
|
+
IgxComboBaseDirective.propDecorators = {
|
|
36008
|
+
overlaySettings: [{ type: Input }],
|
|
36009
|
+
id: [{ type: HostBinding, args: ['attr.id',] }, { type: Input }],
|
|
36010
|
+
width: [{ type: HostBinding, args: ['style.width',] }, { type: Input }],
|
|
36011
|
+
allowCustomValues: [{ type: Input }],
|
|
36012
|
+
itemsMaxHeight: [{ type: Input }],
|
|
36013
|
+
itemHeight: [{ type: Input }],
|
|
36014
|
+
itemsWidth: [{ type: Input }],
|
|
36015
|
+
placeholder: [{ type: Input }],
|
|
36016
|
+
data: [{ type: Input }],
|
|
36017
|
+
valueKey: [{ type: Input }],
|
|
36018
|
+
displayKey: [{ type: Input }],
|
|
36019
|
+
groupKey: [{ type: Input }],
|
|
36020
|
+
ariaLabelledBy: [{ type: Input }, { type: HostBinding, args: ['attr.aria-labelledby',] }],
|
|
36021
|
+
cssClass: [{ type: HostBinding, args: ['class.igx-combo',] }],
|
|
36022
|
+
role: [{ type: HostBinding, args: [`attr.role`,] }],
|
|
36023
|
+
ariaExpanded: [{ type: HostBinding, args: ['attr.aria-expanded',] }],
|
|
36024
|
+
hasPopUp: [{ type: HostBinding, args: ['attr.aria-haspopup',] }],
|
|
36025
|
+
ariaOwns: [{ type: HostBinding, args: ['attr.aria-owns',] }],
|
|
36026
|
+
disabled: [{ type: Input }],
|
|
36027
|
+
type: [{ type: Input }],
|
|
36028
|
+
selectionChanging: [{ type: Output }],
|
|
36029
|
+
opening: [{ type: Output }],
|
|
36030
|
+
opened: [{ type: Output }],
|
|
36031
|
+
closing: [{ type: Output }],
|
|
36032
|
+
closed: [{ type: Output }],
|
|
36033
|
+
addition: [{ type: Output }],
|
|
36034
|
+
searchInputUpdate: [{ type: Output }],
|
|
36035
|
+
dataPreLoad: [{ type: Output }],
|
|
36036
|
+
itemTemplate: [{ type: ContentChild, args: [IgxComboItemDirective, { read: TemplateRef },] }],
|
|
36037
|
+
headerTemplate: [{ type: ContentChild, args: [IgxComboHeaderDirective, { read: TemplateRef },] }],
|
|
36038
|
+
footerTemplate: [{ type: ContentChild, args: [IgxComboFooterDirective, { read: TemplateRef },] }],
|
|
36039
|
+
headerItemTemplate: [{ type: ContentChild, args: [IgxComboHeaderItemDirective, { read: TemplateRef },] }],
|
|
36040
|
+
addItemTemplate: [{ type: ContentChild, args: [IgxComboAddItemDirective, { read: TemplateRef },] }],
|
|
36041
|
+
emptyTemplate: [{ type: ContentChild, args: [IgxComboEmptyDirective, { read: TemplateRef },] }],
|
|
36042
|
+
toggleIconTemplate: [{ type: ContentChild, args: [IgxComboToggleIconDirective, { read: TemplateRef },] }],
|
|
36043
|
+
clearIconTemplate: [{ type: ContentChild, args: [IgxComboClearIconDirective, { read: TemplateRef },] }],
|
|
36044
|
+
inputGroup: [{ type: ViewChild, args: ['inputGroup', { read: IgxInputGroupComponent, static: true },] }],
|
|
36045
|
+
comboInput: [{ type: ViewChild, args: ['comboInput', { read: IgxInputDirective, static: true },] }],
|
|
36046
|
+
searchInput: [{ type: ViewChild, args: ['searchInput',] }],
|
|
36047
|
+
virtualScrollContainer: [{ type: ViewChild, args: [IgxForOfDirective, { static: true },] }],
|
|
36048
|
+
virtDir: [{ type: ViewChild, args: [IgxForOfDirective, { read: IgxForOfDirective, static: true },] }],
|
|
36049
|
+
dropdownContainer: [{ type: ViewChild, args: ['dropdownItemContainer', { static: true },] }],
|
|
36050
|
+
primitiveTemplate: [{ type: ViewChild, args: ['primitive', { read: TemplateRef, static: true },] }],
|
|
36051
|
+
complexTemplate: [{ type: ViewChild, args: ['complex', { read: TemplateRef, static: true },] }],
|
|
36052
|
+
onArrowDown: [{ type: HostListener, args: ['keydown.ArrowDown', ['$event'],] }, { type: HostListener, args: ['keydown.Alt.ArrowDown', ['$event'],] }]
|
|
36053
|
+
};
|
|
36054
|
+
|
|
36055
|
+
/**
|
|
36056
|
+
* @hidden
|
|
36057
|
+
*/
|
|
36058
|
+
class IgxComboAddItemComponent extends IgxComboItemComponent {
|
|
36059
|
+
get selected() {
|
|
36060
|
+
return false;
|
|
36061
|
+
}
|
|
36062
|
+
set selected(value) {
|
|
36317
36063
|
}
|
|
36318
36064
|
/**
|
|
36319
|
-
* @
|
|
36065
|
+
* @inheritdoc
|
|
36320
36066
|
*/
|
|
36321
|
-
|
|
36322
|
-
|
|
36323
|
-
|
|
36324
|
-
|
|
36325
|
-
|
|
36326
|
-
|
|
36067
|
+
clicked(event) {
|
|
36068
|
+
this.comboAPI.disableTransitions = false;
|
|
36069
|
+
this.comboAPI.add_custom_item();
|
|
36070
|
+
}
|
|
36071
|
+
}
|
|
36072
|
+
IgxComboAddItemComponent.decorators = [
|
|
36073
|
+
{ type: Component, args: [{
|
|
36074
|
+
selector: 'igx-combo-add-item',
|
|
36075
|
+
template: '<ng-content></ng-content>',
|
|
36076
|
+
providers: [{ provide: IgxComboItemComponent, useExisting: IgxComboAddItemComponent }]
|
|
36077
|
+
},] }
|
|
36078
|
+
];
|
|
36079
|
+
|
|
36080
|
+
/** @hidden */
|
|
36081
|
+
class IgxComboDropDownComponent extends IgxDropDownComponent {
|
|
36082
|
+
constructor(elementRef, cdr, platform, selection, combo, comboAPI, _displayDensityOptions) {
|
|
36083
|
+
super(elementRef, cdr, platform, selection, _displayDensityOptions);
|
|
36084
|
+
this.elementRef = elementRef;
|
|
36085
|
+
this.cdr = cdr;
|
|
36086
|
+
this.platform = platform;
|
|
36087
|
+
this.selection = selection;
|
|
36088
|
+
this.combo = combo;
|
|
36089
|
+
this.comboAPI = comboAPI;
|
|
36090
|
+
this._displayDensityOptions = _displayDensityOptions;
|
|
36091
|
+
/** @hidden @internal */
|
|
36092
|
+
this.singleMode = false;
|
|
36093
|
+
/**
|
|
36094
|
+
* @hidden
|
|
36095
|
+
* @internal
|
|
36096
|
+
*/
|
|
36097
|
+
this.children = null;
|
|
36098
|
+
this.scrollHandler = () => {
|
|
36099
|
+
this.comboAPI.disableTransitions = true;
|
|
36100
|
+
};
|
|
36101
|
+
}
|
|
36102
|
+
/** @hidden @internal */
|
|
36103
|
+
get scrollContainer() {
|
|
36104
|
+
return this.virtDir.dc.location.nativeElement;
|
|
36105
|
+
}
|
|
36106
|
+
get isScrolledToLast() {
|
|
36107
|
+
const scrollTop = this.virtDir.scrollPosition;
|
|
36108
|
+
const scrollHeight = this.virtDir.getScroll().scrollHeight;
|
|
36109
|
+
return Math.floor(scrollTop + this.virtDir.igxForContainerSize) === scrollHeight;
|
|
36110
|
+
}
|
|
36111
|
+
get lastVisibleIndex() {
|
|
36112
|
+
return this.combo.totalItemCount ?
|
|
36113
|
+
Math.floor(this.combo.itemsMaxHeight / this.combo.itemHeight) :
|
|
36114
|
+
this.items.length - 1;
|
|
36115
|
+
}
|
|
36116
|
+
get sortedChildren() {
|
|
36117
|
+
if (this.children !== undefined) {
|
|
36118
|
+
return this.children.toArray()
|
|
36119
|
+
.sort((a, b) => a.index - b.index);
|
|
36120
|
+
}
|
|
36121
|
+
return null;
|
|
36122
|
+
}
|
|
36123
|
+
/**
|
|
36124
|
+
* Get all non-header items
|
|
36125
|
+
*
|
|
36126
|
+
* ```typescript
|
|
36127
|
+
* let myDropDownItems = this.dropdown.items;
|
|
36128
|
+
* ```
|
|
36129
|
+
*/
|
|
36130
|
+
get items() {
|
|
36131
|
+
const items = [];
|
|
36132
|
+
if (this.children !== undefined) {
|
|
36133
|
+
const sortedChildren = this.sortedChildren;
|
|
36134
|
+
for (const child of sortedChildren) {
|
|
36135
|
+
if (!child.isHeader) {
|
|
36136
|
+
items.push(child);
|
|
36137
|
+
}
|
|
36138
|
+
}
|
|
36139
|
+
}
|
|
36140
|
+
return items;
|
|
36327
36141
|
}
|
|
36328
36142
|
/**
|
|
36329
36143
|
* @hidden @internal
|
|
36330
36144
|
*/
|
|
36331
|
-
|
|
36332
|
-
this.
|
|
36145
|
+
onFocus() {
|
|
36146
|
+
this.focusedItem = this._focusedItem || this.items[0];
|
|
36333
36147
|
}
|
|
36334
36148
|
/**
|
|
36335
36149
|
* @hidden @internal
|
|
36336
36150
|
*/
|
|
36337
|
-
|
|
36338
|
-
this.
|
|
36151
|
+
onBlur(_evt) {
|
|
36152
|
+
this.focusedItem = null;
|
|
36339
36153
|
}
|
|
36340
36154
|
/**
|
|
36341
36155
|
* @hidden @internal
|
|
36342
36156
|
*/
|
|
36343
|
-
|
|
36344
|
-
this.
|
|
36157
|
+
onToggleOpened() {
|
|
36158
|
+
this.opened.emit();
|
|
36345
36159
|
}
|
|
36346
36160
|
/**
|
|
36347
36161
|
* @hidden
|
|
36348
36162
|
*/
|
|
36349
|
-
|
|
36350
|
-
|
|
36163
|
+
navigateFirst() {
|
|
36164
|
+
this.navigateItem(this.virtDir.igxForOf.findIndex(e => !e.isHeader));
|
|
36351
36165
|
}
|
|
36352
36166
|
/**
|
|
36353
|
-
* @hidden
|
|
36167
|
+
* @hidden
|
|
36354
36168
|
*/
|
|
36355
|
-
|
|
36356
|
-
this.
|
|
36357
|
-
|
|
36358
|
-
return this.itemTemplate;
|
|
36169
|
+
navigatePrev() {
|
|
36170
|
+
if (this._focusedItem && this._focusedItem.index === 0 && this.virtDir.state.startIndex === 0) {
|
|
36171
|
+
this.combo.focusSearchInput(false);
|
|
36359
36172
|
}
|
|
36360
|
-
|
|
36361
|
-
|
|
36173
|
+
else {
|
|
36174
|
+
super.navigatePrev();
|
|
36175
|
+
}
|
|
36176
|
+
}
|
|
36177
|
+
/**
|
|
36178
|
+
* @hidden
|
|
36179
|
+
*/
|
|
36180
|
+
navigateNext() {
|
|
36181
|
+
const lastIndex = this.combo.totalItemCount ? this.combo.totalItemCount - 1 : this.virtDir.igxForOf.length - 1;
|
|
36182
|
+
if (this._focusedItem && this._focusedItem.index === lastIndex) {
|
|
36183
|
+
this.focusAddItemButton();
|
|
36184
|
+
}
|
|
36185
|
+
else {
|
|
36186
|
+
super.navigateNext();
|
|
36362
36187
|
}
|
|
36363
|
-
return this.primitiveTemplate;
|
|
36364
36188
|
}
|
|
36365
36189
|
/**
|
|
36366
36190
|
* @hidden @internal
|
|
36367
36191
|
*/
|
|
36368
|
-
|
|
36369
|
-
|
|
36370
|
-
|
|
36371
|
-
}
|
|
36192
|
+
selectItem(item) {
|
|
36193
|
+
if (item === null || item === undefined) {
|
|
36194
|
+
return;
|
|
36195
|
+
}
|
|
36196
|
+
this.comboAPI.set_selected_item(item.itemID);
|
|
36197
|
+
this._focusedItem = item;
|
|
36372
36198
|
}
|
|
36373
36199
|
/**
|
|
36374
36200
|
* @hidden @internal
|
|
36375
36201
|
*/
|
|
36376
|
-
|
|
36377
|
-
|
|
36202
|
+
updateScrollPosition() {
|
|
36203
|
+
this.virtDir.getScroll().scrollTop = this._scrollPosition;
|
|
36204
|
+
}
|
|
36205
|
+
/**
|
|
36206
|
+
* @hidden @internal
|
|
36207
|
+
*/
|
|
36208
|
+
onItemActionKey(key) {
|
|
36209
|
+
switch (key) {
|
|
36210
|
+
case DropDownActionKey.ENTER:
|
|
36211
|
+
this.handleEnter();
|
|
36212
|
+
break;
|
|
36213
|
+
case DropDownActionKey.SPACE:
|
|
36214
|
+
this.handleSpace();
|
|
36215
|
+
break;
|
|
36216
|
+
case DropDownActionKey.ESCAPE:
|
|
36217
|
+
this.close();
|
|
36218
|
+
}
|
|
36219
|
+
}
|
|
36220
|
+
ngAfterViewInit() {
|
|
36221
|
+
this.virtDir.getScroll().addEventListener('scroll', this.scrollHandler);
|
|
36222
|
+
}
|
|
36223
|
+
/**
|
|
36224
|
+
* @hidden @internal
|
|
36225
|
+
*/
|
|
36226
|
+
ngOnDestroy() {
|
|
36227
|
+
this.virtDir.getScroll().removeEventListener('scroll', this.scrollHandler);
|
|
36228
|
+
this.destroy$.next(true);
|
|
36229
|
+
this.destroy$.complete();
|
|
36230
|
+
}
|
|
36231
|
+
scrollToHiddenItem(_newItem) { }
|
|
36232
|
+
handleEnter() {
|
|
36233
|
+
if (this.isAddItemFocused()) {
|
|
36234
|
+
this.combo.addItemToCollection();
|
|
36378
36235
|
return;
|
|
36379
36236
|
}
|
|
36380
|
-
this.
|
|
36381
|
-
|
|
36382
|
-
|
|
36237
|
+
if (this.singleMode && this.focusedItem) {
|
|
36238
|
+
this.combo.select(this.focusedItem.itemID);
|
|
36239
|
+
}
|
|
36240
|
+
this.close();
|
|
36241
|
+
}
|
|
36242
|
+
handleSpace() {
|
|
36243
|
+
if (this.isAddItemFocused()) {
|
|
36244
|
+
return;
|
|
36383
36245
|
}
|
|
36384
36246
|
else {
|
|
36385
|
-
this.
|
|
36247
|
+
this.selectItem(this.focusedItem);
|
|
36386
36248
|
}
|
|
36387
|
-
|
|
36249
|
+
}
|
|
36250
|
+
isAddItemFocused() {
|
|
36251
|
+
return this.focusedItem instanceof IgxComboAddItemComponent;
|
|
36252
|
+
}
|
|
36253
|
+
focusAddItemButton() {
|
|
36254
|
+
if (this.combo.isAddButtonVisible()) {
|
|
36255
|
+
this.focusedItem = this.items[this.items.length - 1];
|
|
36256
|
+
}
|
|
36257
|
+
}
|
|
36258
|
+
}
|
|
36259
|
+
IgxComboDropDownComponent.decorators = [
|
|
36260
|
+
{ type: Component, args: [{
|
|
36261
|
+
selector: 'igx-combo-drop-down',
|
|
36262
|
+
template: "<div class=\"igx-drop-down__list\" [style.width]=\"width\"\nigxToggle\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]=\"this.listId\" role=\"listbox\" [attr.aria-label]=\"this.listId\"\n [style.height]=\"height\"\n [style.maxHeight]=\"maxHeight\">\n <ng-container *ngIf=\"!collapsed\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n</div>\n",
|
|
36263
|
+
providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxComboDropDownComponent }]
|
|
36264
|
+
},] }
|
|
36265
|
+
];
|
|
36266
|
+
IgxComboDropDownComponent.ctorParameters = () => [
|
|
36267
|
+
{ type: ElementRef },
|
|
36268
|
+
{ type: ChangeDetectorRef },
|
|
36269
|
+
{ type: PlatformUtil },
|
|
36270
|
+
{ type: IgxSelectionAPIService },
|
|
36271
|
+
{ type: undefined, decorators: [{ type: Inject, args: [IGX_COMBO_COMPONENT,] }] },
|
|
36272
|
+
{ type: IgxComboAPIService },
|
|
36273
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DisplayDensityToken,] }] }
|
|
36274
|
+
];
|
|
36275
|
+
IgxComboDropDownComponent.propDecorators = {
|
|
36276
|
+
singleMode: [{ type: Input }],
|
|
36277
|
+
children: [{ type: ContentChildren, args: [IgxComboItemComponent, { descendants: true },] }]
|
|
36278
|
+
};
|
|
36279
|
+
|
|
36280
|
+
/**
|
|
36281
|
+
* @hidden
|
|
36282
|
+
*/
|
|
36283
|
+
class IgxComboFilteringPipe {
|
|
36284
|
+
transform(collection, searchValue, displayKey, filteringOptions, shouldFilter = false) {
|
|
36285
|
+
if (!collection) {
|
|
36286
|
+
return [];
|
|
36287
|
+
}
|
|
36288
|
+
if (!searchValue || !shouldFilter) {
|
|
36289
|
+
return collection;
|
|
36290
|
+
}
|
|
36291
|
+
else {
|
|
36292
|
+
const searchTerm = filteringOptions.caseSensitive ? searchValue.trim() : searchValue.toLowerCase().trim();
|
|
36293
|
+
if (displayKey != null) {
|
|
36294
|
+
return collection.filter(e => filteringOptions.caseSensitive ? e[displayKey].includes(searchTerm) :
|
|
36295
|
+
e[displayKey].toString().toLowerCase().includes(searchTerm));
|
|
36296
|
+
}
|
|
36297
|
+
else {
|
|
36298
|
+
return collection.filter(e => filteringOptions.caseSensitive ? e.includes(searchTerm) :
|
|
36299
|
+
e.toString().toLowerCase().includes(searchTerm));
|
|
36300
|
+
}
|
|
36301
|
+
}
|
|
36302
|
+
}
|
|
36303
|
+
}
|
|
36304
|
+
IgxComboFilteringPipe.decorators = [
|
|
36305
|
+
{ type: Pipe, args: [{
|
|
36306
|
+
name: 'comboFiltering'
|
|
36307
|
+
},] }
|
|
36308
|
+
];
|
|
36309
|
+
/**
|
|
36310
|
+
* @hidden
|
|
36311
|
+
*/
|
|
36312
|
+
class IgxComboGroupingPipe {
|
|
36313
|
+
constructor(combo) {
|
|
36314
|
+
this.combo = combo;
|
|
36315
|
+
}
|
|
36316
|
+
transform(collection, groupKey, valueKey) {
|
|
36317
|
+
this.combo.filteredData = collection;
|
|
36318
|
+
if ((!groupKey && groupKey !== 0) || !collection.length) {
|
|
36319
|
+
return collection;
|
|
36320
|
+
}
|
|
36321
|
+
const sorted = DataUtil.sort(cloneArray(collection), [{
|
|
36322
|
+
fieldName: groupKey,
|
|
36323
|
+
dir: SortingDirection.Asc,
|
|
36324
|
+
ignoreCase: true,
|
|
36325
|
+
strategy: DefaultSortingStrategy.instance()
|
|
36326
|
+
}]);
|
|
36327
|
+
const data = cloneArray(sorted);
|
|
36328
|
+
let inserts = 0;
|
|
36329
|
+
let currentHeader = null;
|
|
36330
|
+
for (let i = 0; i < sorted.length; i++) {
|
|
36331
|
+
let insertFlag = 0;
|
|
36332
|
+
if (currentHeader !== sorted[i][groupKey]) {
|
|
36333
|
+
currentHeader = sorted[i][groupKey];
|
|
36334
|
+
insertFlag = 1;
|
|
36335
|
+
}
|
|
36336
|
+
if (insertFlag) {
|
|
36337
|
+
data.splice(i + inserts, 0, {
|
|
36338
|
+
[valueKey]: currentHeader,
|
|
36339
|
+
[groupKey]: currentHeader,
|
|
36340
|
+
isHeader: true
|
|
36341
|
+
});
|
|
36342
|
+
inserts++;
|
|
36343
|
+
}
|
|
36344
|
+
}
|
|
36345
|
+
return data;
|
|
36346
|
+
}
|
|
36347
|
+
}
|
|
36348
|
+
IgxComboGroupingPipe.decorators = [
|
|
36349
|
+
{ type: Pipe, args: [{
|
|
36350
|
+
name: 'comboGrouping'
|
|
36351
|
+
},] }
|
|
36352
|
+
];
|
|
36353
|
+
IgxComboGroupingPipe.ctorParameters = () => [
|
|
36354
|
+
{ type: undefined, decorators: [{ type: Inject, args: [IGX_COMBO_COMPONENT,] }] }
|
|
36355
|
+
];
|
|
36356
|
+
|
|
36357
|
+
/**
|
|
36358
|
+
* When called with sets A & B, returns A - B (as array);
|
|
36359
|
+
*
|
|
36360
|
+
* @hidden
|
|
36361
|
+
*/
|
|
36362
|
+
const diffInSets = (set1, set2) => {
|
|
36363
|
+
const results = [];
|
|
36364
|
+
set1.forEach(entry => {
|
|
36365
|
+
if (!set2.has(entry)) {
|
|
36366
|
+
results.push(entry);
|
|
36367
|
+
}
|
|
36368
|
+
});
|
|
36369
|
+
return results;
|
|
36370
|
+
};
|
|
36371
|
+
const ɵ0$1 = diffInSets;
|
|
36372
|
+
/**
|
|
36373
|
+
* Represents a drop-down list that provides editable functionalities, allowing users to choose an option from a predefined list.
|
|
36374
|
+
*
|
|
36375
|
+
* @igxModule IgxComboModule
|
|
36376
|
+
* @igxTheme igx-combo-theme
|
|
36377
|
+
* @igxKeywords combobox, combo selection
|
|
36378
|
+
* @igxGroup Grids & Lists
|
|
36379
|
+
*
|
|
36380
|
+
* @remarks
|
|
36381
|
+
* It provides the ability to filter items as well as perform selection with the provided data.
|
|
36382
|
+
* Additionally, it exposes keyboard navigation and custom styling capabilities.
|
|
36383
|
+
* @example
|
|
36384
|
+
* ```html
|
|
36385
|
+
* <igx-combo [itemsMaxHeight]="250" [data]="locationData"
|
|
36386
|
+
* [displayKey]="'field'" [valueKey]="'field'"
|
|
36387
|
+
* placeholder="Location(s)" searchPlaceholder="Search...">
|
|
36388
|
+
* </igx-combo>
|
|
36389
|
+
* ```
|
|
36390
|
+
*/
|
|
36391
|
+
class IgxComboComponent extends IgxComboBaseDirective {
|
|
36392
|
+
constructor(elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) {
|
|
36393
|
+
super(elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector);
|
|
36394
|
+
this.elementRef = elementRef;
|
|
36395
|
+
this.cdr = cdr;
|
|
36396
|
+
this.selectionService = selectionService;
|
|
36397
|
+
this.comboAPI = comboAPI;
|
|
36398
|
+
this._iconService = _iconService;
|
|
36399
|
+
this._displayDensityOptions = _displayDensityOptions;
|
|
36400
|
+
this._inputGroupType = _inputGroupType;
|
|
36401
|
+
this._injector = _injector;
|
|
36402
|
+
/**
|
|
36403
|
+
* Defines whether the caseSensitive icon should be shown in the search input
|
|
36404
|
+
*
|
|
36405
|
+
* ```typescript
|
|
36406
|
+
* // get
|
|
36407
|
+
* let myComboShowSearchCaseIcon = this.combo.showSearchCaseIcon;
|
|
36408
|
+
* ```
|
|
36409
|
+
*
|
|
36410
|
+
* ```html
|
|
36411
|
+
* <!--set-->
|
|
36412
|
+
* <igx-combo [showSearchCaseIcon]='true'></igx-combo>
|
|
36413
|
+
* ```
|
|
36414
|
+
*/
|
|
36415
|
+
this.showSearchCaseIcon = false;
|
|
36416
|
+
/**
|
|
36417
|
+
* An @Input property that controls whether the combo's search box
|
|
36418
|
+
* should be focused after the `opened` event is called
|
|
36419
|
+
* When `false`, the combo's list item container will be focused instead
|
|
36420
|
+
*/
|
|
36421
|
+
this.autoFocusSearch = true;
|
|
36422
|
+
/**
|
|
36423
|
+
* An @Input property that enabled/disables filtering in the list. The default is `true`.
|
|
36424
|
+
* ```html
|
|
36425
|
+
* <igx-combo [filterable]="false">
|
|
36426
|
+
* ```
|
|
36427
|
+
*/
|
|
36428
|
+
this.filterable = true;
|
|
36429
|
+
/**
|
|
36430
|
+
* Defines the placeholder value for the combo dropdown search field
|
|
36431
|
+
*
|
|
36432
|
+
* ```typescript
|
|
36433
|
+
* // get
|
|
36434
|
+
* let myComboSearchPlaceholder = this.combo.searchPlaceholder;
|
|
36435
|
+
* ```
|
|
36436
|
+
*
|
|
36437
|
+
* ```html
|
|
36438
|
+
* <!--set-->
|
|
36439
|
+
* <igx-combo [searchPlaceholder]='newPlaceHolder'></igx-combo>
|
|
36440
|
+
* ```
|
|
36441
|
+
*/
|
|
36442
|
+
this.searchPlaceholder = 'Enter a Search Term';
|
|
36443
|
+
/**
|
|
36444
|
+
* @hidden @internal
|
|
36445
|
+
*/
|
|
36446
|
+
this.filteringLogic = FilteringLogic.Or;
|
|
36447
|
+
this.stringFilters = IgxStringFilteringOperand;
|
|
36448
|
+
this.booleanFilters = IgxBooleanFilteringOperand;
|
|
36449
|
+
this._prevInputValue = '';
|
|
36450
|
+
this.comboAPI.register(this);
|
|
36388
36451
|
}
|
|
36389
36452
|
/**
|
|
36390
|
-
*
|
|
36391
|
-
*
|
|
36392
|
-
* ```html
|
|
36393
|
-
* <button (click)="combo.toggle()">Toggle Combo</button>
|
|
36394
|
-
* <igx-combo #combo></igx-combo>
|
|
36395
|
-
* ```
|
|
36453
|
+
* @hidden @internal
|
|
36396
36454
|
*/
|
|
36397
|
-
|
|
36398
|
-
|
|
36399
|
-
|
|
36455
|
+
get inputEmpty() {
|
|
36456
|
+
return !this.value && !this.placeholder;
|
|
36457
|
+
}
|
|
36458
|
+
/** @hidden @internal */
|
|
36459
|
+
get filteredData() {
|
|
36460
|
+
return this.filterable ? this._filteredData : this.data;
|
|
36461
|
+
}
|
|
36462
|
+
/** @hidden @internal */
|
|
36463
|
+
set filteredData(val) {
|
|
36464
|
+
this._filteredData = this.groupKey ? (val || []).filter((e) => e.isHeader !== true) : val;
|
|
36465
|
+
this.checkMatch();
|
|
36466
|
+
}
|
|
36467
|
+
/** @hidden @internal */
|
|
36468
|
+
get displaySearchInput() {
|
|
36469
|
+
return this.filterable || this.allowCustomValues;
|
|
36400
36470
|
}
|
|
36401
36471
|
/**
|
|
36402
|
-
*
|
|
36403
|
-
*
|
|
36404
|
-
* ```html
|
|
36405
|
-
* <button (click)="combo.open()">Open Combo</button>
|
|
36406
|
-
* <igx-combo #combo></igx-combo>
|
|
36407
|
-
* ```
|
|
36472
|
+
* @hidden @internal
|
|
36408
36473
|
*/
|
|
36409
|
-
|
|
36410
|
-
|
|
36411
|
-
|
|
36474
|
+
handleKeyUp(event) {
|
|
36475
|
+
// TODO: use PlatformUtil for keyboard navigation
|
|
36476
|
+
if (event.key === 'ArrowDown' || event.key === 'Down') {
|
|
36477
|
+
this.dropdown.focusedItem = this.dropdown.items[0];
|
|
36478
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36479
|
+
}
|
|
36480
|
+
else if (event.key === 'Escape' || event.key === 'Esc') {
|
|
36481
|
+
this.toggle();
|
|
36482
|
+
}
|
|
36412
36483
|
}
|
|
36413
36484
|
/**
|
|
36414
|
-
*
|
|
36415
|
-
*
|
|
36416
|
-
* ```html
|
|
36417
|
-
* <button (click)="combo.close()">Close Combo</button>
|
|
36418
|
-
* <igx-combo #combo></igx-combo>
|
|
36419
|
-
* ```
|
|
36485
|
+
* @hidden @internal
|
|
36420
36486
|
*/
|
|
36421
|
-
|
|
36422
|
-
|
|
36487
|
+
handleSelectAll(evt) {
|
|
36488
|
+
if (evt.checked) {
|
|
36489
|
+
this.selectAllItems();
|
|
36490
|
+
}
|
|
36491
|
+
else {
|
|
36492
|
+
this.deselectAllItems();
|
|
36493
|
+
}
|
|
36423
36494
|
}
|
|
36424
36495
|
/**
|
|
36425
|
-
*
|
|
36426
|
-
*
|
|
36427
|
-
* ```typescript
|
|
36428
|
-
* let state = this.combo.collapsed;
|
|
36429
|
-
* ```
|
|
36496
|
+
* @hidden @internal
|
|
36430
36497
|
*/
|
|
36431
|
-
|
|
36432
|
-
|
|
36498
|
+
writeValue(value) {
|
|
36499
|
+
const selection = Array.isArray(value) ? value : [];
|
|
36500
|
+
const oldSelection = this.selection;
|
|
36501
|
+
this.selectionService.select_items(this.id, selection, true);
|
|
36502
|
+
this.cdr.markForCheck();
|
|
36503
|
+
this._value = this.createDisplayText(this.selection, oldSelection);
|
|
36433
36504
|
}
|
|
36434
36505
|
/**
|
|
36435
|
-
*
|
|
36436
|
-
*
|
|
36437
|
-
* @returns Array of selected items
|
|
36438
|
-
* ```typescript
|
|
36439
|
-
* let selectedItems = this.combo.selectedItems();
|
|
36440
|
-
* ```
|
|
36506
|
+
* @hidden
|
|
36441
36507
|
*/
|
|
36442
|
-
|
|
36443
|
-
|
|
36444
|
-
|
|
36508
|
+
getEditElement() {
|
|
36509
|
+
return this.comboInput.nativeElement;
|
|
36510
|
+
}
|
|
36511
|
+
/**
|
|
36512
|
+
* @hidden @internal
|
|
36513
|
+
*/
|
|
36514
|
+
get context() {
|
|
36515
|
+
return {
|
|
36516
|
+
$implicit: this
|
|
36517
|
+
};
|
|
36518
|
+
}
|
|
36519
|
+
/**
|
|
36520
|
+
* @hidden @internal
|
|
36521
|
+
*/
|
|
36522
|
+
handleClearItems(event) {
|
|
36523
|
+
if (this.disabled) {
|
|
36524
|
+
return;
|
|
36525
|
+
}
|
|
36526
|
+
this.deselectAllItems(true, event);
|
|
36527
|
+
if (this.collapsed) {
|
|
36528
|
+
this.getEditElement().focus();
|
|
36529
|
+
}
|
|
36530
|
+
else {
|
|
36531
|
+
this.focusSearchInput(true);
|
|
36532
|
+
}
|
|
36533
|
+
event.stopPropagation();
|
|
36445
36534
|
}
|
|
36446
36535
|
/**
|
|
36447
36536
|
* Select defined items
|
|
@@ -36449,12 +36538,12 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36449
36538
|
* @param newItems new items to be selected
|
|
36450
36539
|
* @param clearCurrentSelection if true clear previous selected items
|
|
36451
36540
|
* ```typescript
|
|
36452
|
-
* this.combo.
|
|
36541
|
+
* this.combo.select(["New York", "New Jersey"]);
|
|
36453
36542
|
* ```
|
|
36454
36543
|
*/
|
|
36455
|
-
|
|
36544
|
+
select(newItems, clearCurrentSelection, event) {
|
|
36456
36545
|
if (newItems) {
|
|
36457
|
-
const newSelection = this.
|
|
36546
|
+
const newSelection = this.selectionService.add_items(this.id, newItems, clearCurrentSelection);
|
|
36458
36547
|
this.setSelection(newSelection, event);
|
|
36459
36548
|
}
|
|
36460
36549
|
}
|
|
@@ -36463,12 +36552,12 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36463
36552
|
*
|
|
36464
36553
|
* @param items items to deselected
|
|
36465
36554
|
* ```typescript
|
|
36466
|
-
* this.combo.
|
|
36555
|
+
* this.combo.deselect(["New York", "New Jersey"]);
|
|
36467
36556
|
* ```
|
|
36468
36557
|
*/
|
|
36469
|
-
|
|
36558
|
+
deselect(items, event) {
|
|
36470
36559
|
if (items) {
|
|
36471
|
-
const newSelection = this.
|
|
36560
|
+
const newSelection = this.selectionService.delete_items(this.id, items);
|
|
36472
36561
|
this.setSelection(newSelection, event);
|
|
36473
36562
|
}
|
|
36474
36563
|
}
|
|
@@ -36481,8 +36570,8 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36481
36570
|
* ```
|
|
36482
36571
|
*/
|
|
36483
36572
|
selectAllItems(ignoreFilter, event) {
|
|
36484
|
-
const allVisible = this.
|
|
36485
|
-
const newSelection = this.
|
|
36573
|
+
const allVisible = this.selectionService.get_all_ids(ignoreFilter ? this.data : this.filteredData, this.valueKey);
|
|
36574
|
+
const newSelection = this.selectionService.add_items(this.id, allVisible);
|
|
36486
36575
|
this.setSelection(newSelection, event);
|
|
36487
36576
|
}
|
|
36488
36577
|
/**
|
|
@@ -36494,9 +36583,9 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36494
36583
|
* ```
|
|
36495
36584
|
*/
|
|
36496
36585
|
deselectAllItems(ignoreFilter, event) {
|
|
36497
|
-
let newSelection = this.
|
|
36586
|
+
let newSelection = this.selectionService.get_empty();
|
|
36498
36587
|
if (this.filteredData.length !== this.data.length && !ignoreFilter) {
|
|
36499
|
-
newSelection = this.
|
|
36588
|
+
newSelection = this.selectionService.delete_items(this.id, this.selectionService.get_all_ids(this.filteredData, this.valueKey));
|
|
36500
36589
|
}
|
|
36501
36590
|
this.setSelection(newSelection, event);
|
|
36502
36591
|
}
|
|
@@ -36524,26 +36613,19 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36524
36613
|
return;
|
|
36525
36614
|
}
|
|
36526
36615
|
if (select) {
|
|
36527
|
-
this.
|
|
36616
|
+
this.select([itemID], false, event);
|
|
36528
36617
|
}
|
|
36529
36618
|
else {
|
|
36530
|
-
this.
|
|
36619
|
+
this.deselect([itemID], event);
|
|
36531
36620
|
}
|
|
36532
36621
|
}
|
|
36533
|
-
/**
|
|
36534
|
-
* Event handlers
|
|
36535
|
-
*
|
|
36536
|
-
* @hidden
|
|
36537
|
-
* @internal
|
|
36538
|
-
*/
|
|
36539
|
-
handleOpening(e) {
|
|
36540
|
-
const args = { owner: this, event: e.event, cancel: e.cancel };
|
|
36541
|
-
this.opening.emit(args);
|
|
36542
|
-
e.cancel = args.cancel;
|
|
36543
|
-
}
|
|
36544
36622
|
/**
|
|
36545
36623
|
* @hidden @internal
|
|
36546
36624
|
*/
|
|
36625
|
+
toggleCaseSensitive() {
|
|
36626
|
+
this.filteringOptions = { caseSensitive: !this.filteringOptions.caseSensitive };
|
|
36627
|
+
}
|
|
36628
|
+
/** @hidden @internal */
|
|
36547
36629
|
handleOpened() {
|
|
36548
36630
|
this.triggerCheck();
|
|
36549
36631
|
// Disabling focus of the search input should happen only when drop down opens.
|
|
@@ -36557,36 +36639,26 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36557
36639
|
}
|
|
36558
36640
|
this.opened.emit({ owner: this });
|
|
36559
36641
|
}
|
|
36560
|
-
/**
|
|
36561
|
-
|
|
36562
|
-
|
|
36563
|
-
|
|
36564
|
-
|
|
36565
|
-
|
|
36566
|
-
|
|
36567
|
-
|
|
36568
|
-
|
|
36642
|
+
/** @hidden @internal */
|
|
36643
|
+
focusSearchInput(opening) {
|
|
36644
|
+
if (this.displaySearchInput && this.searchInput) {
|
|
36645
|
+
this.searchInput.nativeElement.focus();
|
|
36646
|
+
}
|
|
36647
|
+
else {
|
|
36648
|
+
if (opening) {
|
|
36649
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36650
|
+
}
|
|
36651
|
+
else {
|
|
36652
|
+
this.comboInput.nativeElement.focus();
|
|
36653
|
+
this.toggle();
|
|
36654
|
+
}
|
|
36569
36655
|
}
|
|
36570
|
-
this.searchValue = '';
|
|
36571
|
-
this.comboInput.nativeElement.focus();
|
|
36572
|
-
}
|
|
36573
|
-
/**
|
|
36574
|
-
* @hidden @internal
|
|
36575
|
-
*/
|
|
36576
|
-
handleClosed() {
|
|
36577
|
-
this.closed.emit({ owner: this });
|
|
36578
|
-
}
|
|
36579
|
-
/**
|
|
36580
|
-
* @hidden @internal
|
|
36581
|
-
*/
|
|
36582
|
-
toggleCaseSensitive() {
|
|
36583
|
-
this.filteringOptions = { caseSensitive: !this.filteringOptions.caseSensitive };
|
|
36584
36656
|
}
|
|
36585
36657
|
setSelection(newSelection, event) {
|
|
36586
|
-
const removed = diffInSets(this.
|
|
36587
|
-
const added = diffInSets(newSelection, this.
|
|
36658
|
+
const removed = diffInSets(this.selectionService.get(this.id), newSelection);
|
|
36659
|
+
const added = diffInSets(newSelection, this.selectionService.get(this.id));
|
|
36588
36660
|
const newSelectionAsArray = Array.from(newSelection);
|
|
36589
|
-
const oldSelectionAsArray = Array.from(this.
|
|
36661
|
+
const oldSelectionAsArray = Array.from(this.selectionService.get(this.id) || []);
|
|
36590
36662
|
const displayText = this.createDisplayText(newSelectionAsArray, oldSelectionAsArray);
|
|
36591
36663
|
const args = {
|
|
36592
36664
|
newSelection: newSelectionAsArray,
|
|
@@ -36600,7 +36672,7 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36600
36672
|
};
|
|
36601
36673
|
this.selectionChanging.emit(args);
|
|
36602
36674
|
if (!args.cancel) {
|
|
36603
|
-
this.
|
|
36675
|
+
this.selectionService.select_items(this.id, args.newSelection, true);
|
|
36604
36676
|
if (displayText !== args.displayText) {
|
|
36605
36677
|
this._value = args.displayText;
|
|
36606
36678
|
}
|
|
@@ -36610,44 +36682,10 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36610
36682
|
this._onChangeCallback(args.newSelection);
|
|
36611
36683
|
}
|
|
36612
36684
|
}
|
|
36613
|
-
|
|
36614
|
-
|
|
36615
|
-
|
|
36616
|
-
|
|
36617
|
-
this.inputGroup.isRequired = error && error.required;
|
|
36618
|
-
}
|
|
36619
|
-
}
|
|
36620
|
-
/** Contains key-value pairs of the selected valueKeys and their resp. displayKeys */
|
|
36621
|
-
registerRemoteEntries(ids, add = true) {
|
|
36622
|
-
if (add) {
|
|
36623
|
-
const selection = this.getValueDisplayPairs(ids);
|
|
36624
|
-
for (const entry of selection) {
|
|
36625
|
-
this._remoteSelection[entry[this.valueKey]] = entry[this.displayKey];
|
|
36626
|
-
}
|
|
36627
|
-
}
|
|
36628
|
-
else {
|
|
36629
|
-
for (const entry of ids) {
|
|
36630
|
-
delete this._remoteSelection[entry];
|
|
36631
|
-
}
|
|
36632
|
-
}
|
|
36633
|
-
}
|
|
36634
|
-
/**
|
|
36635
|
-
* For `id: any[]` returns a mapped `{ [combo.valueKey]: any, [combo.displayKey]: any }[]`
|
|
36636
|
-
*/
|
|
36637
|
-
getValueDisplayPairs(ids) {
|
|
36638
|
-
return this.data.filter(entry => ids.indexOf(entry[this.valueKey]) > -1).map(e => ({
|
|
36639
|
-
[this.valueKey]: e[this.valueKey],
|
|
36640
|
-
[this.displayKey]: e[this.displayKey]
|
|
36641
|
-
}));
|
|
36642
|
-
}
|
|
36643
|
-
checkMatch() {
|
|
36644
|
-
const displayKey = this.displayKey;
|
|
36645
|
-
const matchFn = (e) => {
|
|
36646
|
-
const value = displayKey ? e[displayKey] : e;
|
|
36647
|
-
return value.toString().toLowerCase() === this.searchValue.trim().toLowerCase();
|
|
36648
|
-
};
|
|
36649
|
-
const itemMatch = this.filteredData.some(matchFn);
|
|
36650
|
-
this.customValueFlag = this.allowCustomValues && !itemMatch;
|
|
36685
|
+
createDisplayText(newSelection, oldSelection) {
|
|
36686
|
+
return this.isRemote
|
|
36687
|
+
? this.getRemoteSelection(newSelection, oldSelection)
|
|
36688
|
+
: this.concatDisplayText(newSelection);
|
|
36651
36689
|
}
|
|
36652
36690
|
/** Returns a string that should be populated in the combo's text box */
|
|
36653
36691
|
concatDisplayText(selection) {
|
|
@@ -36656,44 +36694,11 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36656
36694
|
selection.join(', ');
|
|
36657
36695
|
return value;
|
|
36658
36696
|
}
|
|
36659
|
-
/**
|
|
36660
|
-
* Constructs the combo display value
|
|
36661
|
-
* If remote, caches the key displayText
|
|
36662
|
-
* If not, just combine the object.displayKeys
|
|
36663
|
-
*/
|
|
36664
|
-
createDisplayText(newSelection, oldSelection) {
|
|
36665
|
-
let value = '';
|
|
36666
|
-
if (this.isRemote) {
|
|
36667
|
-
if (newSelection.length) {
|
|
36668
|
-
const removedItems = oldSelection.filter(e => newSelection.indexOf(e) < 0);
|
|
36669
|
-
const addedItems = newSelection.filter(e => oldSelection.indexOf(e) < 0);
|
|
36670
|
-
this.registerRemoteEntries(addedItems);
|
|
36671
|
-
this.registerRemoteEntries(removedItems, false);
|
|
36672
|
-
value = Object.keys(this._remoteSelection).map(e => this._remoteSelection[e]).join(', ');
|
|
36673
|
-
}
|
|
36674
|
-
else {
|
|
36675
|
-
// If new selection is empty, clear all items
|
|
36676
|
-
this.registerRemoteEntries(oldSelection, false);
|
|
36677
|
-
}
|
|
36678
|
-
}
|
|
36679
|
-
else {
|
|
36680
|
-
value = this.concatDisplayText(newSelection);
|
|
36681
|
-
}
|
|
36682
|
-
return value;
|
|
36683
|
-
}
|
|
36684
|
-
/** if there is a valueKey - map the keys to data items, else - just return the keys */
|
|
36685
|
-
convertKeysToItems(keys) {
|
|
36686
|
-
if (this.comboAPI.valueKey === null) {
|
|
36687
|
-
return keys;
|
|
36688
|
-
}
|
|
36689
|
-
// map keys vs. filter data to retain the order of the selected items
|
|
36690
|
-
return keys.map(key => this.data.find(entry => entry[this.valueKey] === key)).filter(e => e !== undefined);
|
|
36691
|
-
}
|
|
36692
36697
|
}
|
|
36693
36698
|
IgxComboComponent.decorators = [
|
|
36694
36699
|
{ type: Component, args: [{
|
|
36695
36700
|
selector: 'igx-combo',
|
|
36696
|
-
template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [type]=\"type\" (click)=\"
|
|
36701
|
+
template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [type]=\"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\"></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]=\"value\" readonly [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\" (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"value.length\" aria-label=\"Clear Selection\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\">\n clear\n </igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: this.collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\">\n {{ dropdown.collapsed ? 'arrow_drop_down' : 'arrow_drop_up'}}\n </igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\" [displayDensity]=\"displayDensity\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <igx-input-group *ngIf=\"displaySearchInput\" [displayDensity]=\"displayDensity\" theme=\"material\" class=\"igx-combo__search\">\n <input class=\"igx-combo-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]=\"searchPlaceholder\"\n aria-autocomplete=\"both\" [attr.aria-owns]=\"dropdown.id\" [attr.aria-labelledby]=\"ariaLabelledBy\" />\n <igx-suffix *ngIf=\"showSearchCaseIcon\">\n <igx-icon family=\"imx-icons\" name=\"case-sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n </igx-input-group>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.px]=\"itemsMaxHeight\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" role=\"listbox\" [attr.id]=\"dropdown.id\">\n <igx-combo-item role=\"option\" [itemHeight]='itemHeight' *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterable\n | comboGrouping:groupKey:valueKey;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item.isHeader\" [index]=\"rowIndex\">\n <ng-container *ngIf=\"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 </ng-container>\n <ng-container *ngIf=\"!item.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n aria-label=\"Add Item\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\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>The list is empty</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button igxButton=\"flat\" igxRipple>Add item</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n",
|
|
36697
36702
|
providers: [
|
|
36698
36703
|
IgxComboAPIService,
|
|
36699
36704
|
{ provide: IGX_COMBO_COMPONENT, useExisting: IgxComboComponent },
|
|
@@ -36712,56 +36717,11 @@ IgxComboComponent.ctorParameters = () => [
|
|
|
36712
36717
|
{ type: Injector, decorators: [{ type: Optional }] }
|
|
36713
36718
|
];
|
|
36714
36719
|
IgxComboComponent.propDecorators = {
|
|
36715
|
-
overlaySettings: [{ type: Input }],
|
|
36716
|
-
inputGroup: [{ type: ViewChild, args: ['inputGroup', { read: IgxInputGroupComponent, static: true },] }],
|
|
36717
|
-
comboInput: [{ type: ViewChild, args: ['comboInput', { read: IgxInputDirective, static: true },] }],
|
|
36718
|
-
dropdown: [{ type: ViewChild, args: [IgxComboDropDownComponent, { read: IgxComboDropDownComponent, static: true },] }],
|
|
36719
|
-
searchInput: [{ type: ViewChild, args: ['searchInput',] }],
|
|
36720
|
-
itemTemplate: [{ type: ContentChild, args: [IgxComboItemDirective, { read: TemplateRef },] }],
|
|
36721
|
-
headerTemplate: [{ type: ContentChild, args: [IgxComboHeaderDirective, { read: TemplateRef },] }],
|
|
36722
|
-
footerTemplate: [{ type: ContentChild, args: [IgxComboFooterDirective, { read: TemplateRef },] }],
|
|
36723
|
-
headerItemTemplate: [{ type: ContentChild, args: [IgxComboHeaderItemDirective, { read: TemplateRef },] }],
|
|
36724
|
-
addItemTemplate: [{ type: ContentChild, args: [IgxComboAddItemDirective, { read: TemplateRef },] }],
|
|
36725
|
-
emptyTemplate: [{ type: ContentChild, args: [IgxComboEmptyDirective, { read: TemplateRef },] }],
|
|
36726
|
-
toggleIconTemplate: [{ type: ContentChild, args: [IgxComboToggleIconDirective, { read: TemplateRef },] }],
|
|
36727
|
-
clearIconTemplate: [{ type: ContentChild, args: [IgxComboClearIconDirective, { read: TemplateRef },] }],
|
|
36728
|
-
virtualScrollContainer: [{ type: ViewChild, args: [IgxForOfDirective, { static: true },] }],
|
|
36729
|
-
selectionChanging: [{ type: Output }],
|
|
36730
|
-
opening: [{ type: Output }],
|
|
36731
|
-
opened: [{ type: Output }],
|
|
36732
|
-
closing: [{ type: Output }],
|
|
36733
|
-
closed: [{ type: Output }],
|
|
36734
|
-
addition: [{ type: Output }],
|
|
36735
|
-
searchInputUpdate: [{ type: Output }],
|
|
36736
|
-
dataPreLoad: [{ type: Output }],
|
|
36737
|
-
id: [{ type: HostBinding, args: ['attr.id',] }, { type: Input }],
|
|
36738
|
-
width: [{ type: HostBinding, args: ['style.width',] }, { type: Input }],
|
|
36739
|
-
cssClass: [{ type: HostBinding, args: ['class.igx-combo',] }],
|
|
36740
|
-
role: [{ type: HostBinding, args: [`attr.role`,] }],
|
|
36741
|
-
ariaExpanded: [{ type: HostBinding, args: ['attr.aria-expanded',] }],
|
|
36742
|
-
hasPopUp: [{ type: HostBinding, args: ['attr.aria-haspopup',] }],
|
|
36743
|
-
ariaOwns: [{ type: HostBinding, args: ['attr.aria-owns',] }],
|
|
36744
|
-
allowCustomValues: [{ type: Input }],
|
|
36745
|
-
itemsMaxHeight: [{ type: Input }],
|
|
36746
|
-
itemsWidth: [{ type: Input }],
|
|
36747
|
-
itemHeight: [{ type: Input }],
|
|
36748
|
-
placeholder: [{ type: Input }],
|
|
36749
|
-
searchPlaceholder: [{ type: Input }],
|
|
36750
36720
|
showSearchCaseIcon: [{ type: Input }],
|
|
36751
|
-
data: [{ type: Input }],
|
|
36752
|
-
valueKey: [{ type: Input }],
|
|
36753
|
-
displayKey: [{ type: Input }],
|
|
36754
|
-
groupKey: [{ type: Input }],
|
|
36755
|
-
filterable: [{ type: Input }],
|
|
36756
|
-
ariaLabelledBy: [{ type: Input }, { type: HostBinding, args: ['attr.aria-labelledby',] }],
|
|
36757
|
-
disabled: [{ type: Input }],
|
|
36758
|
-
type: [{ type: Input }],
|
|
36759
36721
|
autoFocusSearch: [{ type: Input }],
|
|
36760
|
-
|
|
36761
|
-
|
|
36762
|
-
|
|
36763
|
-
virtDir: [{ type: ViewChild, args: [IgxForOfDirective, { read: IgxForOfDirective, static: true },] }],
|
|
36764
|
-
onArrowDown: [{ type: HostListener, args: ['keydown.ArrowDown', ['$event'],] }, { type: HostListener, args: ['keydown.Alt.ArrowDown', ['$event'],] }]
|
|
36722
|
+
filterable: [{ type: Input }],
|
|
36723
|
+
searchPlaceholder: [{ type: Input }],
|
|
36724
|
+
dropdown: [{ type: ViewChild, args: [IgxComboDropDownComponent, { static: true },] }]
|
|
36765
36725
|
};
|
|
36766
36726
|
/**
|
|
36767
36727
|
* @hidden
|
|
@@ -36781,6 +36741,8 @@ IgxComboModule.decorators = [
|
|
|
36781
36741
|
IgxComboToggleIconDirective,
|
|
36782
36742
|
IgxComboClearIconDirective],
|
|
36783
36743
|
exports: [IgxComboComponent, IgxComboItemComponent, IgxComboDropDownComponent, IgxComboAddItemComponent,
|
|
36744
|
+
IgxComboGroupingPipe,
|
|
36745
|
+
IgxComboFilteringPipe,
|
|
36784
36746
|
IgxComboItemDirective,
|
|
36785
36747
|
IgxComboEmptyDirective,
|
|
36786
36748
|
IgxComboHeaderItemDirective,
|
|
@@ -36795,6 +36757,284 @@ IgxComboModule.decorators = [
|
|
|
36795
36757
|
},] }
|
|
36796
36758
|
];
|
|
36797
36759
|
|
|
36760
|
+
/**
|
|
36761
|
+
* Represents a drop-down list that provides filtering functionality, allowing users to choose a single option from a predefined list.
|
|
36762
|
+
*
|
|
36763
|
+
* @igxModule IgxSimpleComboModule
|
|
36764
|
+
* @igxTheme igx-combo-theme
|
|
36765
|
+
* @igxKeywords combobox, single combo selection
|
|
36766
|
+
* @igxGroup Grids & Lists
|
|
36767
|
+
*
|
|
36768
|
+
* @remarks
|
|
36769
|
+
* It provides the ability to filter items as well as perform single selection on the provided data.
|
|
36770
|
+
* Additionally, it exposes keyboard navigation and custom styling capabilities.
|
|
36771
|
+
* @example
|
|
36772
|
+
* ```html
|
|
36773
|
+
* <igx-simple-combo [itemsMaxHeight]="250" [data]="locationData"
|
|
36774
|
+
* [displayKey]="'field'" [valueKey]="'field'"
|
|
36775
|
+
* placeholder="Location" searchPlaceholder="Search...">
|
|
36776
|
+
* </igx-simple-combo>
|
|
36777
|
+
* ```
|
|
36778
|
+
*/
|
|
36779
|
+
class IgxSimpleComboComponent extends IgxComboBaseDirective {
|
|
36780
|
+
constructor(elementRef, cdr, selectionService, comboAPI, _iconService, platformUtil, _displayDensityOptions, _inputGroupType, _injector) {
|
|
36781
|
+
super(elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector);
|
|
36782
|
+
this.elementRef = elementRef;
|
|
36783
|
+
this.cdr = cdr;
|
|
36784
|
+
this.selectionService = selectionService;
|
|
36785
|
+
this.comboAPI = comboAPI;
|
|
36786
|
+
this._iconService = _iconService;
|
|
36787
|
+
this.platformUtil = platformUtil;
|
|
36788
|
+
this._displayDensityOptions = _displayDensityOptions;
|
|
36789
|
+
this._inputGroupType = _inputGroupType;
|
|
36790
|
+
this._injector = _injector;
|
|
36791
|
+
/**
|
|
36792
|
+
* Emitted when item selection is changing, before the selection completes
|
|
36793
|
+
*
|
|
36794
|
+
* ```html
|
|
36795
|
+
* <igx-simple-combo (selectionChanging)='handleSelection()'></igx-simple-combo>
|
|
36796
|
+
* ```
|
|
36797
|
+
*/
|
|
36798
|
+
this.selectionChanging = new EventEmitter();
|
|
36799
|
+
/** @hidden @internal */
|
|
36800
|
+
this.composing = false;
|
|
36801
|
+
this._updateInput = false;
|
|
36802
|
+
this.findMatch = (element) => {
|
|
36803
|
+
const value = this.displayKey ? element[this.displayKey] : element;
|
|
36804
|
+
return value.toString().toLowerCase().includes(this.searchValue.trim().toLowerCase());
|
|
36805
|
+
};
|
|
36806
|
+
this.comboAPI.register(this);
|
|
36807
|
+
}
|
|
36808
|
+
/** @hidden @internal */
|
|
36809
|
+
get filteredData() {
|
|
36810
|
+
return this._filteredData;
|
|
36811
|
+
}
|
|
36812
|
+
/** @hidden @internal */
|
|
36813
|
+
set filteredData(val) {
|
|
36814
|
+
this._filteredData = this.groupKey ? (val || []).filter((e) => e.isHeader !== true) : val;
|
|
36815
|
+
this.checkMatch();
|
|
36816
|
+
}
|
|
36817
|
+
/**
|
|
36818
|
+
* Select a defined item
|
|
36819
|
+
*
|
|
36820
|
+
* @param item the item to be selected
|
|
36821
|
+
* ```typescript
|
|
36822
|
+
* this.combo.select("New York");
|
|
36823
|
+
* ```
|
|
36824
|
+
*/
|
|
36825
|
+
select(item) {
|
|
36826
|
+
if (item !== null && item !== undefined) {
|
|
36827
|
+
const newSelection = this.selectionService.add_items(this.id, item instanceof Array ? item : [item], true);
|
|
36828
|
+
this.setSelection(newSelection);
|
|
36829
|
+
}
|
|
36830
|
+
}
|
|
36831
|
+
/**
|
|
36832
|
+
* Deselect a defined item
|
|
36833
|
+
*
|
|
36834
|
+
* @param item the items to be deselected
|
|
36835
|
+
* ```typescript
|
|
36836
|
+
* this.combo.deselect("New York");
|
|
36837
|
+
* ```
|
|
36838
|
+
*/
|
|
36839
|
+
deselect(item) {
|
|
36840
|
+
if (item !== null && item !== undefined) {
|
|
36841
|
+
const newSelection = this.selectionService.delete_items(this.id, item instanceof Array ? item : [item]);
|
|
36842
|
+
this.setSelection(newSelection);
|
|
36843
|
+
}
|
|
36844
|
+
}
|
|
36845
|
+
/** @hidden @internal */
|
|
36846
|
+
writeValue(value) {
|
|
36847
|
+
const oldSelection = this.selection;
|
|
36848
|
+
this.selectionService.select_items(this.id, value ? [value] : [], true);
|
|
36849
|
+
this.cdr.markForCheck();
|
|
36850
|
+
this._value = this.createDisplayText(this.selection, oldSelection);
|
|
36851
|
+
}
|
|
36852
|
+
/** @hidden @internal */
|
|
36853
|
+
ngAfterViewInit() {
|
|
36854
|
+
this.dropdown.opened.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
36855
|
+
if (this.composing) {
|
|
36856
|
+
this.comboInput.focus();
|
|
36857
|
+
}
|
|
36858
|
+
});
|
|
36859
|
+
this.dropdown.closed.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
36860
|
+
this.composing = false;
|
|
36861
|
+
});
|
|
36862
|
+
this.dropdown.closing.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
36863
|
+
const selection = this.selectionService.first_item(this.id);
|
|
36864
|
+
this.comboInput.value = selection !== undefined && selection !== null ? selection : '';
|
|
36865
|
+
});
|
|
36866
|
+
this.dropdown.opening.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
36867
|
+
if (!this.comboInput.value.length) {
|
|
36868
|
+
this.clearSelection();
|
|
36869
|
+
}
|
|
36870
|
+
});
|
|
36871
|
+
super.ngAfterViewInit();
|
|
36872
|
+
}
|
|
36873
|
+
/** @hidden @internal */
|
|
36874
|
+
handleInputChange(event) {
|
|
36875
|
+
this.searchValue = event.target.value;
|
|
36876
|
+
this._onChangeCallback(this.searchValue);
|
|
36877
|
+
if (this.collapsed) {
|
|
36878
|
+
this.open();
|
|
36879
|
+
}
|
|
36880
|
+
super.handleInputChange(event);
|
|
36881
|
+
}
|
|
36882
|
+
/** @hidden @internal */
|
|
36883
|
+
handleKeyDown(event) {
|
|
36884
|
+
if (event.key === this.platformUtil.KEYMAP.ENTER) {
|
|
36885
|
+
const filtered = this.filteredData.find(this.findMatch);
|
|
36886
|
+
if (filtered === null || filtered === undefined) {
|
|
36887
|
+
return;
|
|
36888
|
+
}
|
|
36889
|
+
this.select(this.dropdown.items[0].itemID);
|
|
36890
|
+
event.preventDefault();
|
|
36891
|
+
event.stopPropagation();
|
|
36892
|
+
this.close();
|
|
36893
|
+
return;
|
|
36894
|
+
}
|
|
36895
|
+
if (event.key === this.platformUtil.KEYMAP.BACKSPACE
|
|
36896
|
+
|| event.key === this.platformUtil.KEYMAP.DELETE) {
|
|
36897
|
+
this._updateInput = false;
|
|
36898
|
+
this.clearSelection();
|
|
36899
|
+
}
|
|
36900
|
+
super.handleKeyDown(event);
|
|
36901
|
+
this.composing = event.key !== this.platformUtil.KEYMAP.ARROW_DOWN
|
|
36902
|
+
&& event.key !== this.platformUtil.KEYMAP.ARROW_LEFT
|
|
36903
|
+
&& event.key !== this.platformUtil.KEYMAP.ARROW_RIGHT
|
|
36904
|
+
&& event.key !== this.platformUtil.KEYMAP.TAB;
|
|
36905
|
+
}
|
|
36906
|
+
/** @hidden @internal */
|
|
36907
|
+
handleKeyUp(event) {
|
|
36908
|
+
if (event.key === this.platformUtil.KEYMAP.ARROW_DOWN) {
|
|
36909
|
+
const firstItem = this.selectionService.first_item(this.id);
|
|
36910
|
+
this.dropdown.focusedItem = firstItem && this.filteredData.length > 0
|
|
36911
|
+
? this.dropdown.items.find(i => i.itemID === firstItem)
|
|
36912
|
+
: this.dropdown.items[0];
|
|
36913
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36914
|
+
}
|
|
36915
|
+
}
|
|
36916
|
+
/** @hidden @internal */
|
|
36917
|
+
getEditElement() {
|
|
36918
|
+
return this.comboInput.nativeElement;
|
|
36919
|
+
}
|
|
36920
|
+
/** @hidden @internal */
|
|
36921
|
+
handleClear(event) {
|
|
36922
|
+
if (this.disabled) {
|
|
36923
|
+
return;
|
|
36924
|
+
}
|
|
36925
|
+
this.clearSelection(true);
|
|
36926
|
+
if (this.collapsed) {
|
|
36927
|
+
this.getEditElement().focus();
|
|
36928
|
+
}
|
|
36929
|
+
else {
|
|
36930
|
+
this.focusSearchInput(true);
|
|
36931
|
+
}
|
|
36932
|
+
event.stopPropagation();
|
|
36933
|
+
this.comboInput.value = this.filterValue = this.searchValue = '';
|
|
36934
|
+
this.dropdown.focusedItem = null;
|
|
36935
|
+
this.comboInput.focus();
|
|
36936
|
+
}
|
|
36937
|
+
/** @hidden @internal */
|
|
36938
|
+
handleOpened() {
|
|
36939
|
+
this.triggerCheck();
|
|
36940
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36941
|
+
this.opened.emit({ owner: this });
|
|
36942
|
+
}
|
|
36943
|
+
/** @hidden @internal */
|
|
36944
|
+
focusSearchInput(opening) {
|
|
36945
|
+
if (opening) {
|
|
36946
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36947
|
+
}
|
|
36948
|
+
else {
|
|
36949
|
+
this.comboInput.nativeElement.focus();
|
|
36950
|
+
this.toggle();
|
|
36951
|
+
}
|
|
36952
|
+
}
|
|
36953
|
+
setSelection(newSelection) {
|
|
36954
|
+
const newSelectionAsArray = newSelection ? Array.from(newSelection) : [];
|
|
36955
|
+
const oldSelectionAsArray = Array.from(this.selectionService.get(this.id) || []);
|
|
36956
|
+
const displayText = this.createDisplayText(newSelectionAsArray, oldSelectionAsArray);
|
|
36957
|
+
const args = {
|
|
36958
|
+
newSelection: newSelectionAsArray[0],
|
|
36959
|
+
oldSelection: oldSelectionAsArray[0],
|
|
36960
|
+
displayText,
|
|
36961
|
+
owner: this,
|
|
36962
|
+
cancel: false
|
|
36963
|
+
};
|
|
36964
|
+
this.selectionChanging.emit(args);
|
|
36965
|
+
if (!args.cancel) {
|
|
36966
|
+
const argsSelection = args.newSelection !== undefined
|
|
36967
|
+
&& args.newSelection !== null
|
|
36968
|
+
? [args.newSelection]
|
|
36969
|
+
: [];
|
|
36970
|
+
this.selectionService.select_items(this.id, argsSelection, true);
|
|
36971
|
+
if (this._updateInput) {
|
|
36972
|
+
this._value = displayText !== args.displayText
|
|
36973
|
+
? args.displayText
|
|
36974
|
+
: this.createDisplayText([args.newSelection], [args.oldSelection]);
|
|
36975
|
+
}
|
|
36976
|
+
this._onChangeCallback(args.newSelection);
|
|
36977
|
+
this._updateInput = true;
|
|
36978
|
+
}
|
|
36979
|
+
}
|
|
36980
|
+
createDisplayText(newSelection, oldSelection) {
|
|
36981
|
+
if (this.isRemote) {
|
|
36982
|
+
return this.getRemoteSelection(newSelection, oldSelection);
|
|
36983
|
+
}
|
|
36984
|
+
return this.displayKey !== null && this.displayKey !== undefined
|
|
36985
|
+
? this.convertKeysToItems(newSelection).map(e => e[this.displayKey])[0]
|
|
36986
|
+
: newSelection[0];
|
|
36987
|
+
}
|
|
36988
|
+
clearSelection(ignoreFilter) {
|
|
36989
|
+
let newSelection = this.selectionService.get_empty();
|
|
36990
|
+
if (this.filteredData.length !== this.data.length && !ignoreFilter) {
|
|
36991
|
+
newSelection = this.selectionService.delete_items(this.id, this.selectionService.get_all_ids(this.filteredData, this.valueKey));
|
|
36992
|
+
}
|
|
36993
|
+
this.setSelection(newSelection);
|
|
36994
|
+
}
|
|
36995
|
+
}
|
|
36996
|
+
IgxSimpleComboComponent.decorators = [
|
|
36997
|
+
{ type: Component, args: [{
|
|
36998
|
+
selector: 'igx-simple-combo',
|
|
36999
|
+
template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [type]=\"type\">\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\"></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\n <input #comboInput igxInput [value]=\"value\" (input)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (blur)=\"onBlur()\" [attr.placeholder]=\"placeholder\"\n aria-autocomplete=\"both\" [attr.aria-owns]=\"dropdown.id\" [attr.aria-labelledby]=\"ariaLabelledBy\"\n [disabled]=\"disabled\" [igxTextSelection]=\"!composing\" />\n\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"comboInput.value.length\" aria-label=\"Clear Selection\" class=\"igx-combo__clear-button\"\n (click)=\"handleClear($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\">\n clear\n </igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon (click)=\"onClick($event)\" *ngIf=\"!toggleIconTemplate\">\n {{ dropdown.collapsed ? 'arrow_drop_down' : 'arrow_drop_up'}}\n </igx-icon>\n </igx-suffix>\n</igx-input-group>\n\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\" [displayDensity]=\"displayDensity\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\" [singleMode]=\"true\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.px]=\"itemsMaxHeight\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" role=\"listbox\" [attr.id]=\"dropdown.id\">\n <igx-combo-item role=\"option\" [singleMode]=\"true\" [itemHeight]='itemHeight' (click)=\"close()\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:true\n | comboGrouping:groupKey:valueKey\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item.isHeader\" [index]=\"rowIndex\">\n <ng-container *ngIf=\"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 </ng-container>\n <ng-container *ngIf=\"!item.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n aria-label=\"Add Item\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n\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>The list is empty</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button igxButton=\"flat\" igxRipple>Add item</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n",
|
|
37000
|
+
providers: [
|
|
37001
|
+
IgxComboAPIService,
|
|
37002
|
+
{ provide: IGX_COMBO_COMPONENT, useExisting: IgxSimpleComboComponent },
|
|
37003
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: IgxSimpleComboComponent, multi: true }
|
|
37004
|
+
]
|
|
37005
|
+
},] }
|
|
37006
|
+
];
|
|
37007
|
+
IgxSimpleComboComponent.ctorParameters = () => [
|
|
37008
|
+
{ type: ElementRef },
|
|
37009
|
+
{ type: ChangeDetectorRef },
|
|
37010
|
+
{ type: IgxSelectionAPIService },
|
|
37011
|
+
{ type: IgxComboAPIService },
|
|
37012
|
+
{ type: IgxIconService },
|
|
37013
|
+
{ type: PlatformUtil },
|
|
37014
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DisplayDensityToken,] }] },
|
|
37015
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [IGX_INPUT_GROUP_TYPE,] }] },
|
|
37016
|
+
{ type: Injector, decorators: [{ type: Optional }] }
|
|
37017
|
+
];
|
|
37018
|
+
IgxSimpleComboComponent.propDecorators = {
|
|
37019
|
+
dropdown: [{ type: ViewChild, args: [IgxComboDropDownComponent, { static: true },] }],
|
|
37020
|
+
selectionChanging: [{ type: Output }]
|
|
37021
|
+
};
|
|
37022
|
+
class IgxSimpleComboModule {
|
|
37023
|
+
}
|
|
37024
|
+
IgxSimpleComboModule.decorators = [
|
|
37025
|
+
{ type: NgModule, args: [{
|
|
37026
|
+
declarations: [IgxSimpleComboComponent],
|
|
37027
|
+
imports: [
|
|
37028
|
+
IgxComboModule, IgxRippleModule, CommonModule,
|
|
37029
|
+
IgxInputGroupModule, FormsModule, ReactiveFormsModule,
|
|
37030
|
+
IgxForOfModule, IgxToggleModule, IgxCheckboxModule,
|
|
37031
|
+
IgxDropDownModule, IgxButtonModule, IgxIconModule,
|
|
37032
|
+
IgxTextSelectionModule
|
|
37033
|
+
],
|
|
37034
|
+
exports: [IgxSimpleComboComponent, IgxComboModule]
|
|
37035
|
+
},] }
|
|
37036
|
+
];
|
|
37037
|
+
|
|
36798
37038
|
/** Header orientation in `dialog` mode. */
|
|
36799
37039
|
const PickerHeaderOrientation = mkenum({
|
|
36800
37040
|
Horizontal: 'horizontal',
|
|
@@ -61325,6 +61565,22 @@ class IgxGridComponent extends IgxGridBaseDirective {
|
|
|
61325
61565
|
}
|
|
61326
61566
|
this._hideGroupedColumns = value;
|
|
61327
61567
|
}
|
|
61568
|
+
/**
|
|
61569
|
+
* Gets/Sets the grouping strategy of the grid.
|
|
61570
|
+
*
|
|
61571
|
+
* @remarks The default IgxGrouping extends from IgxSorting and a custom one can be used as a `sortStrategy` as well.
|
|
61572
|
+
*
|
|
61573
|
+
* @example
|
|
61574
|
+
* ```html
|
|
61575
|
+
* <igx-grid #grid [data]="localData" [groupStrategy]="groupStrategy"></igx-grid>
|
|
61576
|
+
* ```
|
|
61577
|
+
*/
|
|
61578
|
+
get groupStrategy() {
|
|
61579
|
+
return this._groupStrategy;
|
|
61580
|
+
}
|
|
61581
|
+
set groupStrategy(value) {
|
|
61582
|
+
this._groupStrategy = value;
|
|
61583
|
+
}
|
|
61328
61584
|
/**
|
|
61329
61585
|
* Gets/Sets the message displayed inside the GroupBy drop area where columns can be dragged on.
|
|
61330
61586
|
*
|
|
@@ -62077,7 +62333,7 @@ IgxGridComponent.decorators = [
|
|
|
62077
62333
|
IgxForOfScrollSyncService
|
|
62078
62334
|
],
|
|
62079
62335
|
selector: 'igx-grid',
|
|
62080
|
-
template: "<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar\"></ng-content>\n\n<!-- Group-by area -->\n<ng-container *ngIf=\"showGroupArea && (groupingExpressions.length > 0 || hasGroupableColumns)\">\n <igx-grid-group-by-area #groupArea [style.flex-basis.px]='outerWidth'\n [grid]=\"this\"\n [expressions]=\"groupingExpressions\"\n [sortingExpressions]=\"sortingExpressions\"\n [density]=\"displayDensity\"\n [dropAreaTemplate]=\"dropAreaTemplate\"\n [dropAreaMessage]=\"dropAreaMessage\"\n >\n </igx-grid-group-by-area>\n</ng-container>\n\n<!-- Grid table head row area -->\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [density]=\"displayDensity\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)='preventContainerScroll($event)'\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth || null' #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf='data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData'>\n <div #pinContainer *ngIf='pinnedData.length > 0'\n [ngClass]=\"{\n 'igx-grid__tr--pinned-bottom': !isRowPinningToTop,\n 'igx-grid__tr--pinned-top': isRowPinningToTop\n }\"\n class='igx-grid__tr--pinned' [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData; let rowIndex = index\">\n <ng-container *ngTemplateOutlet=\"pinned_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger\n | gridGroupBy:groupingExpressions:groupingExpansionState:groupsExpanded:id:groupsRecords:pipeTrigger\n | gridPaging:paginator?.page:paginator?.perPage:id:pipeTrigger\n | gridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:id:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger\n | gridDetails:hasDetails:expansionStates:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight'\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxForTrackBy]='trackChanges'\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\">\n <ng-template\n [igxTemplateOutlet]='getRowTemplate(rowData)'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex)'\n (cachedViewLoaded)='cachedViewLoaded($event)'\n (viewCreated)='viewCreatedHandler($event)'\n (viewMoved)='viewMovedHandler($event)'>\n </ng-template>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData let-disabledRow=\"disabled\">\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\" [disabled]=\"disabledRow\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-grid-row>\n </ng-template>\n <ng-template #pinned_record_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\"#row #pinnedRow>\n </igx-grid-row>\n </ng-template>\n <ng-template #group_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-groupby-row [gridID]=\"id\" [index]=\"rowIndex\" [groupRow]=\"rowData\" [hideGroupRowSelectors]=\"hideRowSelectors\" [rowDraggable]=\"rowDraggable\" #row>\n </igx-grid-groupby-row>\n </ng-template>\n <ng-template #summary_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-summary-row role=\"row\" [gridID]=\"id\" [summaries]=\"rowData.summaries\" [index]=\"rowIndex\"\n class=\"igx-grid__summaries--body\" #summaryRow>\n </igx-grid-summary-row>\n </ng-template>\n <ng-template #detail_template_container let-rowIndex=\"index\" let-rowData>\n <div detail='true' style=\"overflow: auto; width: 100%;\" id=\"{{id}}_{{rowIndex}}\" (pointerdown)='detailsViewFocused(detailsContainer, rowIndex)' #detailsContainer [attr.data-rowindex]='rowIndex'\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr-container--active': isDetailActive(rowIndex)\n }\">\n <div class=\"igx-grid__hierarchical-indent\" style='display: flex;'>\n <ng-container *ngIf=\"this.groupingExpressions.length > 0\">\n <div class=\"igx-grid__row-indentation igx-grid__row-indentation--level-{{groupingExpressions.length}}\"></div>\n </ng-container>\n <ng-template\n [ngTemplateOutlet]='detailTemplate'\n [ngTemplateOutletContext]='getDetailsContext(rowData, rowIndex)'>\n </ng-template>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" (keydown)=\"navigation.summaryNav($event)\" [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='EMPTY_DATA' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-container *ngIf=\"totalRecords || pagingMode === 1\">\n <ng-content select=\"igx-paginator\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_less</igx-icon>\n</ng-template>\n\n <ng-template #defaultCollapsedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_more</igx-icon>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"rowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : rowEditText ? rowEditText : defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"rowEditActions ? rowEditActions : defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n"
|
|
62336
|
+
template: "<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar\"></ng-content>\n\n<!-- Group-by area -->\n<ng-container *ngIf=\"showGroupArea && (groupingExpressions.length > 0 || hasGroupableColumns)\">\n <igx-grid-group-by-area #groupArea [style.flex-basis.px]='outerWidth'\n [grid]=\"this\"\n [expressions]=\"groupingExpressions\"\n [sortingExpressions]=\"sortingExpressions\"\n [density]=\"displayDensity\"\n [dropAreaTemplate]=\"dropAreaTemplate\"\n [dropAreaMessage]=\"dropAreaMessage\"\n >\n </igx-grid-group-by-area>\n</ng-container>\n\n<!-- Grid table head row area -->\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [density]=\"displayDensity\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)='preventContainerScroll($event)'\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth || null' #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf='data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData'>\n <div #pinContainer *ngIf='pinnedData.length > 0'\n [ngClass]=\"{\n 'igx-grid__tr--pinned-bottom': !isRowPinningToTop,\n 'igx-grid__tr--pinned-top': isRowPinningToTop\n }\"\n class='igx-grid__tr--pinned' [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData; let rowIndex = index\">\n <ng-container *ngTemplateOutlet=\"pinned_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger\n | gridGroupBy:groupingExpressions:groupingExpansionState:groupStrategy:groupsExpanded:id:groupsRecords:pipeTrigger\n | gridPaging:paginator?.page:paginator?.perPage:id:pipeTrigger\n | gridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:id:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger\n | gridDetails:hasDetails:expansionStates:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight'\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxForTrackBy]='trackChanges'\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\">\n <ng-template\n [igxTemplateOutlet]='getRowTemplate(rowData)'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex)'\n (cachedViewLoaded)='cachedViewLoaded($event)'\n (viewCreated)='viewCreatedHandler($event)'\n (viewMoved)='viewMovedHandler($event)'>\n </ng-template>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData let-disabledRow=\"disabled\">\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\" [disabled]=\"disabledRow\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-grid-row>\n </ng-template>\n <ng-template #pinned_record_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\"#row #pinnedRow>\n </igx-grid-row>\n </ng-template>\n <ng-template #group_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-groupby-row [gridID]=\"id\" [index]=\"rowIndex\" [groupRow]=\"rowData\" [hideGroupRowSelectors]=\"hideRowSelectors\" [rowDraggable]=\"rowDraggable\" #row>\n </igx-grid-groupby-row>\n </ng-template>\n <ng-template #summary_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-summary-row role=\"row\" [gridID]=\"id\" [summaries]=\"rowData.summaries\" [index]=\"rowIndex\"\n class=\"igx-grid__summaries--body\" #summaryRow>\n </igx-grid-summary-row>\n </ng-template>\n <ng-template #detail_template_container let-rowIndex=\"index\" let-rowData>\n <div detail='true' style=\"overflow: auto; width: 100%;\" id=\"{{id}}_{{rowIndex}}\" (pointerdown)='detailsViewFocused(detailsContainer, rowIndex)' #detailsContainer [attr.data-rowindex]='rowIndex'\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr-container--active': isDetailActive(rowIndex)\n }\">\n <div class=\"igx-grid__hierarchical-indent\" style='display: flex;'>\n <ng-container *ngIf=\"this.groupingExpressions.length > 0\">\n <div class=\"igx-grid__row-indentation igx-grid__row-indentation--level-{{groupingExpressions.length}}\"></div>\n </ng-container>\n <ng-template\n [ngTemplateOutlet]='detailTemplate'\n [ngTemplateOutletContext]='getDetailsContext(rowData, rowIndex)'>\n </ng-template>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" (keydown)=\"navigation.summaryNav($event)\" [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='EMPTY_DATA' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-container *ngIf=\"totalRecords || pagingMode === 1\">\n <ng-content select=\"igx-paginator\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_less</igx-icon>\n</ng-template>\n\n <ng-template #defaultCollapsedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_more</igx-icon>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"rowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : rowEditText ? rowEditText : defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"rowEditActions ? rowEditActions : defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n"
|
|
62081
62337
|
},] }
|
|
62082
62338
|
];
|
|
62083
62339
|
IgxGridComponent.propDecorators = {
|
|
@@ -62103,6 +62359,7 @@ IgxGridComponent.propDecorators = {
|
|
|
62103
62359
|
groupingExpressions: [{ type: Input }],
|
|
62104
62360
|
groupingExpansionState: [{ type: Input }],
|
|
62105
62361
|
hideGroupedColumns: [{ type: Input }],
|
|
62362
|
+
groupStrategy: [{ type: Input }],
|
|
62106
62363
|
dropAreaMessage: [{ type: Input }],
|
|
62107
62364
|
showGroupArea: [{ type: Input }]
|
|
62108
62365
|
};
|
|
@@ -63625,7 +63882,7 @@ class IgxGridGroupingPipe {
|
|
|
63625
63882
|
constructor(gridAPI) {
|
|
63626
63883
|
this.gridAPI = gridAPI;
|
|
63627
63884
|
}
|
|
63628
|
-
transform(collection, expression, expansion, defaultExpanded, id, groupsRecords, _pipeTrigger) {
|
|
63885
|
+
transform(collection, expression, expansion, groupingStrategy, defaultExpanded, id, groupsRecords, _pipeTrigger) {
|
|
63629
63886
|
const state = { expressions: [], expansion: [], defaultExpanded };
|
|
63630
63887
|
const grid = this.gridAPI.grid;
|
|
63631
63888
|
state.expressions = grid.groupingExpressions;
|
|
@@ -63642,7 +63899,7 @@ class IgxGridGroupingPipe {
|
|
|
63642
63899
|
else {
|
|
63643
63900
|
state.expansion = grid.groupingExpansionState;
|
|
63644
63901
|
state.defaultExpanded = grid.groupsExpanded;
|
|
63645
|
-
result = DataUtil.group(cloneArray(collection), state, grid, groupsRecords, fullResult);
|
|
63902
|
+
result = DataUtil.group(cloneArray(collection), state, groupingStrategy, grid, groupsRecords, fullResult);
|
|
63646
63903
|
}
|
|
63647
63904
|
grid.groupingFlatResult = result.data;
|
|
63648
63905
|
grid.groupingResult = fullResult.data;
|
|
@@ -72849,30 +73106,35 @@ class IgxToastComponent extends IgxNotificationsDirective {
|
|
|
72849
73106
|
* @hidden
|
|
72850
73107
|
*/
|
|
72851
73108
|
this.isVisibleChange = new EventEmitter();
|
|
72852
|
-
|
|
72853
|
-
* Sets/gets the position of the toast.
|
|
72854
|
-
* If not set, the `position` attribute will have value `IgxToastPosition.Bottom`.
|
|
72855
|
-
* ```html
|
|
72856
|
-
* <igx-toast [position]="top"></igx-toast>
|
|
72857
|
-
* ```
|
|
72858
|
-
* ```typescript
|
|
72859
|
-
* let toastPosition = this.toast.position;
|
|
72860
|
-
* ```
|
|
72861
|
-
*
|
|
72862
|
-
* @memberof IgxToastComponent
|
|
72863
|
-
*/
|
|
72864
|
-
this.position = 'bottom';
|
|
73109
|
+
this._position = 'bottom';
|
|
72865
73110
|
this._positionSettings = {
|
|
72866
73111
|
horizontalDirection: HorizontalAlignment.Center,
|
|
72867
|
-
verticalDirection:
|
|
72868
|
-
? VerticalAlignment.Bottom
|
|
72869
|
-
: this.position === 'middle'
|
|
72870
|
-
? VerticalAlignment.Middle
|
|
72871
|
-
: VerticalAlignment.Top,
|
|
73112
|
+
verticalDirection: VerticalAlignment.Bottom,
|
|
72872
73113
|
openAnimation: useAnimation(fadeIn),
|
|
72873
73114
|
closeAnimation: useAnimation(fadeOut),
|
|
72874
73115
|
};
|
|
72875
73116
|
}
|
|
73117
|
+
/**
|
|
73118
|
+
* Sets/gets the position of the toast.
|
|
73119
|
+
* If not set, the `position` attribute will have value `IgxToastPosition.Bottom`.
|
|
73120
|
+
* ```html
|
|
73121
|
+
* <igx-toast [position]="top"></igx-toast>
|
|
73122
|
+
* ```
|
|
73123
|
+
* ```typescript
|
|
73124
|
+
* let toastPosition = this.toast.position;
|
|
73125
|
+
* ```
|
|
73126
|
+
*
|
|
73127
|
+
* @memberof IgxToastComponent
|
|
73128
|
+
*/
|
|
73129
|
+
get position() {
|
|
73130
|
+
return this._position;
|
|
73131
|
+
}
|
|
73132
|
+
set position(position) {
|
|
73133
|
+
if (position) {
|
|
73134
|
+
this._position = position;
|
|
73135
|
+
this._positionSettings.verticalDirection = this.calculatePosition();
|
|
73136
|
+
}
|
|
73137
|
+
}
|
|
72876
73138
|
/**
|
|
72877
73139
|
* Get the position and animation settings used by the toast.
|
|
72878
73140
|
* ```typescript
|
|
@@ -72925,10 +73187,13 @@ class IgxToastComponent extends IgxNotificationsDirective {
|
|
|
72925
73187
|
* this.toast.open();
|
|
72926
73188
|
* ```
|
|
72927
73189
|
*/
|
|
72928
|
-
open(message) {
|
|
73190
|
+
open(message, settings) {
|
|
72929
73191
|
if (message !== undefined) {
|
|
72930
73192
|
this.textMessage = message;
|
|
72931
73193
|
}
|
|
73194
|
+
if (settings !== undefined) {
|
|
73195
|
+
this.positionSettings = settings;
|
|
73196
|
+
}
|
|
72932
73197
|
this.strategy = new GlobalPositionStrategy(this.positionSettings);
|
|
72933
73198
|
super.open();
|
|
72934
73199
|
}
|
|
@@ -72960,6 +73225,18 @@ class IgxToastComponent extends IgxNotificationsDirective {
|
|
|
72960
73225
|
this.isVisibleChange.emit(closedEventArgs);
|
|
72961
73226
|
});
|
|
72962
73227
|
}
|
|
73228
|
+
ngOnChanges(changes) {
|
|
73229
|
+
if (changes['position'] && this._positionSettings) {
|
|
73230
|
+
this._positionSettings.verticalDirection = this.calculatePosition();
|
|
73231
|
+
}
|
|
73232
|
+
}
|
|
73233
|
+
calculatePosition() {
|
|
73234
|
+
return this.position === 'bottom'
|
|
73235
|
+
? VerticalAlignment.Bottom
|
|
73236
|
+
: this.position === 'middle'
|
|
73237
|
+
? VerticalAlignment.Middle
|
|
73238
|
+
: VerticalAlignment.Top;
|
|
73239
|
+
}
|
|
72963
73240
|
}
|
|
72964
73241
|
IgxToastComponent.decorators = [
|
|
72965
73242
|
{ type: Component, args: [{
|
|
@@ -72981,6 +73258,9 @@ IgxToastComponent.propDecorators = {
|
|
|
72981
73258
|
position: [{ type: Input }],
|
|
72982
73259
|
positionSettings: [{ type: Input }]
|
|
72983
73260
|
};
|
|
73261
|
+
__decorate([
|
|
73262
|
+
DeprecateProperty('`position` is deprecated. We suggest using `positionSettings` property instead.')
|
|
73263
|
+
], IgxToastComponent.prototype, "position", null);
|
|
72984
73264
|
/**
|
|
72985
73265
|
* @hidden
|
|
72986
73266
|
*/
|
|
@@ -76374,5 +76654,5 @@ IgxTreeModule.decorators = [
|
|
|
76374
76654
|
* Generated bundle index. Do not edit.
|
|
76375
76655
|
*/
|
|
76376
76656
|
|
|
76377
|
-
export { AbsolutePosition, AbsoluteScrollStrategy, AutoPositionStrategy, BaseFilteringStrategy, BaseProgressDirective, BlockScrollStrategy, ButtonGroupAlignment, Calendar, CalendarHammerConfig, CalendarSelection, CalendarView, CarouselAnimationType, CarouselHammerConfig, CarouselIndicatorsOrientation, CloseScrollStrategy, ColumnDisplayOrder, ColumnPinningPosition, ConnectedPositioningStrategy, ContainerPositionStrategy, CsvFileTypes, DEFAULT_OWNER, DataUtil, DatePart, DateRangePickerFormatPipe, DateRangeType, DefaultSortingStrategy, Direction, DisplayDensity, DisplayDensityBase, DisplayDensityToken, DragDirection, ElasticPositionStrategy, ExpansionPanelHeaderIconPosition, ExportRecordType, FilterListItem, FilterMode, FilteringExpressionsTree, FilteringExpressionsTreeType, FilteringLogic, FilteringStrategy, FormattedValuesFilteringStrategy, GlobalPositionStrategy, GridBaseAPIService, GridColumnDataType, GridInstanceType, GridPagingMode, GridSelectionMode, GridSummaryCalculationMode, GridSummaryPosition, GroupedRecords, HeaderType, HorizontalAlignment, IGX_CHECKBOX_REQUIRED_VALIDATOR, IGX_INPUT_GROUP_TYPE, IGX_SWITCH_REQUIRED_VALIDATOR, ITreeGridAggregation, IgxAccordionComponent, IgxAccordionModule, IgxActionStripComponent, IgxActionStripModule, IgxAppendDropStrategy, IgxAutocompleteDirective, IgxAutocompleteModule, IgxAvatarComponent, IgxAvatarModule, IgxAvatarSize, IgxAvatarType, IgxBadgeComponent, IgxBadgeModule, IgxBadgeType, IgxBannerComponent, IgxBannerModule, IgxBaseExporter, IgxBaseTransactionService, IgxBooleanFilteringOperand, IgxBottomNavComponent, IgxBottomNavContentComponent, IgxBottomNavHeaderComponent, IgxBottomNavHeaderIconDirective, IgxBottomNavHeaderLabelDirective, IgxBottomNavItemComponent, IgxBottomNavModule, IgxButtonDirective, IgxButtonGroupComponent, IgxButtonGroupModule, IgxButtonModule, IgxCSVTextDirective, IgxCalendarBaseDirective, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarModule, IgxCalendarMonthDirective, IgxCalendarScrollMonthDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarView, IgxCalendarYearDirective, IgxCardActionsComponent, IgxCardActionsLayout, IgxCardComponent, IgxCardContentDirective, IgxCardFooterDirective, IgxCardHeaderComponent, IgxCardHeaderSubtitleDirective, IgxCardHeaderTitleDirective, IgxCardMediaDirective, IgxCardModule, IgxCardThumbnailDirective, IgxCardType, IgxCarouselComponent, IgxCarouselComponentBase, IgxCarouselModule, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCheckboxComponent, IgxCheckboxModule, IgxCheckboxRequiredDirective, IgxChipComponent, IgxChipsAreaComponent, IgxChipsModule, IgxCircularProgressBarComponent, IgxCollapsibleIndicatorTemplateDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnActionsModule, IgxColumnComponent, IgxColumnGroupComponent, IgxColumnLayoutComponent, IgxComboComponent, IgxComboModule, IgxComboState, IgxCsvExporterOptions, IgxCsvExporterService, IgxDataLoadingTemplateDirective, IgxDataRecordSorting, IgxDateFilteringOperand, IgxDatePickerComponent, IgxDatePickerModule, IgxDateRangeEndComponent, IgxDateRangeInputsBaseComponent, IgxDateRangePickerComponent, IgxDateRangePickerModule, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent, IgxDateSummaryOperand, IgxDateTimeEditorDirective, IgxDateTimeEditorModule, IgxDateTimeFilteringOperand, IgxDaysViewComponent, IgxDefaultDropStrategy, IgxDialogComponent, IgxDialogModule, IgxDisplayDensityModule, IgxDividerDirective, IgxDividerModule, IgxDividerType, IgxDragDirective, IgxDragDropModule, IgxDragHandleDirective, IgxDragIgnoreDirective, IgxDragLocation, IgxDropDirective, IgxDropDownBaseDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemBaseDirective, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, IgxEmptyListTemplateDirective, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxExpansionPanelModule, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilterDirective, IgxFilterModule, IgxFilterOptions, IgxFilterPipe, IgxFilteringOperand, IgxFlatTransactionFactory, IgxFlexDirective, IgxFocusDirective, IgxFocusModule, IgxForOfContext, IgxForOfDirective, IgxForOfModule, IgxGridAPIService, IgxGridActionsBaseDirective, IgxGridBaseDirective, IgxGridBodyDirective, IgxGridCell, IgxGridCommonModule, IgxGridComponent, IgxGridDetailTemplateDirective, IgxGridEditingActionsComponent, IgxGridExcelStyleFilteringComponent, IgxGridForOfDirective, IgxGridHierarchicalPagingPipe, IgxGridHierarchicalPipe, IgxGridModule, IgxGridPinningActionsComponent, IgxGridRow, IgxGridStateDirective, IgxGridStateModule, IgxGridToolbarActionsDirective, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleDirective, IgxGridTransaction, IgxGroupAreaDropDirective, IgxGroupByRow, IgxGroupByRowTemplateDirective, IgxGroupedTreeGridSorting, IgxGrouping, IgxHeaderCollapseIndicatorDirective, IgxHeaderExpandIndicatorDirective, IgxHierarchicalGridAPIService, IgxHierarchicalGridBaseDirective, IgxHierarchicalGridComponent, IgxHierarchicalGridModule, IgxHierarchicalGridRow, IgxHierarchicalTransactionFactory, IgxHierarchicalTransactionService, IgxHierarchicalTransactionServiceFactory, IgxHintDirective, IgxIconComponent, IgxIconModule, IgxIconService, IgxInputDirective, IgxInputGroupComponent, IgxInputGroupModule, IgxInputState, IgxInsertDropStrategy, IgxLabelDirective, IgxLayoutDirective, IgxLayoutModule, IgxLinearProgressBarComponent, IgxListActionDirective, IgxListBaseDirective, IgxListComponent, IgxListItemComponent, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListModule, IgxListPanState, IgxListThumbnailDirective, IgxMaskDirective, IgxMaskModule, IgxMonthPickerBaseDirective, IgxMonthPickerComponent, IgxMonthsViewComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavbarActionDirective, IgxNavbarComponent, IgxNavbarModule, IgxNavbarTitleDirective, IgxNavigationCloseDirective, IgxNavigationDrawerComponent, IgxNavigationDrawerModule, IgxNavigationModule, IgxNavigationService, IgxNavigationToggleDirective, IgxNumberFilteringOperand, IgxNumberSummaryOperand, IgxOverlayOutletDirective, IgxOverlayService, IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorComponent, IgxPaginatorDirective, IgxPaginatorModule, IgxPaginatorTemplateDirective, IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IgxPickersCommonModule, IgxPrefixDirective, IgxPrefixModule, IgxPrependDropStrategy, IgxProgressBarModule, IgxProgressType, IgxRadioComponent, IgxRadioGroupDirective, IgxRadioModule, IgxRippleDirective, IgxRippleModule, IgxRowCollapsedIndicatorDirective, IgxRowExpandedIndicatorDirective, IgxRowIslandAPIService, IgxRowIslandComponent, IgxSelectComponent, IgxSelectFooterDirective, IgxSelectGroupComponent, IgxSelectHeaderDirective, IgxSelectItemComponent, IgxSelectModule, IgxSelectToggleIconDirective, IgxSlideComponent, IgxSliderComponent, IgxSliderModule, IgxSliderType, IgxSnackbarComponent, IgxSnackbarModule, IgxSorting, IgxSplitterComponent, IgxSplitterModule, IgxSplitterPaneComponent, IgxStringFilteringOperand, IgxSuffixDirective, IgxSuffixModule, IgxSummaryOperand, IgxSummaryRow, IgxSwitchComponent, IgxSwitchModule, IgxSwitchRequiredDirective, IgxTabContentComponent, IgxTabContentDirective, IgxTabHeaderComponent, IgxTabHeaderDirective, IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective, IgxTabItemComponent, IgxTabItemDirective, IgxTabsAlignment, IgxTabsComponent, IgxTabsDirective, IgxTabsModule, IgxTextAlign, IgxTextHighlightDirective, IgxTextHighlightModule, IgxTextSelectionDirective, IgxTextSelectionModule, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IgxTimeFilteringOperand, IgxTimePickerComponent, IgxTimePickerModule, IgxTimeSummaryOperand, IgxToastComponent, IgxToastModule, IgxToastPosition, IgxToggleActionDirective, IgxToggleDirective, IgxToggleModule, IgxTooltipDirective, IgxTooltipModule, IgxTooltipTargetDirective, IgxTransactionService, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeGridAPIService, IgxTreeGridComponent, IgxTreeGridGroupingPipe, IgxTreeGridModule, IgxTreeGridRow, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectMarkerDirective, IgxTreeSelectionType, IgxYearsViewComponent, LabelPosition, NoOpScrollStrategy, NoopFilteringStrategy, NoopSortingStrategy, PagingError, PickerInteractionMode, Point, RadioGroupAlignment, RadioLabelPosition, RelativePosition, RelativePositionStrategy, RowEditPositionStrategy, RowPinningPosition, ScrollMonth, ScrollStrategy, SliderHandle, SortingDirection, SplitterType, SwitchLabelPosition, TickLabelsOrientation, TicksOrientation, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy, TreeGridFormattedValuesFilteringStrategy, TreeGridMatchingRecordsOnlyFilteringStrategy, VerticalAlignment, WEEKDAYS, blink, changei18n, fadeIn, fadeOut, filteringStateDefaults, flipBottom, flipHorBck, flipHorFwd, flipLeft, flipRight, flipTop, flipVerBck, flipVerFwd, getCurrentResourceStrings, getTypeNameForDebugging, growVerIn, growVerOut, heartbeat, hierarchicalTransactionServiceFactory, isDateInRanges, isLeap, monthRange, pulsateBck, pulsateFwd, range, rotateInBl, rotateInBottom, rotateInBr, rotateInCenter, rotateInDiagonal1, rotateInDiagonal2, rotateInHor, rotateInLeft, rotateInRight, rotateInTl, rotateInTop, rotateInTr, rotateInVer, rotateOutBl, rotateOutBottom, rotateOutBr, rotateOutCenter, rotateOutDiagonal1, rotateOutDiagonal2, rotateOutHor, rotateOutLeft, rotateOutRight, rotateOutTl, rotateOutTop, rotateOutTr, rotateOutVer, scaleInBl, scaleInBottom, scaleInBr, scaleInCenter, scaleInHorCenter, scaleInHorLeft, scaleInHorRight, scaleInLeft, scaleInRight, scaleInTl, scaleInTop, scaleInTr, scaleInVerBottom, scaleInVerCenter, scaleInVerTop, scaleOutBl, scaleOutBottom, scaleOutBr, scaleOutCenter, scaleOutHorCenter, scaleOutHorLeft, scaleOutHorRight, scaleOutLeft, scaleOutRight, scaleOutTl, scaleOutTop, scaleOutTr, scaleOutVerBottom, scaleOutVerCenter, scaleOutVerTop, shakeBl, shakeBottom, shakeBr, shakeCenter, shakeHor, shakeLeft, shakeRight, shakeTl, shakeTop, shakeTr, shakeVer, slideInBl, slideInBottom, slideInBr, slideInLeft, slideInRight, slideInTl, slideInTop, slideInTr, slideOutBl, slideOutBottom, slideOutBr, slideOutLeft, slideOutRight, slideOutTl, slideOutTop, slideOutTr, swingInBottomBck, swingInBottomFwd, swingInLeftBck, swingInLeftFwd, swingInRightBck, swingInRightFwd, swingInTopBck, swingInTopFwd, swingOutBottomBck, swingOutBottomFwd, swingOutLeftBck, swingOutLefttFwd, swingOutRightBck, swingOutRightFwd, swingOutTopBck, swingOutTopFwd, toPercent, valueInRange, weekDay, ɵ1, ɵ2, IgxActionStripMenuItemDirective as ɵa, IGX_DROPDOWN_BASE as ɵb, IgxGridActionButtonComponent as ɵba, ToggleAnimationPlayer as ɵbb, IgxExpansionPanelTitleDirective as ɵbc, IgxExpansionPanelDescriptionDirective as ɵbd, IgxExpansionPanelIconDirective as ɵbe, IgxBannerActionsDirective as ɵbf, IgxDaysViewNavigationService as ɵbg, IgxDayItemComponent as ɵbh, IgxMonthViewSlotsCalendar as ɵbi, IgxGetViewDateCalendar as ɵbj, IgxCarouselIndicatorDirective as ɵbk, IgxCarouselNextButtonDirective as ɵbl, IgxCarouselPrevButtonDirective as ɵbm, IgxComboAPIService as ɵbn, IGX_COMBO_COMPONENT as ɵbo, IgxComboDropDownComponent as ɵbq, IgxComboItemComponent as ɵbr, IgxComboHeaderDirective as ɵbs, IgxComboFooterDirective as ɵbt, IgxComboItemDirective as ɵbu, IgxComboEmptyDirective as ɵbv, IgxComboHeaderItemDirective as ɵbw, IgxComboAddItemDirective as ɵbx, IgxComboToggleIconDirective as ɵby, IgxComboClearIconDirective as ɵbz, IgxComboFilteringPipe as ɵca, IgxComboGroupingPipe as ɵcb, IgxComboAddItemComponent as ɵcc, PickerBaseDirective as ɵcd, IgxCalendarContainerComponent as ɵce, IgxCalendarContainerModule as ɵcf, IgxDialogTitleDirective as ɵcg, IgxDialogActionsDirective as ɵch, IgxCellCrudState as ɵci, IgxRowCrudState as ɵcj, IgxRowAddCrudState as ɵck, IgxGridCRUDService as ɵcl, IgxColumnMovingService as ɵcm, IgxExcelStyleCustomDialogComponent as ɵcn, IgxExcelStyleDefaultExpressionComponent as ɵco, IgxExcelStyleDateExpressionComponent as ɵcp, HammerGesturesManager as ɵcq, WatchChanges as ɵcr, WatchColumnChanges as ɵcs, notifyChanges as ɵct, IgxNotificationsDirective as ɵcu, IgxGridColumnResizerComponent as ɵcv, IgxColumnResizerDirective as ɵcw, IgxColumnResizingService as ɵcx, IgxRowSelectorDirective as ɵcy, IgxGroupByRowSelectorDirective as ɵcz, IgxGridSelectionService as ɵd, IgxHeadSelectorDirective as ɵda, IgxRowDragDirective as ɵdb, IgxDragIndicatorIconDirective as ɵdc, IgxRowDragGhostDirective as ɵdd, IgxRowDragModule as ɵde, IgxGridHeaderRowComponent as ɵdf, IgxGridHeaderGroupComponent as ɵdg, IgxGridHeaderComponent as ɵdh, IgxGridFilteringCellComponent as ɵdi, IgxFilteringService as ɵdj, IgxGridFilteringRowComponent as ɵdk, IgxGridGroupByAreaComponent as ɵdl, IgxGroupByAreaDirective as ɵdm, IgxGroupByMetaPipe as ɵdn, IgxTemplateOutletDirective as ɵdo, IgxTemplateOutletModule as ɵdp, IgxRowEditTemplateDirective as ɵdq, IgxRowEditTextDirective as ɵdr, IgxRowAddTextDirective as ɵds, IgxRowEditActionsDirective as ɵdt, IgxRowEditTabStopDirective as ɵdu, IgxSummaryRowComponent as ɵdv, IgxSummaryCellComponent as ɵdw, IgxRowDirective as ɵdx, IgxGridNavigationService as ɵdy, IgxGridSummaryService as ɵdz, ConnectedPositioningStrategy as ɵea, IgxGridGroupByRowComponent as ɵeb, IgxTreeGridSelectionService as ɵec, IgxTreeGridGroupByAreaComponent as ɵed, IgxRowLoadingIndicatorTemplateDirective as ɵee, IgxHierarchicalGridNavigationService as ɵef, IgxChildGridRowComponent as ɵeg, IgxGridCellComponent as ɵeh, IgxGridFooterComponent as ɵei, IgxAdvancedFilteringDialogComponent as ɵej, IgxColumnHidingDirective as ɵek, IgxColumnPinningDirective as ɵel, IgxGridSharedModules as ɵem, IgxProcessBarTextTemplateDirective as ɵen, IgxProgressBarGradientDirective as ɵeo, DIR_DOCUMENT_FACTORY as ɵep, DIR_DOCUMENT as ɵeq, IgxDirectionality as ɵer, IgxSelectItemNavigationDirective as ɵes, IGX_TIME_PICKER_COMPONENT as ɵet, IgxItemListDirective as ɵev, IgxTimeItemDirective as ɵew, IgxTimePickerTemplateDirective as ɵex, IgxTimePickerActionsDirective as ɵey, TimeFormatPipe as ɵez, IGX_EXPANSION_PANEL_COMPONENT as ɵf, TimeItemPipe as ɵfa, IgxGridPipesModule as ɵfb, IgxGridCellStyleClassesPipe as ɵfc, IgxGridCellStylesPipe as ɵfd, IgxGridRowClassesPipe as ɵfe, IgxGridRowStylesPipe as ɵff, IgxGridNotGroupedPipe as ɵfg, IgxGridTopLevelColumns as ɵfh, IgxGridFilterConditionPipe as ɵfi, IgxGridTransactionPipe as ɵfj, IgxGridPaginatorOptionsPipe as ɵfk, IgxHasVisibleColumnsPipe as ɵfl, IgxGridRowPinningPipe as ɵfm, IgxColumnActionEnabledPipe as ɵfn, IgxFilterActionColumnsPipe as ɵfo, IgxSortActionColumnsPipe as ɵfp, IgxGridDataMapperPipe as ɵfq, IgxStringReplacePipe as ɵfr, IgxGridTransactionStatePipe as ɵfs, IgxColumnFormatterPipe as ɵft, IgxSummaryFormatterPipe as ɵfu, IgxGridAddRowPipe as ɵfv, IgxHeaderGroupWidthPipe as ɵfw, IgxHeaderGroupStylePipe as ɵfx, IgxGridColumnModule as ɵfy, IgxGridHeadersModule as ɵfz, IGX_TREE_COMPONENT as ɵg, SortingIndexPipe as ɵga, IgxGridFilteringModule as ɵgb, IgxColumnMovingModule as ɵgc, IgxColumnMovingDropDirective as ɵgd, IgxColumnMovingDragDirective as ɵge, IgxGridResizingModule as ɵgf, IgxResizeHandleDirective as ɵgg, IgxGridExcelStyleFilteringModule as ɵgh, IgxGridSelectionModule as ɵgi, IgxGridDragSelectDirective as ɵgj, IgxGridSummaryModule as ɵgk, IgxSummaryDataPipe as ɵgl, IgxGridToolbarModule as ɵgm, BaseToolbarDirective as ɵgn, BaseToolbarColumnActionsDirective as ɵgo, IgxGridRowComponent as ɵgp, IgxGridSortingPipe as ɵgq, IgxGridGroupingPipe as ɵgr, IgxGridPagingPipe as ɵgs, IgxGridFilteringPipe as ɵgt, IgxGridSummaryPipe as ɵgu, IgxGridDetailsPipe as ɵgv, IgxGridExpandableCellComponent as ɵgw, IgxTreeGridRowComponent as ɵgx, IgxTreeGridCellComponent as ɵgy, IgxTreeGridHierarchizingPipe as ɵgz, IGX_TREE_NODE_COMPONENT as ɵh, IgxTreeGridFlatteningPipe as ɵha, IgxTreeGridSortingPipe as ɵhb, IgxTreeGridPagingPipe as ɵhc, IgxTreeGridTransactionPipe as ɵhd, IgxTreeGridNormalizeRecordsPipe as ɵhe, IgxTreeGridAddRowPipe as ɵhf, IgxTreeGridFilteringPipe as ɵhg, IgxTreeGridSummaryPipe as ɵhh, IgxHierarchicalRowComponent as ɵhi, IgxHierarchicalGridCellComponent as ɵhj, IgxSliderThumbComponent as ɵhk, IgxThumbLabelComponent as ɵhl, IgxTicksComponent as ɵhm, IgxTickLabelsPipe as ɵhn, IgxTabsBase as ɵho, IgxTabHeaderBase as ɵhp, IgxTabContentBase as ɵhq, IgxSplitBarComponent as ɵhr, IgxTreeService as ɵhs, IgxTreeSelectionService as ɵht, IgxTreeNavigationService as ɵhu, PlatformUtil as ɵi, EaseIn as ɵj, EaseOut as ɵk, IgxInputGroupBase as ɵl, IgxSelectionAPIService as ɵm, IgxForOfSyncService as ɵn, IgxForOfScrollSyncService as ɵo, DisplayContainerComponent as ɵp, IgxScrollInertiaDirective as ɵq, IgxScrollInertiaModule as ɵr, VirtualHelperComponent as ɵs, VirtualHelperBaseDirective as ɵt, HVirtualHelperComponent as ɵu, MaskParsingService as ɵv, DeprecateMethod as ɵw, DeprecateProperty as ɵx, isHierarchyMatch as ɵy, getHierarchy as ɵz };
|
|
76657
|
+
export { AbsolutePosition, AbsoluteScrollStrategy, AutoPositionStrategy, BaseFilteringStrategy, BaseProgressDirective, BlockScrollStrategy, ButtonGroupAlignment, Calendar, CalendarHammerConfig, CalendarSelection, CalendarView, CarouselAnimationType, CarouselHammerConfig, CarouselIndicatorsOrientation, CloseScrollStrategy, ColumnDisplayOrder, ColumnPinningPosition, ConnectedPositioningStrategy, ContainerPositionStrategy, CsvFileTypes, DEFAULT_OWNER, DataUtil, DatePart, DateRangePickerFormatPipe, DateRangeType, DefaultSortingStrategy, Direction, DisplayDensity, DisplayDensityBase, DisplayDensityToken, DragDirection, ElasticPositionStrategy, ExpansionPanelHeaderIconPosition, ExportRecordType, FilterListItem, FilterMode, FilteringExpressionsTree, FilteringExpressionsTreeType, FilteringLogic, FilteringStrategy, FormattedValuesFilteringStrategy, GlobalPositionStrategy, GridBaseAPIService, GridColumnDataType, GridInstanceType, GridPagingMode, GridSelectionMode, GridSummaryCalculationMode, GridSummaryPosition, GroupedRecords, HeaderType, HorizontalAlignment, IGX_CHECKBOX_REQUIRED_VALIDATOR, IGX_INPUT_GROUP_TYPE, IGX_SWITCH_REQUIRED_VALIDATOR, ITreeGridAggregation, IgxAccordionComponent, IgxAccordionModule, IgxActionStripComponent, IgxActionStripModule, IgxAppendDropStrategy, IgxAutocompleteDirective, IgxAutocompleteModule, IgxAvatarComponent, IgxAvatarModule, IgxAvatarSize, IgxAvatarType, IgxBadgeComponent, IgxBadgeModule, IgxBadgeType, IgxBannerComponent, IgxBannerModule, IgxBaseExporter, IgxBaseTransactionService, IgxBooleanFilteringOperand, IgxBottomNavComponent, IgxBottomNavContentComponent, IgxBottomNavHeaderComponent, IgxBottomNavHeaderIconDirective, IgxBottomNavHeaderLabelDirective, IgxBottomNavItemComponent, IgxBottomNavModule, IgxButtonDirective, IgxButtonGroupComponent, IgxButtonGroupModule, IgxButtonModule, IgxCSVTextDirective, IgxCalendarBaseDirective, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarModule, IgxCalendarMonthDirective, IgxCalendarScrollMonthDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarView, IgxCalendarYearDirective, IgxCardActionsComponent, IgxCardActionsLayout, IgxCardComponent, IgxCardContentDirective, IgxCardFooterDirective, IgxCardHeaderComponent, IgxCardHeaderSubtitleDirective, IgxCardHeaderTitleDirective, IgxCardMediaDirective, IgxCardModule, IgxCardThumbnailDirective, IgxCardType, IgxCarouselComponent, IgxCarouselComponentBase, IgxCarouselModule, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCheckboxComponent, IgxCheckboxModule, IgxCheckboxRequiredDirective, IgxChipComponent, IgxChipsAreaComponent, IgxChipsModule, IgxCircularProgressBarComponent, IgxCollapsibleIndicatorTemplateDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnActionsModule, IgxColumnComponent, IgxColumnGroupComponent, IgxColumnLayoutComponent, IgxComboComponent, IgxComboModule, IgxCsvExporterOptions, IgxCsvExporterService, IgxDataLoadingTemplateDirective, IgxDataRecordSorting, IgxDateFilteringOperand, IgxDatePickerComponent, IgxDatePickerModule, IgxDateRangeEndComponent, IgxDateRangeInputsBaseComponent, IgxDateRangePickerComponent, IgxDateRangePickerModule, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent, IgxDateSummaryOperand, IgxDateTimeEditorDirective, IgxDateTimeEditorModule, IgxDateTimeFilteringOperand, IgxDaysViewComponent, IgxDefaultDropStrategy, IgxDialogComponent, IgxDialogModule, IgxDisplayDensityModule, IgxDividerDirective, IgxDividerModule, IgxDividerType, IgxDragDirective, IgxDragDropModule, IgxDragHandleDirective, IgxDragIgnoreDirective, IgxDragLocation, IgxDropDirective, IgxDropDownBaseDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemBaseDirective, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, IgxEmptyListTemplateDirective, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxExpansionPanelModule, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilterDirective, IgxFilterModule, IgxFilterOptions, IgxFilterPipe, IgxFilteringOperand, IgxFlatTransactionFactory, IgxFlexDirective, IgxFocusDirective, IgxFocusModule, IgxForOfContext, IgxForOfDirective, IgxForOfModule, IgxGridAPIService, IgxGridActionsBaseDirective, IgxGridBaseDirective, IgxGridBodyDirective, IgxGridCell, IgxGridCommonModule, IgxGridComponent, IgxGridDetailTemplateDirective, IgxGridEditingActionsComponent, IgxGridExcelStyleFilteringComponent, IgxGridForOfDirective, IgxGridHierarchicalPagingPipe, IgxGridHierarchicalPipe, IgxGridModule, IgxGridPinningActionsComponent, IgxGridRow, IgxGridStateDirective, IgxGridStateModule, IgxGridToolbarActionsDirective, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleDirective, IgxGridTransaction, IgxGroupAreaDropDirective, IgxGroupByRow, IgxGroupByRowTemplateDirective, IgxGroupedTreeGridSorting, IgxGrouping, IgxHeaderCollapseIndicatorDirective, IgxHeaderExpandIndicatorDirective, IgxHierarchicalGridAPIService, IgxHierarchicalGridBaseDirective, IgxHierarchicalGridComponent, IgxHierarchicalGridModule, IgxHierarchicalGridRow, IgxHierarchicalTransactionFactory, IgxHierarchicalTransactionService, IgxHierarchicalTransactionServiceFactory, IgxHintDirective, IgxIconComponent, IgxIconModule, IgxIconService, IgxInputDirective, IgxInputGroupComponent, IgxInputGroupModule, IgxInputState, IgxInsertDropStrategy, IgxLabelDirective, IgxLayoutDirective, IgxLayoutModule, IgxLinearProgressBarComponent, IgxListActionDirective, IgxListBaseDirective, IgxListComponent, IgxListItemComponent, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListModule, IgxListPanState, IgxListThumbnailDirective, IgxMaskDirective, IgxMaskModule, IgxMonthPickerBaseDirective, IgxMonthPickerComponent, IgxMonthsViewComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavbarActionDirective, IgxNavbarComponent, IgxNavbarModule, IgxNavbarTitleDirective, IgxNavigationCloseDirective, IgxNavigationDrawerComponent, IgxNavigationDrawerModule, IgxNavigationModule, IgxNavigationService, IgxNavigationToggleDirective, IgxNumberFilteringOperand, IgxNumberSummaryOperand, IgxOverlayOutletDirective, IgxOverlayService, IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorComponent, IgxPaginatorDirective, IgxPaginatorModule, IgxPaginatorTemplateDirective, IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IgxPickersCommonModule, IgxPrefixDirective, IgxPrefixModule, IgxPrependDropStrategy, IgxProgressBarModule, IgxProgressType, IgxRadioComponent, IgxRadioGroupDirective, IgxRadioModule, IgxRippleDirective, IgxRippleModule, IgxRowCollapsedIndicatorDirective, IgxRowExpandedIndicatorDirective, IgxRowIslandAPIService, IgxRowIslandComponent, IgxSelectComponent, IgxSelectFooterDirective, IgxSelectGroupComponent, IgxSelectHeaderDirective, IgxSelectItemComponent, IgxSelectModule, IgxSelectToggleIconDirective, IgxSimpleComboComponent, IgxSimpleComboModule, IgxSlideComponent, IgxSliderComponent, IgxSliderModule, IgxSliderType, IgxSnackbarComponent, IgxSnackbarModule, IgxSorting, IgxSplitterComponent, IgxSplitterModule, IgxSplitterPaneComponent, IgxStringFilteringOperand, IgxSuffixDirective, IgxSuffixModule, IgxSummaryOperand, IgxSummaryRow, IgxSwitchComponent, IgxSwitchModule, IgxSwitchRequiredDirective, IgxTabContentComponent, IgxTabContentDirective, IgxTabHeaderComponent, IgxTabHeaderDirective, IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective, IgxTabItemComponent, IgxTabItemDirective, IgxTabsAlignment, IgxTabsComponent, IgxTabsDirective, IgxTabsModule, IgxTextAlign, IgxTextHighlightDirective, IgxTextHighlightModule, IgxTextSelectionDirective, IgxTextSelectionModule, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IgxTimeFilteringOperand, IgxTimePickerComponent, IgxTimePickerModule, IgxTimeSummaryOperand, IgxToastComponent, IgxToastModule, IgxToastPosition, IgxToggleActionDirective, IgxToggleDirective, IgxToggleModule, IgxTooltipDirective, IgxTooltipModule, IgxTooltipTargetDirective, IgxTransactionService, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeGridAPIService, IgxTreeGridComponent, IgxTreeGridGroupingPipe, IgxTreeGridModule, IgxTreeGridRow, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectMarkerDirective, IgxTreeSelectionType, IgxYearsViewComponent, LabelPosition, NoOpScrollStrategy, NoopFilteringStrategy, NoopSortingStrategy, PagingError, PickerInteractionMode, Point, RadioGroupAlignment, RadioLabelPosition, RelativePosition, RelativePositionStrategy, RowEditPositionStrategy, RowPinningPosition, ScrollMonth, ScrollStrategy, SliderHandle, SortingDirection, SplitterType, SwitchLabelPosition, TickLabelsOrientation, TicksOrientation, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy, TreeGridFormattedValuesFilteringStrategy, TreeGridMatchingRecordsOnlyFilteringStrategy, VerticalAlignment, WEEKDAYS, blink, changei18n, fadeIn, fadeOut, filteringStateDefaults, flipBottom, flipHorBck, flipHorFwd, flipLeft, flipRight, flipTop, flipVerBck, flipVerFwd, getCurrentResourceStrings, getTypeNameForDebugging, growVerIn, growVerOut, heartbeat, hierarchicalTransactionServiceFactory, isDateInRanges, isLeap, monthRange, pulsateBck, pulsateFwd, range, rotateInBl, rotateInBottom, rotateInBr, rotateInCenter, rotateInDiagonal1, rotateInDiagonal2, rotateInHor, rotateInLeft, rotateInRight, rotateInTl, rotateInTop, rotateInTr, rotateInVer, rotateOutBl, rotateOutBottom, rotateOutBr, rotateOutCenter, rotateOutDiagonal1, rotateOutDiagonal2, rotateOutHor, rotateOutLeft, rotateOutRight, rotateOutTl, rotateOutTop, rotateOutTr, rotateOutVer, scaleInBl, scaleInBottom, scaleInBr, scaleInCenter, scaleInHorCenter, scaleInHorLeft, scaleInHorRight, scaleInLeft, scaleInRight, scaleInTl, scaleInTop, scaleInTr, scaleInVerBottom, scaleInVerCenter, scaleInVerTop, scaleOutBl, scaleOutBottom, scaleOutBr, scaleOutCenter, scaleOutHorCenter, scaleOutHorLeft, scaleOutHorRight, scaleOutLeft, scaleOutRight, scaleOutTl, scaleOutTop, scaleOutTr, scaleOutVerBottom, scaleOutVerCenter, scaleOutVerTop, shakeBl, shakeBottom, shakeBr, shakeCenter, shakeHor, shakeLeft, shakeRight, shakeTl, shakeTop, shakeTr, shakeVer, slideInBl, slideInBottom, slideInBr, slideInLeft, slideInRight, slideInTl, slideInTop, slideInTr, slideOutBl, slideOutBottom, slideOutBr, slideOutLeft, slideOutRight, slideOutTl, slideOutTop, slideOutTr, swingInBottomBck, swingInBottomFwd, swingInLeftBck, swingInLeftFwd, swingInRightBck, swingInRightFwd, swingInTopBck, swingInTopFwd, swingOutBottomBck, swingOutBottomFwd, swingOutLeftBck, swingOutLefttFwd, swingOutRightBck, swingOutRightFwd, swingOutTopBck, swingOutTopFwd, toPercent, valueInRange, weekDay, ɵ1, ɵ2, IgxActionStripMenuItemDirective as ɵa, IGX_DROPDOWN_BASE as ɵb, IgxGridActionButtonComponent as ɵba, ToggleAnimationPlayer as ɵbb, IgxExpansionPanelTitleDirective as ɵbc, IgxExpansionPanelDescriptionDirective as ɵbd, IgxExpansionPanelIconDirective as ɵbe, IgxBannerActionsDirective as ɵbf, IgxDaysViewNavigationService as ɵbg, IgxDayItemComponent as ɵbh, IgxMonthViewSlotsCalendar as ɵbi, IgxGetViewDateCalendar as ɵbj, IgxCarouselIndicatorDirective as ɵbk, IgxCarouselNextButtonDirective as ɵbl, IgxCarouselPrevButtonDirective as ɵbm, IGX_COMBO_COMPONENT as ɵbn, IgxComboBaseDirective as ɵbp, IgxComboHeaderDirective as ɵbq, IgxComboFooterDirective as ɵbr, IgxComboItemDirective as ɵbs, IgxComboEmptyDirective as ɵbt, IgxComboHeaderItemDirective as ɵbu, IgxComboAddItemDirective as ɵbv, IgxComboToggleIconDirective as ɵbw, IgxComboClearIconDirective as ɵbx, IgxComboAPIService as ɵby, IgxComboDropDownComponent as ɵbz, IgxComboItemComponent as ɵca, IgxComboFilteringPipe as ɵcb, IgxComboGroupingPipe as ɵcc, IgxComboAddItemComponent as ɵcd, PickerBaseDirective as ɵce, IgxCalendarContainerComponent as ɵcf, IgxCalendarContainerModule as ɵcg, IgxDialogTitleDirective as ɵch, IgxDialogActionsDirective as ɵci, IgxCellCrudState as ɵcj, IgxRowCrudState as ɵck, IgxRowAddCrudState as ɵcl, IgxGridCRUDService as ɵcm, IgxColumnMovingService as ɵcn, IgxExcelStyleCustomDialogComponent as ɵco, IgxExcelStyleDefaultExpressionComponent as ɵcp, IgxExcelStyleDateExpressionComponent as ɵcq, HammerGesturesManager as ɵcr, WatchChanges as ɵcs, WatchColumnChanges as ɵct, notifyChanges as ɵcu, IgxNotificationsDirective as ɵcv, IgxGridColumnResizerComponent as ɵcw, IgxColumnResizerDirective as ɵcx, IgxColumnResizingService as ɵcy, IgxRowSelectorDirective as ɵcz, IgxGridSelectionService as ɵd, IgxGroupByRowSelectorDirective as ɵda, IgxHeadSelectorDirective as ɵdb, IgxRowDragDirective as ɵdc, IgxDragIndicatorIconDirective as ɵdd, IgxRowDragGhostDirective as ɵde, IgxRowDragModule as ɵdf, IgxGridHeaderRowComponent as ɵdg, IgxGridHeaderGroupComponent as ɵdh, IgxGridHeaderComponent as ɵdi, IgxGridFilteringCellComponent as ɵdj, IgxFilteringService as ɵdk, IgxGridFilteringRowComponent as ɵdl, IgxGridGroupByAreaComponent as ɵdm, IgxGroupByAreaDirective as ɵdn, IgxGroupByMetaPipe as ɵdo, IgxTemplateOutletDirective as ɵdp, IgxTemplateOutletModule as ɵdq, IgxRowEditTemplateDirective as ɵdr, IgxRowEditTextDirective as ɵds, IgxRowAddTextDirective as ɵdt, IgxRowEditActionsDirective as ɵdu, IgxRowEditTabStopDirective as ɵdv, IgxSummaryRowComponent as ɵdw, IgxSummaryCellComponent as ɵdx, IgxRowDirective as ɵdy, IgxGridNavigationService as ɵdz, IgxGridSummaryService as ɵea, ConnectedPositioningStrategy as ɵeb, IgxGridGroupByRowComponent as ɵec, IgxTreeGridSelectionService as ɵed, IgxTreeGridGroupByAreaComponent as ɵee, IgxRowLoadingIndicatorTemplateDirective as ɵef, IgxHierarchicalGridNavigationService as ɵeg, IgxChildGridRowComponent as ɵeh, IgxGridCellComponent as ɵei, IgxGridFooterComponent as ɵej, IgxAdvancedFilteringDialogComponent as ɵek, IgxColumnHidingDirective as ɵel, IgxColumnPinningDirective as ɵem, IgxGridSharedModules as ɵen, IgxProcessBarTextTemplateDirective as ɵeo, IgxProgressBarGradientDirective as ɵep, DIR_DOCUMENT_FACTORY as ɵeq, DIR_DOCUMENT as ɵer, IgxDirectionality as ɵes, IgxSelectItemNavigationDirective as ɵet, IGX_TIME_PICKER_COMPONENT as ɵeu, IgxItemListDirective as ɵew, IgxTimeItemDirective as ɵex, IgxTimePickerTemplateDirective as ɵey, IgxTimePickerActionsDirective as ɵez, IGX_EXPANSION_PANEL_COMPONENT as ɵf, TimeFormatPipe as ɵfa, TimeItemPipe as ɵfb, IgxGridPipesModule as ɵfc, IgxGridCellStyleClassesPipe as ɵfd, IgxGridCellStylesPipe as ɵfe, IgxGridRowClassesPipe as ɵff, IgxGridRowStylesPipe as ɵfg, IgxGridNotGroupedPipe as ɵfh, IgxGridTopLevelColumns as ɵfi, IgxGridFilterConditionPipe as ɵfj, IgxGridTransactionPipe as ɵfk, IgxGridPaginatorOptionsPipe as ɵfl, IgxHasVisibleColumnsPipe as ɵfm, IgxGridRowPinningPipe as ɵfn, IgxColumnActionEnabledPipe as ɵfo, IgxFilterActionColumnsPipe as ɵfp, IgxSortActionColumnsPipe as ɵfq, IgxGridDataMapperPipe as ɵfr, IgxStringReplacePipe as ɵfs, IgxGridTransactionStatePipe as ɵft, IgxColumnFormatterPipe as ɵfu, IgxSummaryFormatterPipe as ɵfv, IgxGridAddRowPipe as ɵfw, IgxHeaderGroupWidthPipe as ɵfx, IgxHeaderGroupStylePipe as ɵfy, IgxGridColumnModule as ɵfz, IGX_TREE_COMPONENT as ɵg, IgxGridHeadersModule as ɵga, SortingIndexPipe as ɵgb, IgxGridFilteringModule as ɵgc, IgxColumnMovingModule as ɵgd, IgxColumnMovingDropDirective as ɵge, IgxColumnMovingDragDirective as ɵgf, IgxGridResizingModule as ɵgg, IgxResizeHandleDirective as ɵgh, IgxGridExcelStyleFilteringModule as ɵgi, IgxGridSelectionModule as ɵgj, IgxGridDragSelectDirective as ɵgk, IgxGridSummaryModule as ɵgl, IgxSummaryDataPipe as ɵgm, IgxGridToolbarModule as ɵgn, BaseToolbarDirective as ɵgo, BaseToolbarColumnActionsDirective as ɵgp, IgxGridRowComponent as ɵgq, IgxGridSortingPipe as ɵgr, IgxGridGroupingPipe as ɵgs, IgxGridPagingPipe as ɵgt, IgxGridFilteringPipe as ɵgu, IgxGridSummaryPipe as ɵgv, IgxGridDetailsPipe as ɵgw, IgxGridExpandableCellComponent as ɵgx, IgxTreeGridRowComponent as ɵgy, IgxTreeGridCellComponent as ɵgz, IGX_TREE_NODE_COMPONENT as ɵh, IgxTreeGridHierarchizingPipe as ɵha, IgxTreeGridFlatteningPipe as ɵhb, IgxTreeGridSortingPipe as ɵhc, IgxTreeGridPagingPipe as ɵhd, IgxTreeGridTransactionPipe as ɵhe, IgxTreeGridNormalizeRecordsPipe as ɵhf, IgxTreeGridAddRowPipe as ɵhg, IgxTreeGridFilteringPipe as ɵhh, IgxTreeGridSummaryPipe as ɵhi, IgxHierarchicalRowComponent as ɵhj, IgxHierarchicalGridCellComponent as ɵhk, IgxSliderThumbComponent as ɵhl, IgxThumbLabelComponent as ɵhm, IgxTicksComponent as ɵhn, IgxTickLabelsPipe as ɵho, IgxTabsBase as ɵhp, IgxTabHeaderBase as ɵhq, IgxTabContentBase as ɵhr, IgxSplitBarComponent as ɵhs, IgxTreeService as ɵht, IgxTreeSelectionService as ɵhu, IgxTreeNavigationService as ɵhv, PlatformUtil as ɵi, EaseIn as ɵj, EaseOut as ɵk, IgxInputGroupBase as ɵl, IgxSelectionAPIService as ɵm, IgxForOfSyncService as ɵn, IgxForOfScrollSyncService as ɵo, DisplayContainerComponent as ɵp, IgxScrollInertiaDirective as ɵq, IgxScrollInertiaModule as ɵr, VirtualHelperComponent as ɵs, VirtualHelperBaseDirective as ɵt, HVirtualHelperComponent as ɵu, MaskParsingService as ɵv, DeprecateMethod as ɵw, DeprecateProperty as ɵx, isHierarchyMatch as ɵy, getHierarchy as ɵz };
|
|
76378
76658
|
//# sourceMappingURL=igniteui-angular.js.map
|