igniteui-angular 12.2.5 → 12.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +12 -11
  2. package/bundles/igniteui-angular.umd.js +1833 -1672
  3. package/bundles/igniteui-angular.umd.js.map +1 -1
  4. package/esm2015/igniteui-angular.js +106 -107
  5. package/esm2015/lib/action-strip/grid-actions/grid-editing-actions.component.js +2 -2
  6. package/esm2015/lib/banner/banner.component.js +1 -1
  7. package/esm2015/lib/combo/combo-dropdown.component.js +9 -4
  8. package/esm2015/lib/combo/combo-item.component.js +4 -3
  9. package/esm2015/lib/combo/combo.api.js +3 -3
  10. package/esm2015/lib/combo/combo.common.js +1016 -2
  11. package/esm2015/lib/combo/combo.component.js +91 -1135
  12. package/esm2015/lib/combo/combo.pipes.js +3 -3
  13. package/esm2015/lib/core/utils.js +11 -1
  14. package/esm2015/lib/data-operations/sorting-strategy.js +12 -3
  15. package/esm2015/lib/directives/radio/radio-group.directive.js +5 -13
  16. package/esm2015/lib/drop-down/drop-down-item.base.js +1 -5
  17. package/esm2015/lib/grids/cell.component.js +1 -17
  18. package/esm2015/lib/grids/column-actions/column-actions.component.js +3 -7
  19. package/esm2015/lib/grids/filtering/base/grid-filtering-row.component.js +12 -4
  20. package/esm2015/lib/grids/grid/grid.component.js +3 -7
  21. package/esm2015/lib/grids/grid-base.directive.js +56 -119
  22. package/esm2015/lib/grids/grid-public-row.js +3 -12
  23. package/esm2015/lib/grids/headers/grid-header-row.component.js +2 -2
  24. package/esm2015/lib/grids/hierarchical-grid/hierarchical-grid.component.js +3 -7
  25. package/esm2015/lib/grids/tree-grid/tree-grid.component.js +3 -7
  26. package/esm2015/lib/icon/icon.component.js +1 -6
  27. package/esm2015/lib/services/overlay/utilities.js +1 -1
  28. package/esm2015/lib/simple-combo/public_api.js +2 -0
  29. package/esm2015/lib/simple-combo/simple-combo.component.js +390 -0
  30. package/esm2015/lib/toast/toast.component.js +3 -6
  31. package/esm2015/public_api.js +2 -1
  32. package/fesm2015/igniteui-angular.js +1468 -1308
  33. package/fesm2015/igniteui-angular.js.map +1 -1
  34. package/igniteui-angular.d.ts +105 -106
  35. package/igniteui-angular.metadata.json +1 -1
  36. package/lib/banner/banner.component.d.ts +1 -2
  37. package/lib/combo/combo-dropdown.component.d.ts +2 -0
  38. package/lib/combo/combo-item.component.d.ts +2 -0
  39. package/lib/combo/combo.common.d.ts +730 -4
  40. package/lib/combo/combo.component.d.ts +38 -791
  41. package/lib/combo/combo.pipes.d.ts +1 -1
  42. package/lib/core/utils.d.ts +4 -0
  43. package/lib/directives/radio/radio-group.directive.d.ts +4 -4
  44. package/lib/grids/cell.component.d.ts +0 -9
  45. package/lib/grids/column-actions/column-actions.component.d.ts +2 -1
  46. package/lib/grids/grid/grid.component.d.ts +2 -1
  47. package/lib/grids/grid-base.directive.d.ts +54 -37
  48. package/lib/grids/grid-public-row.d.ts +2 -3
  49. package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +2 -1
  50. package/lib/grids/tree-grid/tree-grid.component.d.ts +2 -1
  51. package/lib/icon/icon.component.d.ts +2 -2
  52. package/lib/services/overlay/utilities.d.ts +2 -1
  53. package/lib/simple-combo/public_api.d.ts +1 -0
  54. package/lib/simple-combo/simple-combo.component.d.ts +126 -0
  55. package/lib/toast/toast.component.d.ts +2 -0
  56. package/migrations/common/filterSourceDirs.d.ts +2 -2
  57. package/migrations/common/filterSourceDirs.js +2 -2
  58. package/migrations/update-13_0_0/changes/members.json +26 -0
  59. package/package.json +1 -1
  60. package/public_api.d.ts +1 -0
  61. package/esm2015/lib/core/deprecateDecorators.js +0 -101
  62. package/lib/core/deprecateDecorators.d.ts +0 -20
@@ -1244,7 +1244,7 @@
1244
1244
  fn();
1245
1245
  }
1246
1246
  };
1247
- var ɵ0$5 = run;
1247
+ var ɵ0$4 = run;
1248
1248
  var listener = function (event) { return run(event.data); };
1249
1249
  var ɵ1$1 = listener;
1250
1250
  // Use function instead of arrow function to workaround an issue in codesandbox
@@ -1276,6 +1276,15 @@
1276
1276
  delete queue[id];
1277
1277
  }
1278
1278
 
1279
+ /**
1280
+ * @hidden
1281
+ */
1282
+ var showMessage = function (message, isMessageShown) {
1283
+ if (!isMessageShown && i0.isDevMode()) {
1284
+ console.warn(message);
1285
+ }
1286
+ return true;
1287
+ };
1279
1288
  var mkenum = function (x) { return x; };
1280
1289
  /**
1281
1290
  * Returns the ResizeObserver type or the polyfilled version if not available.
@@ -2112,8 +2121,17 @@
2112
2121
  finally { if (e_1) throw e_1.error; }
2113
2122
  }
2114
2123
  if (expanded) {
2115
- metadata.push.apply(metadata, __spreadArray([], __read(fullResult.metadata.slice(fullResult.metadata.length - group.length))));
2116
- result.push.apply(result, __spreadArray([], __read(fullResult.data.slice(fullResult.data.length - group.length))));
2124
+ // Replaced object destructing as in a single big group scenario
2125
+ // it hits the max number of arguments for a function the underlying JS engine
2126
+ // supports.
2127
+ var j = fullResult.metadata.length - group.length;
2128
+ for (; j < fullResult.metadata.length; j++) {
2129
+ metadata.push(fullResult.metadata[j]);
2130
+ }
2131
+ j = fullResult.data.length - group.length;
2132
+ for (; j < fullResult.data.length; j++) {
2133
+ result.push(fullResult.data[j]);
2134
+ }
2117
2135
  }
2118
2136
  }
2119
2137
  i += group.length;
@@ -9139,7 +9157,7 @@
9139
9157
  };
9140
9158
 
9141
9159
  var clear = function (el) { return el === 0 || Boolean(el); };
9142
- var ɵ0$4 = clear;
9160
+ var ɵ0$3 = clear;
9143
9161
  var first = function (arr) { return arr[0]; };
9144
9162
  var ɵ1 = first;
9145
9163
  var last = function (arr) { return arr[arr.length - 1]; };
@@ -18299,124 +18317,6 @@
18299
18317
  },] }
18300
18318
  ];
18301
18319
 
18302
- /**
18303
- * @hidden
18304
- */
18305
- var DeprecateClass = function (message) {
18306
- var isMessageShown = false;
18307
- return function (originalClass) { return /** @class */ (function (_super) {
18308
- __extends(class_1, _super);
18309
- function class_1() {
18310
- var args = [];
18311
- for (var _i = 0; _i < arguments.length; _i++) {
18312
- args[_i] = arguments[_i];
18313
- }
18314
- var _this = this;
18315
- var target = originalClass;
18316
- var targetName = typeof target === 'function' ? target.name : target.constructor.name;
18317
- isMessageShown = showMessage(targetName + ": " + message, isMessageShown);
18318
- _this = _super.apply(this, __spreadArray([], __read(args))) || this;
18319
- return _this;
18320
- }
18321
- return class_1;
18322
- }(originalClass)); };
18323
- };
18324
- /**
18325
- * @hidden
18326
- */
18327
- function DeprecateMethod(message) {
18328
- var isMessageShown = false;
18329
- return function (target, key, descriptor) {
18330
- if (descriptor && descriptor.value) {
18331
- var originalMethod_1 = descriptor.value;
18332
- descriptor.value = function () {
18333
- var e_1, _a;
18334
- var targetName = typeof target === 'function' ? target.name : target.constructor.name;
18335
- isMessageShown = showMessage(targetName + "." + key + ": " + message, isMessageShown);
18336
- var args = [];
18337
- try {
18338
- for (var arguments_1 = __values(arguments), arguments_1_1 = arguments_1.next(); !arguments_1_1.done; arguments_1_1 = arguments_1.next()) {
18339
- var x = arguments_1_1.value;
18340
- args.push(x);
18341
- }
18342
- }
18343
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
18344
- finally {
18345
- try {
18346
- if (arguments_1_1 && !arguments_1_1.done && (_a = arguments_1.return)) _a.call(arguments_1);
18347
- }
18348
- finally { if (e_1) throw e_1.error; }
18349
- }
18350
- return originalMethod_1.call.apply(originalMethod_1, __spreadArray([this], __read(args)));
18351
- };
18352
- return descriptor;
18353
- }
18354
- };
18355
- }
18356
- /**
18357
- * @hidden
18358
- */
18359
- function DeprecateProperty(message) {
18360
- return function (target, key) {
18361
- var isMessageShown = false;
18362
- var messageToDisplay = target.constructor.name + "." + key + ": " + message;
18363
- // if the target already has the property defined
18364
- var originalDescriptor = Object.getOwnPropertyDescriptor(target, key);
18365
- if (originalDescriptor) {
18366
- var getter_1 = originalDescriptor.get;
18367
- var setter_1 = originalDescriptor.set;
18368
- if (getter_1) {
18369
- originalDescriptor.get = function () {
18370
- isMessageShown = showMessage(messageToDisplay, isMessageShown);
18371
- return getter_1.call(this);
18372
- };
18373
- }
18374
- if (setter_1) {
18375
- originalDescriptor.set = function (value) {
18376
- isMessageShown = showMessage(messageToDisplay, isMessageShown);
18377
- setter_1.call(this, value);
18378
- };
18379
- }
18380
- return originalDescriptor;
18381
- }
18382
- // the target doesn't contain a descriptor for that property, so create one
18383
- // use backing field to set/get the value of the property to ensure there won't be infinite recursive calls
18384
- var newKey = generateUniqueKey(target, key);
18385
- Object.defineProperty(target, key, {
18386
- configurable: true,
18387
- enumerable: true,
18388
- set: function (value) {
18389
- isMessageShown = showMessage(messageToDisplay, isMessageShown);
18390
- this[newKey] = value;
18391
- },
18392
- get: function () {
18393
- isMessageShown = showMessage(messageToDisplay, isMessageShown);
18394
- return this[newKey];
18395
- }
18396
- });
18397
- };
18398
- }
18399
- /**
18400
- * @hidden
18401
- */
18402
- var generateUniqueKey = function (target, key) {
18403
- var newKey = '_' + key;
18404
- while (target.hasOwnProperty(newKey)) {
18405
- newKey = '_' + newKey;
18406
- }
18407
- return newKey;
18408
- };
18409
- var ɵ0$3 = generateUniqueKey;
18410
- /**
18411
- * @hidden
18412
- */
18413
- var showMessage = function (message, isMessageShown) {
18414
- if (!isMessageShown && i0.isDevMode()) {
18415
- console.warn(message);
18416
- }
18417
- return true;
18418
- };
18419
-
18420
18320
  var NEXT_ID$t = 0;
18421
18321
  /**
18422
18322
  * The `<igx-drop-down-item>` is a container intended for row items in
@@ -18492,7 +18392,6 @@
18492
18392
  };
18493
18393
 
18494
18394
  var NEXT_ID$s = 0;
18495
- var warningShown = false;
18496
18395
  /**
18497
18396
  * An abstract class defining a drop-down item:
18498
18397
  * With properties / styles for selection, highlight, height
@@ -18566,8 +18465,6 @@
18566
18465
  */
18567
18466
  get: function () {
18568
18467
  if (this._index === null) {
18569
- warningShown = showMessage('IgxDropDownItemBaseDirective: Automatic index is deprecated.' +
18570
- 'Bind in the template instead using `<igx-drop-down-item [index]="i"` instead.`', warningShown);
18571
18468
  return this.itemIndex;
18572
18469
  }
18573
18470
  return this._index;
@@ -21420,9 +21317,6 @@
21420
21317
  getInactive: [{ type: i0.HostBinding, args: ['class.igx-icon--inactive',] }],
21421
21318
  getColor: [{ type: i0.HostBinding, args: ['style.color',] }]
21422
21319
  };
21423
- __decorate([
21424
- DeprecateProperty('`color` is deprecated.')
21425
- ], IgxIconComponent.prototype, "color", void 0);
21426
21320
 
21427
21321
  /**
21428
21322
  * @hidden
@@ -26116,10 +26010,10 @@
26116
26010
  });
26117
26011
  Object.defineProperty(IgxRadioGroupDirective.prototype, "disabled", {
26118
26012
  /**
26119
- * An @Input property that allows you to disable the radio group. By default it's false.
26120
- *
26121
26013
  * @deprecated in version 12.2.0
26122
26014
  *
26015
+ * An input property that allows you to disable the radio group. By default it's false.
26016
+ *
26123
26017
  * @example
26124
26018
  * ```html
26125
26019
  * <igx-radio-group disabled></igx-radio-group>
@@ -26137,10 +26031,10 @@
26137
26031
  });
26138
26032
  Object.defineProperty(IgxRadioGroupDirective.prototype, "labelPosition", {
26139
26033
  /**
26140
- * Sets/gets the position of the `label` in the child radio buttons.
26141
- *
26142
26034
  * @deprecated in version 12.2.0
26143
26035
  *
26036
+ * Sets/gets the position of the `label` in the child radio buttons.
26037
+ *
26144
26038
  * @remarks
26145
26039
  * If not set, `labelPosition` will have value `"after"`.
26146
26040
  *
@@ -26408,12 +26302,6 @@
26408
26302
  vertical: [{ type: i0.HostBinding, args: ['class.igx-radio-group--vertical',] }],
26409
26303
  alignment: [{ type: i0.Input }]
26410
26304
  };
26411
- __decorate([
26412
- DeprecateProperty('`disabled` is deprecated.')
26413
- ], IgxRadioGroupDirective.prototype, "disabled", null);
26414
- __decorate([
26415
- DeprecateProperty('`labelPosition` is deprecated.')
26416
- ], IgxRadioGroupDirective.prototype, "labelPosition", null);
26417
26305
  /**
26418
26306
  * @hidden
26419
26307
  */
@@ -38955,10 +38843,10 @@
38955
38843
  return;
38956
38844
  }
38957
38845
  if (!selected) {
38958
- this.combo.selectItems([itemID], false, event);
38846
+ this.combo.select([itemID], false, event);
38959
38847
  }
38960
38848
  else {
38961
- this.combo.deselectItems([itemID], event);
38849
+ this.combo.deselect([itemID], event);
38962
38850
  }
38963
38851
  };
38964
38852
  IgxComboAPIService.prototype.is_item_selected = function (itemID) {
@@ -39076,7 +38964,7 @@
39076
38964
  IgxComboItemComponent.decorators = [
39077
38965
  { type: i0.Component, args: [{
39078
38966
  selector: 'igx-combo-item',
39079
- 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"
38967
+ 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"
39080
38968
  },] }
39081
38969
  ];
39082
38970
  IgxComboItemComponent.ctorParameters = function () { return [
@@ -39086,359 +38974,25 @@
39086
38974
  { type: IgxSelectionAPIService, decorators: [{ type: i0.Inject, args: [IgxSelectionAPIService,] }] }
39087
38975
  ]; };
39088
38976
  IgxComboItemComponent.propDecorators = {
39089
- itemHeight: [{ type: i0.Input }, { type: i0.HostBinding, args: ['style.height.px',] }]
38977
+ itemHeight: [{ type: i0.Input }, { type: i0.HostBinding, args: ['style.height.px',] }],
38978
+ singleMode: [{ type: i0.Input }]
39090
38979
  };
39091
38980
 
39092
38981
  var IGX_COMBO_COMPONENT = new i0.InjectionToken('IgxComboComponentToken');
39093
-
38982
+ var NEXT_ID$c = 0;
39094
38983
  /**
39095
38984
  * @hidden
38985
+ * The default number of items that should be in the combo's
38986
+ * drop-down list if no `[itemsMaxHeight]` is specified
39096
38987
  */
39097
- var IgxComboAddItemComponent = /** @class */ (function (_super) {
39098
- __extends(IgxComboAddItemComponent, _super);
39099
- function IgxComboAddItemComponent() {
39100
- return _super !== null && _super.apply(this, arguments) || this;
39101
- }
39102
- Object.defineProperty(IgxComboAddItemComponent.prototype, "selected", {
39103
- get: function () {
39104
- return false;
39105
- },
39106
- set: function (value) {
39107
- },
39108
- enumerable: false,
39109
- configurable: true
39110
- });
39111
- /**
39112
- * @inheritdoc
39113
- */
39114
- IgxComboAddItemComponent.prototype.clicked = function (event) {
39115
- this.comboAPI.disableTransitions = false;
39116
- this.comboAPI.add_custom_item();
39117
- };
39118
- return IgxComboAddItemComponent;
39119
- }(IgxComboItemComponent));
39120
- IgxComboAddItemComponent.decorators = [
39121
- { type: i0.Component, args: [{
39122
- selector: 'igx-combo-add-item',
39123
- template: '<ng-content></ng-content>',
39124
- providers: [{ provide: IgxComboItemComponent, useExisting: IgxComboAddItemComponent }]
39125
- },] }
39126
- ];
39127
-
39128
- /** @hidden */
39129
- var IgxComboDropDownComponent = /** @class */ (function (_super) {
39130
- __extends(IgxComboDropDownComponent, _super);
39131
- function IgxComboDropDownComponent(elementRef, cdr, platform, selection, combo, comboAPI, _displayDensityOptions) {
39132
- var _this = _super.call(this, elementRef, cdr, platform, selection, _displayDensityOptions) || this;
39133
- _this.elementRef = elementRef;
39134
- _this.cdr = cdr;
39135
- _this.platform = platform;
39136
- _this.selection = selection;
39137
- _this.combo = combo;
39138
- _this.comboAPI = comboAPI;
39139
- _this._displayDensityOptions = _displayDensityOptions;
39140
- /**
39141
- * @hidden
39142
- * @internal
39143
- */
39144
- _this.children = null;
39145
- _this.scrollHandler = function () {
39146
- _this.comboAPI.disableTransitions = true;
39147
- };
39148
- return _this;
39149
- }
39150
- Object.defineProperty(IgxComboDropDownComponent.prototype, "scrollContainer", {
39151
- /** @hidden @internal */
39152
- get: function () {
39153
- return this.virtDir.dc.location.nativeElement;
39154
- },
39155
- enumerable: false,
39156
- configurable: true
39157
- });
39158
- Object.defineProperty(IgxComboDropDownComponent.prototype, "isScrolledToLast", {
39159
- get: function () {
39160
- var scrollTop = this.virtDir.scrollPosition;
39161
- var scrollHeight = this.virtDir.getScroll().scrollHeight;
39162
- return Math.floor(scrollTop + this.virtDir.igxForContainerSize) === scrollHeight;
39163
- },
39164
- enumerable: false,
39165
- configurable: true
39166
- });
39167
- Object.defineProperty(IgxComboDropDownComponent.prototype, "lastVisibleIndex", {
39168
- get: function () {
39169
- return this.combo.totalItemCount ?
39170
- Math.floor(this.combo.itemsMaxHeight / this.combo.itemHeight) :
39171
- this.items.length - 1;
39172
- },
39173
- enumerable: false,
39174
- configurable: true
39175
- });
39176
- Object.defineProperty(IgxComboDropDownComponent.prototype, "sortedChildren", {
39177
- get: function () {
39178
- if (this.children !== undefined) {
39179
- return this.children.toArray()
39180
- .sort(function (a, b) { return a.index - b.index; });
39181
- }
39182
- return null;
39183
- },
39184
- enumerable: false,
39185
- configurable: true
39186
- });
39187
- Object.defineProperty(IgxComboDropDownComponent.prototype, "items", {
39188
- /**
39189
- * Get all non-header items
39190
- *
39191
- * ```typescript
39192
- * let myDropDownItems = this.dropdown.items;
39193
- * ```
39194
- */
39195
- get: function () {
39196
- var e_1, _a;
39197
- var items = [];
39198
- if (this.children !== undefined) {
39199
- var sortedChildren = this.sortedChildren;
39200
- try {
39201
- for (var sortedChildren_1 = __values(sortedChildren), sortedChildren_1_1 = sortedChildren_1.next(); !sortedChildren_1_1.done; sortedChildren_1_1 = sortedChildren_1.next()) {
39202
- var child = sortedChildren_1_1.value;
39203
- if (!child.isHeader) {
39204
- items.push(child);
39205
- }
39206
- }
39207
- }
39208
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
39209
- finally {
39210
- try {
39211
- if (sortedChildren_1_1 && !sortedChildren_1_1.done && (_a = sortedChildren_1.return)) _a.call(sortedChildren_1);
39212
- }
39213
- finally { if (e_1) throw e_1.error; }
39214
- }
39215
- }
39216
- return items;
39217
- },
39218
- enumerable: false,
39219
- configurable: true
39220
- });
39221
- /**
39222
- * @hidden @internal
39223
- */
39224
- IgxComboDropDownComponent.prototype.onFocus = function () {
39225
- this.focusedItem = this._focusedItem || this.items[0];
39226
- };
39227
- /**
39228
- * @hidden @internal
39229
- */
39230
- IgxComboDropDownComponent.prototype.onBlur = function (_evt) {
39231
- this.focusedItem = null;
39232
- };
39233
- /**
39234
- * @hidden @internal
39235
- */
39236
- IgxComboDropDownComponent.prototype.onToggleOpened = function () {
39237
- this.opened.emit();
39238
- };
39239
- /**
39240
- * @hidden
39241
- */
39242
- IgxComboDropDownComponent.prototype.navigateFirst = function () {
39243
- this.navigateItem(this.virtDir.igxForOf.findIndex(function (e) { return !e.isHeader; }));
39244
- };
39245
- /**
39246
- * @hidden
39247
- */
39248
- IgxComboDropDownComponent.prototype.navigatePrev = function () {
39249
- if (this._focusedItem && this._focusedItem.index === 0 && this.virtDir.state.startIndex === 0) {
39250
- this.combo.focusSearchInput(false);
39251
- }
39252
- else {
39253
- _super.prototype.navigatePrev.call(this);
39254
- }
39255
- };
39256
- /**
39257
- * @hidden
39258
- */
39259
- IgxComboDropDownComponent.prototype.navigateNext = function () {
39260
- var lastIndex = this.combo.totalItemCount ? this.combo.totalItemCount - 1 : this.virtDir.igxForOf.length - 1;
39261
- if (this._focusedItem && this._focusedItem.index === lastIndex) {
39262
- this.focusAddItemButton();
39263
- }
39264
- else {
39265
- _super.prototype.navigateNext.call(this);
39266
- }
39267
- };
39268
- /**
39269
- * @hidden @internal
39270
- */
39271
- IgxComboDropDownComponent.prototype.selectItem = function (item) {
39272
- if (item === null || item === undefined) {
39273
- return;
39274
- }
39275
- this.comboAPI.set_selected_item(item.itemID);
39276
- this._focusedItem = item;
39277
- };
39278
- /**
39279
- * @hidden @internal
39280
- */
39281
- IgxComboDropDownComponent.prototype.updateScrollPosition = function () {
39282
- this.virtDir.getScroll().scrollTop = this._scrollPosition;
39283
- };
39284
- /**
39285
- * @hidden @internal
39286
- */
39287
- IgxComboDropDownComponent.prototype.onItemActionKey = function (key) {
39288
- switch (key) {
39289
- case DropDownActionKey.ENTER:
39290
- this.handleEnter();
39291
- break;
39292
- case DropDownActionKey.SPACE:
39293
- this.handleSpace();
39294
- break;
39295
- case DropDownActionKey.ESCAPE:
39296
- this.close();
39297
- }
39298
- };
39299
- IgxComboDropDownComponent.prototype.ngAfterViewInit = function () {
39300
- this.virtDir.getScroll().addEventListener('scroll', this.scrollHandler);
39301
- };
39302
- /**
39303
- * @hidden @internal
39304
- */
39305
- IgxComboDropDownComponent.prototype.ngOnDestroy = function () {
39306
- this.virtDir.getScroll().removeEventListener('scroll', this.scrollHandler);
39307
- this.destroy$.next(true);
39308
- this.destroy$.complete();
39309
- };
39310
- IgxComboDropDownComponent.prototype.scrollToHiddenItem = function (_newItem) { };
39311
- IgxComboDropDownComponent.prototype.handleEnter = function () {
39312
- if (this.isAddItemFocused()) {
39313
- this.combo.addItemToCollection();
39314
- }
39315
- else {
39316
- this.close();
39317
- }
39318
- };
39319
- IgxComboDropDownComponent.prototype.handleSpace = function () {
39320
- if (this.isAddItemFocused()) {
39321
- return;
39322
- }
39323
- else {
39324
- this.selectItem(this.focusedItem);
39325
- }
39326
- };
39327
- IgxComboDropDownComponent.prototype.isAddItemFocused = function () {
39328
- return this.focusedItem instanceof IgxComboAddItemComponent;
39329
- };
39330
- IgxComboDropDownComponent.prototype.focusAddItemButton = function () {
39331
- if (this.combo.isAddButtonVisible()) {
39332
- this.focusedItem = this.items[this.items.length - 1];
39333
- }
39334
- };
39335
- return IgxComboDropDownComponent;
39336
- }(IgxDropDownComponent));
39337
- IgxComboDropDownComponent.decorators = [
39338
- { type: i0.Component, args: [{
39339
- selector: 'igx-combo-drop-down',
39340
- 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",
39341
- providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxComboDropDownComponent }]
39342
- },] }
39343
- ];
39344
- IgxComboDropDownComponent.ctorParameters = function () { return [
39345
- { type: i0.ElementRef },
39346
- { type: i0.ChangeDetectorRef },
39347
- { type: PlatformUtil },
39348
- { type: IgxSelectionAPIService },
39349
- { type: undefined, decorators: [{ type: i0.Inject, args: [IGX_COMBO_COMPONENT,] }] },
39350
- { type: IgxComboAPIService },
39351
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [DisplayDensityToken,] }] }
39352
- ]; };
39353
- IgxComboDropDownComponent.propDecorators = {
39354
- children: [{ type: i0.ContentChildren, args: [IgxComboItemComponent, { descendants: true },] }]
38988
+ var itemsInContainer = 10; // TODO: make private readonly
38989
+ /** @hidden @internal */
38990
+ var ItemHeights = {
38991
+ comfortable: 40,
38992
+ cosy: 32,
38993
+ compact: 28,
39355
38994
  };
39356
-
39357
- /**
39358
- * @hidden
39359
- */
39360
- var IgxComboFilteringPipe = /** @class */ (function () {
39361
- function IgxComboFilteringPipe() {
39362
- }
39363
- IgxComboFilteringPipe.prototype.transform = function (collection, searchValue, displayKey, shouldFilter, filteringOptions) {
39364
- if (!collection) {
39365
- return [];
39366
- }
39367
- if (!searchValue || !shouldFilter) {
39368
- return collection;
39369
- }
39370
- else {
39371
- var searchTerm_1 = filteringOptions.caseSensitive ? searchValue.trim() : searchValue.toLowerCase().trim();
39372
- if (displayKey != null) {
39373
- return collection.filter(function (e) { return filteringOptions.caseSensitive ? e[displayKey].includes(searchTerm_1) :
39374
- e[displayKey].toString().toLowerCase().includes(searchTerm_1); });
39375
- }
39376
- else {
39377
- return collection.filter(function (e) { return filteringOptions.caseSensitive ? e.includes(searchTerm_1) :
39378
- e.toLowerCase().includes(searchTerm_1); });
39379
- }
39380
- }
39381
- };
39382
- return IgxComboFilteringPipe;
39383
- }());
39384
- IgxComboFilteringPipe.decorators = [
39385
- { type: i0.Pipe, args: [{
39386
- name: 'comboFiltering'
39387
- },] }
39388
- ];
39389
- /**
39390
- * @hidden
39391
- */
39392
- var IgxComboGroupingPipe = /** @class */ (function () {
39393
- function IgxComboGroupingPipe(combo) {
39394
- this.combo = combo;
39395
- }
39396
- IgxComboGroupingPipe.prototype.transform = function (collection, groupKey, valueKey) {
39397
- var _a;
39398
- this.combo.filteredData = collection;
39399
- if ((!groupKey && groupKey !== 0) || !collection.length) {
39400
- return collection;
39401
- }
39402
- var sorted = DataUtil.sort(cloneArray(collection), [{
39403
- fieldName: groupKey,
39404
- dir: exports.SortingDirection.Asc,
39405
- ignoreCase: true,
39406
- strategy: DefaultSortingStrategy.instance()
39407
- }]);
39408
- var data = cloneArray(sorted);
39409
- var inserts = 0;
39410
- var currentHeader = null;
39411
- for (var i = 0; i < sorted.length; i++) {
39412
- var insertFlag = 0;
39413
- if (currentHeader !== sorted[i][groupKey]) {
39414
- currentHeader = sorted[i][groupKey];
39415
- insertFlag = 1;
39416
- }
39417
- if (insertFlag) {
39418
- data.splice(i + inserts, 0, (_a = {},
39419
- _a[valueKey] = currentHeader,
39420
- _a[groupKey] = currentHeader,
39421
- _a.isHeader = true,
39422
- _a));
39423
- inserts++;
39424
- }
39425
- }
39426
- return data;
39427
- };
39428
- return IgxComboGroupingPipe;
39429
- }());
39430
- IgxComboGroupingPipe.decorators = [
39431
- { type: i0.Pipe, args: [{
39432
- name: 'comboGrouping'
39433
- },] }
39434
- ];
39435
- IgxComboGroupingPipe.ctorParameters = function () { return [
39436
- { type: undefined, decorators: [{ type: i0.Inject, args: [IGX_COMBO_COMPONENT,] }] }
39437
- ]; };
39438
-
39439
- /**
39440
- * @hidden
39441
- */
38995
+ /** @hidden @internal */
39442
38996
  var DataTypes;
39443
38997
  (function (DataTypes) {
39444
38998
  DataTypes["EMPTY"] = "empty";
@@ -39446,21 +39000,7 @@
39446
39000
  DataTypes["COMPLEX"] = "complex";
39447
39001
  DataTypes["PRIMARYKEY"] = "valueKey";
39448
39002
  })(DataTypes || (DataTypes = {}));
39449
- /**
39450
- * @hidden
39451
- */
39452
- var ItemHeights = {
39453
- comfortable: 40,
39454
- cosy: 32,
39455
- compact: 28,
39456
- };
39457
- /**
39458
- * @hidden
39459
- * The default number of items that should be in the combo's
39460
- * drop-down list if no `[itemsMaxHeight]` is specified
39461
- */
39462
- var itemsInContainer = 10;
39463
- exports.IgxComboState = void 0;
39003
+ var IgxComboState;
39464
39004
  (function (IgxComboState) {
39465
39005
  /**
39466
39006
  * Combo with initial state.
@@ -39474,54 +39014,33 @@
39474
39014
  * Combo with invalid state.
39475
39015
  */
39476
39016
  IgxComboState[IgxComboState["INVALID"] = 2] = "INVALID";
39477
- })(exports.IgxComboState || (exports.IgxComboState = {}));
39478
- /**
39479
- * When called with sets A & B, returns A - B (as array);
39480
- *
39481
- * @hidden
39482
- */
39483
- var diffInSets = function (set1, set2) {
39484
- var results = [];
39485
- set1.forEach(function (entry) {
39486
- if (!set2.has(entry)) {
39487
- results.push(entry);
39488
- }
39489
- });
39490
- return results;
39491
- };
39492
- var ɵ0$1 = diffInSets;
39493
- var NEXT_ID$c = 0;
39494
- /**
39495
- * Represents a drop-down list that provides editable functionalities, allowing users to choose an option from a predefined list.
39496
- *
39497
- * @igxModule IgxComboModule
39498
- * @igxTheme igx-combo-theme
39499
- * @igxKeywords combobox, combo selection
39500
- * @igxGroup Grids & Lists
39501
- *
39502
- * @remarks
39503
- * It provides the ability to filter items as well as perform single or multiple seleciton with the provided data.
39504
- * Additionally, it exposes keyboard navigation and custom styling capabilities.
39505
- * @example
39506
- * ```html
39507
- * <igx-combo [itemsMaxHeight]="250" [data]="locationData"
39508
- * [displayKey]="'field'" [valueKey]="'field'"
39509
- * placeholder="Location(s)" searchPlaceholder="Search...">
39510
- * </igx-combo>
39511
- * ```
39512
- */
39513
- var IgxComboComponent = /** @class */ (function (_super) {
39514
- __extends(IgxComboComponent, _super);
39515
- function IgxComboComponent(elementRef, cdr, selection, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) {
39017
+ })(IgxComboState || (IgxComboState = {}));
39018
+ var IgxComboBaseDirective = /** @class */ (function (_super) {
39019
+ __extends(IgxComboBaseDirective, _super);
39020
+ function IgxComboBaseDirective(elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) {
39516
39021
  var _this = _super.call(this, _displayDensityOptions) || this;
39517
39022
  _this.elementRef = elementRef;
39518
39023
  _this.cdr = cdr;
39519
- _this.selection = selection;
39024
+ _this.selectionService = selectionService;
39520
39025
  _this.comboAPI = comboAPI;
39521
39026
  _this._iconService = _iconService;
39522
39027
  _this._displayDensityOptions = _displayDensityOptions;
39523
39028
  _this._inputGroupType = _inputGroupType;
39524
39029
  _this._injector = _injector;
39030
+ /**
39031
+ * Defines whether the caseSensitive icon should be shown in the search input
39032
+ *
39033
+ * ```typescript
39034
+ * // get
39035
+ * let myComboShowSearchCaseIcon = this.combo.showSearchCaseIcon;
39036
+ * ```
39037
+ *
39038
+ * ```html
39039
+ * <!--set-->
39040
+ * <igx-combo [showSearchCaseIcon]='true'></igx-combo>
39041
+ * ```
39042
+ */
39043
+ _this.showSearchCaseIcon = false;
39525
39044
  /**
39526
39045
  * Set custom overlay settings that control how the combo's list of items is displayed.
39527
39046
  * Set:
@@ -39540,19 +39059,131 @@
39540
39059
  */
39541
39060
  _this.overlaySettings = null;
39542
39061
  /**
39543
- * @hidden @internal
39062
+ * Gets/gets combo id.
39063
+ *
39064
+ * ```typescript
39065
+ * // get
39066
+ * let id = this.combo.id;
39067
+ * ```
39068
+ *
39069
+ * ```html
39070
+ * <!--set-->
39071
+ * <igx-combo [id]='combo1'></igx-combo>
39072
+ * ```
39544
39073
  */
39545
- _this.searchInput = null;
39074
+ _this.id = "igx-combo-" + NEXT_ID$c++;
39546
39075
  /**
39547
- * The custom template, if any, that should be used when rendering ITEMS in the combo list
39076
+ * Controls whether custom values can be added to the collection
39548
39077
  *
39549
39078
  * ```typescript
39550
- * // Set in typescript
39551
- * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;
39552
- * myComponent.combo.itemTemplate = myCustomTemplate;
39079
+ * // get
39080
+ * let comboAllowsCustomValues = this.combo.allowCustomValues;
39553
39081
  * ```
39082
+ *
39554
39083
  * ```html
39555
- * <!-- Set in markup -->
39084
+ * <!--set-->
39085
+ * <igx-combo [allowCustomValues]='true'></igx-combo>
39086
+ * ```
39087
+ */
39088
+ _this.allowCustomValues = false;
39089
+ /**
39090
+ * Determines which column in the data source is used to determine the value.
39091
+ *
39092
+ * ```typescript
39093
+ * // get
39094
+ * let myComboValueKey = this.combo.valueKey;
39095
+ * ```
39096
+ *
39097
+ * ```html
39098
+ * <!--set-->
39099
+ * <igx-combo [valueKey]='myKey'></igx-combo>
39100
+ * ```
39101
+ */
39102
+ _this.valueKey = null;
39103
+ /**
39104
+ * An @Input property that enabled/disables filtering in the list. The default is `true`.
39105
+ * ```html
39106
+ * <igx-combo [filterable]="false">
39107
+ * ```
39108
+ */
39109
+ _this.filterable = true;
39110
+ /** @hidden @internal */
39111
+ _this.cssClass = 'igx-combo'; // Independent of display density for the time being
39112
+ /** @hidden @internal */
39113
+ _this.role = 'combobox';
39114
+ /**
39115
+ * An @Input property that enabled/disables combo. The default is `false`.
39116
+ * ```html
39117
+ * <igx-combo [disabled]="'true'">
39118
+ * ```
39119
+ */
39120
+ _this.disabled = false;
39121
+ /**
39122
+ * Emitted before the dropdown is opened
39123
+ *
39124
+ * ```html
39125
+ * <igx-combo opening='handleOpening($event)'></igx-combo>
39126
+ * ```
39127
+ */
39128
+ _this.opening = new i0.EventEmitter();
39129
+ /**
39130
+ * Emitted after the dropdown is opened
39131
+ *
39132
+ * ```html
39133
+ * <igx-combo (opened)='handleOpened($event)'></igx-combo>
39134
+ * ```
39135
+ */
39136
+ _this.opened = new i0.EventEmitter();
39137
+ /**
39138
+ * Emitted before the dropdown is closed
39139
+ *
39140
+ * ```html
39141
+ * <igx-combo (closing)='handleClosing($event)'></igx-combo>
39142
+ * ```
39143
+ */
39144
+ _this.closing = new i0.EventEmitter();
39145
+ /**
39146
+ * Emitted after the dropdown is closed
39147
+ *
39148
+ * ```html
39149
+ * <igx-combo (closed)='handleClosed($event)'></igx-combo>
39150
+ * ```
39151
+ */
39152
+ _this.closed = new i0.EventEmitter();
39153
+ /**
39154
+ * Emitted when an item is being added to the data collection
39155
+ *
39156
+ * ```html
39157
+ * <igx-combo (addition)='handleAdditionEvent($event)'></igx-combo>
39158
+ * ```
39159
+ */
39160
+ _this.addition = new i0.EventEmitter();
39161
+ /**
39162
+ * Emitted when the value of the search input changes (e.g. typing, pasting, clear, etc.)
39163
+ *
39164
+ * ```html
39165
+ * <igx-combo (searchInputUpdate)='handleSearchInputEvent($event)'></igx-combo>
39166
+ * ```
39167
+ */
39168
+ _this.searchInputUpdate = new i0.EventEmitter();
39169
+ /**
39170
+ * Emitted when new chunk of data is loaded from the virtualization
39171
+ *
39172
+ * ```html
39173
+ * <igx-combo (dataPreLoad)='handleDataPreloadEvent($event)'></igx-combo>
39174
+ * ```
39175
+ */
39176
+ _this.dataPreLoad = new i0.EventEmitter();
39177
+ /**
39178
+ * The custom template, if any, that should be used when rendering ITEMS in the combo list
39179
+ *
39180
+ * ```typescript
39181
+ * // Set in typescript
39182
+ * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;
39183
+ * myComponent.combo.itemTemplate = myCustomTemplate;
39184
+ * ```
39185
+ * ```html
39186
+ * <!-- Set in markup -->
39556
39187
  * <igx-combo #combo>
39557
39188
  * ...
39558
39189
  * <ng-template igxComboItem>
@@ -39706,267 +39337,57 @@
39706
39337
  * ```
39707
39338
  */
39708
39339
  _this.clearIconTemplate = null;
39709
- /**
39710
- * Emitted when item selection is changing, before the selection completes
39711
- *
39712
- * ```html
39713
- * <igx-combo (selectionChanging)='handleSelection()'></igx-combo>
39714
- * ```
39715
- */
39716
- _this.selectionChanging = new i0.EventEmitter();
39717
- /**
39718
- * Emitted before the dropdown is opened
39719
- *
39720
- * ```html
39721
- * <igx-combo opening='handleOpening($event)'></igx-combo>
39722
- * ```
39723
- */
39724
- _this.opening = new i0.EventEmitter();
39725
- /**
39726
- * Emitted after the dropdown is opened
39727
- *
39728
- * ```html
39729
- * <igx-combo (opened)='handleOpened($event)'></igx-combo>
39730
- * ```
39731
- */
39732
- _this.opened = new i0.EventEmitter();
39733
- /**
39734
- * Emitted before the dropdown is closed
39735
- *
39736
- * ```html
39737
- * <igx-combo (closing)='handleClosing($event)'></igx-combo>
39738
- * ```
39739
- */
39740
- _this.closing = new i0.EventEmitter();
39741
- /**
39742
- * Emitted after the dropdown is closed
39743
- *
39744
- * ```html
39745
- * <igx-combo (closed)='handleClosed($event)'></igx-combo>
39746
- * ```
39747
- */
39748
- _this.closed = new i0.EventEmitter();
39749
- /**
39750
- * Emitted when an item is being added to the data collection
39751
- *
39752
- * ```html
39753
- * <igx-combo (addition)='handleAdditionEvent($event)'></igx-combo>
39754
- * ```
39755
- */
39756
- _this.addition = new i0.EventEmitter();
39757
- /**
39758
- * Emitted when the value of the search input changes (e.g. typing, pasting, clear, etc.)
39759
- *
39760
- * ```html
39761
- * <igx-combo (searchInputUpdate)='handleSearchInputEvent($event)'></igx-combo>
39762
- * ```
39763
- */
39764
- _this.searchInputUpdate = new i0.EventEmitter();
39765
- /**
39766
- * Emitted when new chunk of data is loaded from the virtualization
39767
- *
39768
- * ```html
39769
- * <igx-combo (dataPreLoad)='handleDataPreloadEvent($event)'></igx-combo>
39770
- * ```
39771
- */
39772
- _this.dataPreLoad = new i0.EventEmitter();
39773
- /**
39774
- * Gets/gets combo id.
39775
- *
39776
- * ```typescript
39777
- * // get
39778
- * let id = this.combo.id;
39779
- * ```
39780
- *
39781
- * ```html
39782
- * <!--set-->
39783
- * <igx-combo [id]='combo1'></igx-combo>
39784
- * ```
39785
- */
39786
- _this.id = "igx-combo-" + NEXT_ID$c++;
39787
- /**
39788
- * @hidden @internal
39789
- */
39790
- _this.cssClass = 'igx-combo'; // Independent of display density, at the time being
39791
- /**
39792
- * @hidden @internal
39793
- */
39794
- _this.role = 'combobox';
39795
- /**
39796
- * Controls whether custom values can be added to the collection
39797
- *
39798
- * ```typescript
39799
- * // get
39800
- * let comboAllowsCustomValues = this.combo.allowCustomValues;
39801
- * ```
39802
- *
39803
- * ```html
39804
- * <!--set-->
39805
- * <igx-combo [allowCustomValues]='true'></igx-combo>
39806
- * ```
39807
- */
39808
- _this.allowCustomValues = false;
39809
- /**
39810
- * Defines the placeholder value for the combo dropdown search field
39811
- *
39812
- * ```typescript
39813
- * // get
39814
- * let myComboSearchPlaceholder = this.combo.searchPlaceholder;
39815
- * ```
39816
- *
39817
- * ```html
39818
- * <!--set-->
39819
- * <igx-combo [searchPlaceholder]='newPlaceHolder'></igx-combo>
39820
- * ```
39821
- */
39822
- _this.searchPlaceholder = 'Enter a Search Term';
39823
- /**
39824
- * Defines whether the caseSensitive icon should be shown in the search input
39825
- *
39826
- * ```typescript
39827
- * // get
39828
- * let myComboShowSearchCaseIcon = this.combo.showSearchCaseIcon;
39829
- * ```
39830
- *
39831
- * ```html
39832
- * <!--set-->
39833
- * <igx-combo [showSearchCaseIcon]='true'></igx-combo>
39834
- * ```
39835
- */
39836
- _this.showSearchCaseIcon = false;
39837
- /**
39838
- * Combo value data source property.
39839
- *
39840
- * ```typescript
39841
- * // get
39842
- * let myComboValueKey = this.combo.valueKey;
39843
- * ```
39844
- *
39845
- * ```html
39846
- * <!--set-->
39847
- * <igx-combo [valueKey]='myKey'></igx-combo>
39848
- * ```
39849
- */
39850
- _this.valueKey = null;
39851
- /**
39852
- * An @Input property that enabled/disables filtering in the list. The default is `true`.
39853
- * ```html
39854
- * <igx-combo [filterable]="false">
39855
- * ```
39856
- */
39857
- _this.filterable = true;
39858
- /**
39859
- * An @Input property that enabled/disables combo. The default is `false`.
39860
- * ```html
39861
- * <igx-combo [disabled]="'true'">
39862
- * ```
39863
- */
39864
- _this.disabled = false;
39865
- /**
39866
- * An @Input property that controls whether the combo's search box
39867
- * should be focused after the `opened` event is called
39868
- * When `false`, the combo's list item container will be focused instead
39869
- */
39870
- _this.autoFocusSearch = true;
39340
+ /** @hidden @internal */
39341
+ _this.searchInput = null;
39871
39342
  _this.dropdownContainer = null;
39872
- /**
39873
- * @hidden @internal
39874
- */
39343
+ /** @hidden @internal */
39875
39344
  _this.customValueFlag = true;
39876
- /**
39877
- * @hidden @internal
39878
- */
39345
+ /** @hidden @internal */
39346
+ _this.filterValue = '';
39347
+ /** @hidden @internal */
39879
39348
  _this.defaultFallbackGroup = 'Other';
39880
- /**
39881
- * @hidden @internal
39882
- */
39349
+ /** @hidden @internal */
39883
39350
  _this.filteringOptions = {
39884
39351
  caseSensitive: false
39885
39352
  };
39886
- /**
39887
- * @hidden @internal
39888
- */
39889
- _this.filteringLogic = exports.FilteringLogic.Or;
39890
- /** @hidden @internal */
39891
- _this.filterValue = '';
39892
- _this.stringFilters = IgxStringFilteringOperand;
39893
- _this.booleanFilters = IgxBooleanFilteringOperand;
39353
+ _this._data = [];
39354
+ _this._value = '';
39894
39355
  _this._groupKey = '';
39895
- _this._prevInputValue = '';
39896
- _this._dataType = '';
39897
- _this._searchValue = '';
39898
- _this._type = null;
39356
+ _this._filteredData = [];
39357
+ _this._remoteSelection = {};
39358
+ _this._valid = IgxComboState.INITIAL;
39899
39359
  _this.ngControl = null;
39900
39360
  _this.destroy$ = new rxjs.Subject();
39901
- _this._data = [];
39902
- _this._filteredData = [];
39361
+ _this._onTouchedCallback = rxjs.noop;
39362
+ _this._onChangeCallback = rxjs.noop;
39363
+ _this._type = null;
39364
+ _this._dataType = '';
39365
+ _this._searchValue = '';
39903
39366
  _this._itemHeight = null;
39904
39367
  _this._itemsMaxHeight = null;
39905
- _this._remoteSelection = {};
39906
- _this._onChangeCallback = rxjs.noop;
39907
- _this._onTouchedCallback = rxjs.noop;
39908
- _this._value = '';
39909
- _this._valid = exports.IgxComboState.INITIAL;
39910
39368
  _this.onStatusChanged = function () {
39911
39369
  if ((_this.ngControl.control.touched || _this.ngControl.control.dirty) &&
39912
39370
  (_this.ngControl.control.validator || _this.ngControl.control.asyncValidator)) {
39913
39371
  if (!_this.collapsed || _this.inputGroup.isFocused) {
39914
- _this.valid = _this.ngControl.invalid ? exports.IgxComboState.INVALID : exports.IgxComboState.VALID;
39372
+ _this.valid = _this.ngControl.invalid ? IgxComboState.INVALID : IgxComboState.VALID;
39915
39373
  }
39916
39374
  else {
39917
- _this.valid = _this.ngControl.invalid ? exports.IgxComboState.INVALID : exports.IgxComboState.INITIAL;
39375
+ _this.valid = _this.ngControl.invalid ? IgxComboState.INVALID : IgxComboState.INITIAL;
39918
39376
  }
39919
39377
  }
39920
39378
  else {
39921
39379
  // B.P. 18 May 2021: IgxDatePicker does not reset its state upon resetForm #9526
39922
- _this.valid = exports.IgxComboState.INITIAL;
39380
+ _this.valid = IgxComboState.INITIAL;
39923
39381
  }
39924
39382
  _this.manageRequiredAsterisk();
39925
39383
  };
39926
- _this.comboAPI.register(_this);
39384
+ _this.findMatch = function (element) {
39385
+ var value = _this.displayKey ? element[_this.displayKey] : element;
39386
+ return value.toString().toLowerCase() === _this.searchValue.trim().toLowerCase();
39387
+ };
39927
39388
  return _this;
39928
39389
  }
39929
- Object.defineProperty(IgxComboComponent.prototype, "displaySearchInput", {
39930
- /**
39931
- * @hidden @internal
39932
- */
39933
- get: function () {
39934
- return this.filterable || this.allowCustomValues;
39935
- },
39936
- enumerable: false,
39937
- configurable: true
39938
- });
39939
- Object.defineProperty(IgxComboComponent.prototype, "ariaExpanded", {
39940
- /**
39941
- * @hidden @internal
39942
- */
39943
- get: function () {
39944
- return !this.dropdown.collapsed;
39945
- },
39946
- enumerable: false,
39947
- configurable: true
39948
- });
39949
- Object.defineProperty(IgxComboComponent.prototype, "hasPopUp", {
39950
- /**
39951
- * @hidden @internal
39952
- */
39953
- get: function () {
39954
- return 'listbox';
39955
- },
39956
- enumerable: false,
39957
- configurable: true
39958
- });
39959
- Object.defineProperty(IgxComboComponent.prototype, "ariaOwns", {
39960
- /**
39961
- * @hidden @internal
39962
- */
39963
- get: function () {
39964
- return this.dropdown.id;
39965
- },
39966
- enumerable: false,
39967
- configurable: true
39968
- });
39969
- Object.defineProperty(IgxComboComponent.prototype, "itemsMaxHeight", {
39390
+ Object.defineProperty(IgxComboBaseDirective.prototype, "itemsMaxHeight", {
39970
39391
  /**
39971
39392
  * Configures the drop down list height
39972
39393
  *
@@ -39992,7 +39413,7 @@
39992
39413
  enumerable: false,
39993
39414
  configurable: true
39994
39415
  });
39995
- Object.defineProperty(IgxComboComponent.prototype, "itemHeight", {
39416
+ Object.defineProperty(IgxComboBaseDirective.prototype, "itemHeight", {
39996
39417
  /**
39997
39418
  * Configures the drop down list item height
39998
39419
  *
@@ -40018,17 +39439,7 @@
40018
39439
  enumerable: false,
40019
39440
  configurable: true
40020
39441
  });
40021
- Object.defineProperty(IgxComboComponent.prototype, "inputEmpty", {
40022
- /**
40023
- * @hidden @internal
40024
- */
40025
- get: function () {
40026
- return !this.value && !this.placeholder;
40027
- },
40028
- enumerable: false,
40029
- configurable: true
40030
- });
40031
- Object.defineProperty(IgxComboComponent.prototype, "data", {
39442
+ Object.defineProperty(IgxComboBaseDirective.prototype, "data", {
40032
39443
  /**
40033
39444
  * Combo data source.
40034
39445
  *
@@ -40046,9 +39457,9 @@
40046
39457
  enumerable: false,
40047
39458
  configurable: true
40048
39459
  });
40049
- Object.defineProperty(IgxComboComponent.prototype, "displayKey", {
39460
+ Object.defineProperty(IgxComboBaseDirective.prototype, "displayKey", {
40050
39461
  /**
40051
- * Combo text data source property.
39462
+ * Determines which column in the data source is used to determine the display value.
40052
39463
  *
40053
39464
  * ```typescript
40054
39465
  * // get
@@ -40073,7 +39484,7 @@
40073
39484
  enumerable: false,
40074
39485
  configurable: true
40075
39486
  });
40076
- Object.defineProperty(IgxComboComponent.prototype, "groupKey", {
39487
+ Object.defineProperty(IgxComboBaseDirective.prototype, "groupKey", {
40077
39488
  /**
40078
39489
  * The item property by which items should be grouped inside the items list. Not usable if data is not of type Object[].
40079
39490
  *
@@ -40099,7 +39510,31 @@
40099
39510
  enumerable: false,
40100
39511
  configurable: true
40101
39512
  });
40102
- Object.defineProperty(IgxComboComponent.prototype, "type", {
39513
+ Object.defineProperty(IgxComboBaseDirective.prototype, "ariaExpanded", {
39514
+ /** @hidden @internal */
39515
+ get: function () {
39516
+ return !this.dropdown.collapsed;
39517
+ },
39518
+ enumerable: false,
39519
+ configurable: true
39520
+ });
39521
+ Object.defineProperty(IgxComboBaseDirective.prototype, "hasPopUp", {
39522
+ /** @hidden @internal */
39523
+ get: function () {
39524
+ return 'listbox';
39525
+ },
39526
+ enumerable: false,
39527
+ configurable: true
39528
+ });
39529
+ Object.defineProperty(IgxComboBaseDirective.prototype, "ariaOwns", {
39530
+ /** @hidden @internal */
39531
+ get: function () {
39532
+ return this.dropdown.id;
39533
+ },
39534
+ enumerable: false,
39535
+ configurable: true
39536
+ });
39537
+ Object.defineProperty(IgxComboBaseDirective.prototype, "type", {
40103
39538
  /**
40104
39539
  * An @Input property that sets how the combo will be styled.
40105
39540
  * The allowed values are `line`, `box`, `border` and `search`. The default is `box`.
@@ -40116,7 +39551,40 @@
40116
39551
  enumerable: false,
40117
39552
  configurable: true
40118
39553
  });
40119
- Object.defineProperty(IgxComboComponent.prototype, "valid", {
39554
+ Object.defineProperty(IgxComboBaseDirective.prototype, "searchValue", {
39555
+ /** @hidden @internal */
39556
+ get: function () {
39557
+ return this._searchValue;
39558
+ },
39559
+ set: function (val) {
39560
+ this.filterValue = val;
39561
+ this._searchValue = val;
39562
+ },
39563
+ enumerable: false,
39564
+ configurable: true
39565
+ });
39566
+ Object.defineProperty(IgxComboBaseDirective.prototype, "isRemote", {
39567
+ /** @hidden @internal */
39568
+ get: function () {
39569
+ return this.totalItemCount > 0 &&
39570
+ this.valueKey &&
39571
+ this.dataType === DataTypes.COMPLEX;
39572
+ },
39573
+ enumerable: false,
39574
+ configurable: true
39575
+ });
39576
+ Object.defineProperty(IgxComboBaseDirective.prototype, "dataType", {
39577
+ /** @hidden @internal */
39578
+ get: function () {
39579
+ if (this.displayKey) {
39580
+ return DataTypes.COMPLEX;
39581
+ }
39582
+ return DataTypes.PRIMITIVE;
39583
+ },
39584
+ enumerable: false,
39585
+ configurable: true
39586
+ });
39587
+ Object.defineProperty(IgxComboBaseDirective.prototype, "valid", {
40120
39588
  /**
40121
39589
  * Gets if control is valid, when used in a form
40122
39590
  *
@@ -40138,44 +39606,27 @@
40138
39606
  */
40139
39607
  set: function (valid) {
40140
39608
  this._valid = valid;
40141
- this.comboInput.valid = exports.IgxInputState[exports.IgxComboState[valid]];
39609
+ this.comboInput.valid = exports.IgxInputState[IgxComboState[valid]];
40142
39610
  },
40143
39611
  enumerable: false,
40144
39612
  configurable: true
40145
39613
  });
40146
- Object.defineProperty(IgxComboComponent.prototype, "searchValue", {
39614
+ Object.defineProperty(IgxComboBaseDirective.prototype, "value", {
40147
39615
  /**
40148
- * @hidden @internal
39616
+ * The text displayed in the combo input
39617
+ *
39618
+ * ```typescript
39619
+ * // get
39620
+ * let comboValue = this.combo.value;
39621
+ * ```
40149
39622
  */
40150
39623
  get: function () {
40151
- return this._searchValue;
40152
- },
40153
- set: function (val) {
40154
- this.filterValue = val;
40155
- this._searchValue = val;
39624
+ return this._value;
40156
39625
  },
40157
39626
  enumerable: false,
40158
39627
  configurable: true
40159
39628
  });
40160
- /**
40161
- * @hidden @internal
40162
- */
40163
- IgxComboComponent.prototype.onArrowDown = function (event) {
40164
- event.preventDefault();
40165
- event.stopPropagation();
40166
- this.open();
40167
- };
40168
- /**
40169
- * @hidden @internal
40170
- */
40171
- IgxComboComponent.prototype.onInputClick = function (event) {
40172
- event.stopPropagation();
40173
- event.preventDefault();
40174
- if (!this.disabled) {
40175
- this.toggle();
40176
- }
40177
- };
40178
- Object.defineProperty(IgxComboComponent.prototype, "virtualizationState", {
39629
+ Object.defineProperty(IgxComboBaseDirective.prototype, "virtualizationState", {
40179
39630
  /**
40180
39631
  * Defines the current state of the virtualized data. It contains `startIndex` and `chunkSize`
40181
39632
  *
@@ -40201,7 +39652,21 @@
40201
39652
  enumerable: false,
40202
39653
  configurable: true
40203
39654
  });
40204
- Object.defineProperty(IgxComboComponent.prototype, "totalItemCount", {
39655
+ Object.defineProperty(IgxComboBaseDirective.prototype, "collapsed", {
39656
+ /**
39657
+ * Gets drop down state.
39658
+ *
39659
+ * ```typescript
39660
+ * let state = this.combo.collapsed;
39661
+ * ```
39662
+ */
39663
+ get: function () {
39664
+ return this.dropdown.collapsed;
39665
+ },
39666
+ enumerable: false,
39667
+ configurable: true
39668
+ });
39669
+ Object.defineProperty(IgxComboBaseDirective.prototype, "totalItemCount", {
40205
39670
  /**
40206
39671
  * Gets total count of the virtual data items, when using remote service.
40207
39672
  *
@@ -40227,68 +39692,178 @@
40227
39692
  enumerable: false,
40228
39693
  configurable: true
40229
39694
  });
40230
- Object.defineProperty(IgxComboComponent.prototype, "value", {
40231
- /**
40232
- * The text displayed in the combo input
40233
- *
40234
- * ```typescript
40235
- * // get
40236
- * let comboValue = this.combo.value;
40237
- * ```
40238
- */
40239
- get: function () {
40240
- return this._value;
40241
- },
40242
- enumerable: false,
40243
- configurable: true
40244
- });
40245
- Object.defineProperty(IgxComboComponent.prototype, "filteredData", {
40246
- /**
40247
- * @hidden @internal
40248
- */
39695
+ Object.defineProperty(IgxComboBaseDirective.prototype, "template", {
39696
+ /** @hidden @internal */
40249
39697
  get: function () {
40250
- return this.filterable ? this._filteredData : this.data;
40251
- },
40252
- /**
40253
- * @hidden @internal
40254
- */
40255
- set: function (val) {
40256
- this._filteredData = this.groupKey ? (val || []).filter(function (e) { return e.isHeader !== true; }) : val;
40257
- this.checkMatch();
39698
+ this._dataType = this.dataType;
39699
+ if (this.itemTemplate) {
39700
+ return this.itemTemplate;
39701
+ }
39702
+ if (this._dataType === DataTypes.COMPLEX) {
39703
+ return this.complexTemplate;
39704
+ }
39705
+ return this.primitiveTemplate;
40258
39706
  },
40259
39707
  enumerable: false,
40260
39708
  configurable: true
40261
39709
  });
40262
- /**
40263
- * @hidden @internal
40264
- */
40265
- IgxComboComponent.prototype.handleKeyUp = function (event) {
40266
- if (event.key === 'ArrowDown' || event.key === 'Down') {
40267
- this.dropdown.focusedItem = this.dropdown.items[0];
40268
- this.dropdownContainer.nativeElement.focus();
40269
- }
40270
- else if (event.key === 'Escape' || event.key === 'Esc') {
40271
- this.toggle();
40272
- }
40273
- };
40274
- /**
40275
- * @hidden @internal
40276
- */
40277
- IgxComboComponent.prototype.handleKeyDown = function (event) {
40278
- if (event.key === 'ArrowUp' || event.key === 'Up') {
40279
- event.preventDefault();
40280
- event.stopPropagation();
40281
- this.close();
40282
- }
39710
+ /** @hidden @internal */
39711
+ IgxComboBaseDirective.prototype.onArrowDown = function (event) {
39712
+ event.preventDefault();
39713
+ event.stopPropagation();
39714
+ this.open();
40283
39715
  };
40284
- /**
40285
- * @hidden @internal
40286
- */
40287
- IgxComboComponent.prototype.handleInputChange = function (event) {
40288
- if (event !== undefined) {
40289
- var args = {
40290
- searchText: event,
40291
- owner: this,
39716
+ /** @hidden @internal */
39717
+ IgxComboBaseDirective.prototype.ngOnInit = function () {
39718
+ this.ngControl = this._injector.get(forms.NgControl, null);
39719
+ var targetElement = this.elementRef.nativeElement;
39720
+ this._overlaySettings = {
39721
+ target: targetElement,
39722
+ scrollStrategy: new AbsoluteScrollStrategy(),
39723
+ positionStrategy: new AutoPositionStrategy(),
39724
+ modal: false,
39725
+ closeOnOutsideClick: true,
39726
+ excludeFromOutsideClick: [targetElement]
39727
+ };
39728
+ this.selectionService.set(this.id, new Set());
39729
+ this._iconService.addSvgIconFromText(materialIconsExtended.caseSensitive.name, materialIconsExtended.caseSensitive.value, 'imx-icons');
39730
+ };
39731
+ /** @hidden @internal */
39732
+ IgxComboBaseDirective.prototype.ngAfterViewInit = function () {
39733
+ var _this = this;
39734
+ this.filteredData = __spreadArray([], __read(this.data));
39735
+ if (this.ngControl) {
39736
+ this.ngControl.statusChanges.pipe(operators.takeUntil(this.destroy$)).subscribe(this.onStatusChanged);
39737
+ this.manageRequiredAsterisk();
39738
+ this.cdr.detectChanges();
39739
+ }
39740
+ this.virtDir.chunkPreload.pipe(operators.takeUntil(this.destroy$)).subscribe(function (e) {
39741
+ var eventArgs = Object.assign({}, e, { owner: _this });
39742
+ _this.dataPreLoad.emit(eventArgs);
39743
+ });
39744
+ };
39745
+ /** @hidden @internal */
39746
+ IgxComboBaseDirective.prototype.ngOnDestroy = function () {
39747
+ this.destroy$.next();
39748
+ this.destroy$.complete();
39749
+ this.comboAPI.clear();
39750
+ this.selectionService.clear(this.id);
39751
+ };
39752
+ /**
39753
+ * A method that opens/closes the combo.
39754
+ *
39755
+ * ```html
39756
+ * <button (click)="combo.toggle()">Toggle Combo</button>
39757
+ * <igx-combo #combo></igx-combo>
39758
+ * ```
39759
+ */
39760
+ IgxComboBaseDirective.prototype.toggle = function () {
39761
+ var overlaySettings = Object.assign({}, this._overlaySettings, this.overlaySettings);
39762
+ this.dropdown.toggle(overlaySettings);
39763
+ };
39764
+ /**
39765
+ * A method that opens the combo.
39766
+ *
39767
+ * ```html
39768
+ * <button (click)="combo.open()">Open Combo</button>
39769
+ * <igx-combo #combo></igx-combo>
39770
+ * ```
39771
+ */
39772
+ IgxComboBaseDirective.prototype.open = function () {
39773
+ var overlaySettings = Object.assign({}, this._overlaySettings, this.overlaySettings);
39774
+ this.dropdown.open(overlaySettings);
39775
+ };
39776
+ /**
39777
+ * A method that closes the combo.
39778
+ *
39779
+ * ```html
39780
+ * <button (click)="combo.close()">Close Combo</button>
39781
+ * <igx-combo #combo></igx-combo>
39782
+ * ```
39783
+ */
39784
+ IgxComboBaseDirective.prototype.close = function () {
39785
+ this.dropdown.close();
39786
+ };
39787
+ /**
39788
+ * Triggers change detection on the combo view
39789
+ */
39790
+ IgxComboBaseDirective.prototype.triggerCheck = function () {
39791
+ this.cdr.detectChanges();
39792
+ };
39793
+ Object.defineProperty(IgxComboBaseDirective.prototype, "selection", {
39794
+ /**
39795
+ * Get current selection state
39796
+ *
39797
+ * @returns Array of selected items
39798
+ * ```typescript
39799
+ * let selectedItems = this.combo.selectedItems();
39800
+ * ```
39801
+ */
39802
+ get: function () {
39803
+ var items = Array.from(this.selectionService.get(this.id));
39804
+ return items;
39805
+ },
39806
+ enumerable: false,
39807
+ configurable: true
39808
+ });
39809
+ /**
39810
+ * Returns if the specified itemID is selected
39811
+ *
39812
+ * @hidden
39813
+ * @internal
39814
+ */
39815
+ IgxComboBaseDirective.prototype.isItemSelected = function (item) {
39816
+ return this.selectionService.is_item_selected(this.id, item);
39817
+ };
39818
+ /** @hidden @internal */
39819
+ IgxComboBaseDirective.prototype.addItemToCollection = function () {
39820
+ var _b, _c;
39821
+ var _a;
39822
+ if (!this.searchValue) {
39823
+ return;
39824
+ }
39825
+ var newValue = this.searchValue.trim();
39826
+ var addedItem = this.displayKey ? (_b = {},
39827
+ _b[this.valueKey] = newValue,
39828
+ _b[this.displayKey] = newValue,
39829
+ _b) : newValue;
39830
+ if (this.groupKey) {
39831
+ Object.assign(addedItem, (_c = {}, _c[this.groupKey] = this.defaultFallbackGroup, _c));
39832
+ }
39833
+ // expose shallow copy instead of this.data in event args so this.data can't be mutated
39834
+ var oldCollection = __spreadArray([], __read(this.data));
39835
+ var newCollection = __spreadArray(__spreadArray([], __read(this.data)), [addedItem]);
39836
+ var args = {
39837
+ oldCollection: oldCollection,
39838
+ addedItem: addedItem,
39839
+ newCollection: newCollection,
39840
+ owner: this, cancel: false
39841
+ };
39842
+ this.addition.emit(args);
39843
+ if (args.cancel) {
39844
+ return;
39845
+ }
39846
+ this.data.push(args.addedItem);
39847
+ // trigger re-render
39848
+ this.data = cloneArray(this.data);
39849
+ this.select(this.valueKey !== null && this.valueKey !== undefined ?
39850
+ [args.addedItem[this.valueKey]] : [args.addedItem], false);
39851
+ this.customValueFlag = false;
39852
+ (_a = this.searchInput) === null || _a === void 0 ? void 0 : _a.nativeElement.focus();
39853
+ this.dropdown.focusedItem = null;
39854
+ this.virtDir.scrollTo(0);
39855
+ };
39856
+ /** @hidden @internal */
39857
+ IgxComboBaseDirective.prototype.isAddButtonVisible = function () {
39858
+ // This should always return a boolean value. If this.searchValue was '', it returns '' instead of false;
39859
+ return this.searchValue !== '' && this.customValueFlag;
39860
+ };
39861
+ /** @hidden @internal */
39862
+ IgxComboBaseDirective.prototype.handleInputChange = function (event) {
39863
+ if (event !== undefined) {
39864
+ var args = {
39865
+ searchText: typeof event === 'string' ? event : event.target.value,
39866
+ owner: this,
40292
39867
  cancel: false
40293
39868
  };
40294
39869
  this.searchInputUpdate.emit(args);
@@ -40296,54 +39871,712 @@
40296
39871
  this.filterValue = null;
40297
39872
  }
40298
39873
  }
40299
- this.checkMatch();
39874
+ this.checkMatch();
39875
+ };
39876
+ /**
39877
+ * Event handlers
39878
+ *
39879
+ * @hidden
39880
+ * @internal
39881
+ */
39882
+ IgxComboBaseDirective.prototype.handleOpening = function (e) {
39883
+ var args = { owner: this, event: e.event, cancel: e.cancel };
39884
+ this.opening.emit(args);
39885
+ e.cancel = args.cancel;
39886
+ };
39887
+ /** @hidden @internal */
39888
+ IgxComboBaseDirective.prototype.handleClosing = function (e) {
39889
+ var _a;
39890
+ var args = { owner: this, event: e.event, cancel: e.cancel };
39891
+ this.closing.emit(args);
39892
+ e.cancel = args.cancel;
39893
+ if (e.cancel) {
39894
+ return;
39895
+ }
39896
+ this.searchValue = '';
39897
+ if (!e.event) {
39898
+ (_a = this.comboInput) === null || _a === void 0 ? void 0 : _a.nativeElement.focus();
39899
+ }
39900
+ };
39901
+ /** @hidden @internal */
39902
+ IgxComboBaseDirective.prototype.handleClosed = function () {
39903
+ this.closed.emit({ owner: this });
39904
+ };
39905
+ /** @hidden @internal */
39906
+ IgxComboBaseDirective.prototype.handleKeyDown = function (event) {
39907
+ if (event.key === 'ArrowUp' || event.key === 'Up') {
39908
+ event.preventDefault();
39909
+ event.stopPropagation();
39910
+ this.close();
39911
+ }
39912
+ };
39913
+ /** @hidden @internal */
39914
+ IgxComboBaseDirective.prototype.registerOnChange = function (fn) {
39915
+ this._onChangeCallback = fn;
39916
+ };
39917
+ /** @hidden @internal */
39918
+ IgxComboBaseDirective.prototype.registerOnTouched = function (fn) {
39919
+ this._onTouchedCallback = fn;
39920
+ };
39921
+ /** @hidden @internal */
39922
+ IgxComboBaseDirective.prototype.setDisabledState = function (isDisabled) {
39923
+ this.disabled = isDisabled;
39924
+ };
39925
+ /** @hidden @internal */
39926
+ IgxComboBaseDirective.prototype.onClick = function (event) {
39927
+ event.stopPropagation();
39928
+ event.preventDefault();
39929
+ if (!this.disabled) {
39930
+ this.toggle();
39931
+ }
39932
+ };
39933
+ /** @hidden @internal */
39934
+ IgxComboBaseDirective.prototype.onBlur = function () {
39935
+ if (this.collapsed) {
39936
+ this._onTouchedCallback();
39937
+ if (this.ngControl && this.ngControl.invalid) {
39938
+ this.valid = IgxComboState.INVALID;
39939
+ }
39940
+ else {
39941
+ this.valid = IgxComboState.INITIAL;
39942
+ }
39943
+ }
39944
+ };
39945
+ /** @hidden @internal */
39946
+ IgxComboBaseDirective.prototype.toggleCaseSensitive = function () {
39947
+ this.filteringOptions = { caseSensitive: !this.filteringOptions.caseSensitive };
39948
+ };
39949
+ /** if there is a valueKey - map the keys to data items, else - just return the keys */
39950
+ IgxComboBaseDirective.prototype.convertKeysToItems = function (keys) {
39951
+ var _this = this;
39952
+ if (this.comboAPI.valueKey === null) {
39953
+ return keys;
39954
+ }
39955
+ // map keys vs. filter data to retain the order of the selected items
39956
+ return keys.map(function (key) { return _this.data.find(function (entry) { return entry[_this.valueKey] === key; }); }).filter(function (e) { return e !== undefined; });
39957
+ };
39958
+ IgxComboBaseDirective.prototype.checkMatch = function () {
39959
+ var itemMatch = this.filteredData.some(this.findMatch);
39960
+ this.customValueFlag = this.allowCustomValues && !itemMatch;
39961
+ };
39962
+ IgxComboBaseDirective.prototype.manageRequiredAsterisk = function () {
39963
+ if (this.ngControl && this.ngControl.control.validator) {
39964
+ // Run the validation with empty object to check if required is enabled.
39965
+ var error = this.ngControl.control.validator({});
39966
+ this.inputGroup.isRequired = error && error.required;
39967
+ }
39968
+ };
39969
+ /** Contains key-value pairs of the selected valueKeys and their resp. displayKeys */
39970
+ IgxComboBaseDirective.prototype.registerRemoteEntries = function (ids, add) {
39971
+ var e_1, _b, e_2, _c;
39972
+ if (add === void 0) { add = true; }
39973
+ if (add) {
39974
+ var selection = this.getValueDisplayPairs(ids);
39975
+ try {
39976
+ for (var selection_1 = __values(selection), selection_1_1 = selection_1.next(); !selection_1_1.done; selection_1_1 = selection_1.next()) {
39977
+ var entry = selection_1_1.value;
39978
+ this._remoteSelection[entry[this.valueKey]] = entry[this.displayKey];
39979
+ }
39980
+ }
39981
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
39982
+ finally {
39983
+ try {
39984
+ if (selection_1_1 && !selection_1_1.done && (_b = selection_1.return)) _b.call(selection_1);
39985
+ }
39986
+ finally { if (e_1) throw e_1.error; }
39987
+ }
39988
+ }
39989
+ else {
39990
+ try {
39991
+ for (var ids_1 = __values(ids), ids_1_1 = ids_1.next(); !ids_1_1.done; ids_1_1 = ids_1.next()) {
39992
+ var entry = ids_1_1.value;
39993
+ delete this._remoteSelection[entry];
39994
+ }
39995
+ }
39996
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
39997
+ finally {
39998
+ try {
39999
+ if (ids_1_1 && !ids_1_1.done && (_c = ids_1.return)) _c.call(ids_1);
40000
+ }
40001
+ finally { if (e_2) throw e_2.error; }
40002
+ }
40003
+ }
40004
+ };
40005
+ /**
40006
+ * For `id: any[]` returns a mapped `{ [combo.valueKey]: any, [combo.displayKey]: any }[]`
40007
+ */
40008
+ IgxComboBaseDirective.prototype.getValueDisplayPairs = function (ids) {
40009
+ var _this = this;
40010
+ return this.data.filter(function (entry) { return ids.indexOf(entry[_this.valueKey]) > -1; }).map(function (e) {
40011
+ var _b;
40012
+ return (_b = {},
40013
+ _b[_this.valueKey] = e[_this.valueKey],
40014
+ _b[_this.displayKey] = e[_this.displayKey],
40015
+ _b);
40016
+ });
40017
+ };
40018
+ IgxComboBaseDirective.prototype.getRemoteSelection = function (newSelection, oldSelection) {
40019
+ var _this = this;
40020
+ if (!newSelection.length) {
40021
+ // If new selection is empty, clear all items
40022
+ this.registerRemoteEntries(oldSelection, false);
40023
+ return '';
40024
+ }
40025
+ var removedItems = oldSelection.filter(function (e) { return newSelection.indexOf(e) < 0; });
40026
+ var addedItems = newSelection.filter(function (e) { return oldSelection.indexOf(e) < 0; });
40027
+ this.registerRemoteEntries(addedItems);
40028
+ this.registerRemoteEntries(removedItems, false);
40029
+ return Object.keys(this._remoteSelection).map(function (e) { return _this._remoteSelection[e]; }).join(', ');
40030
+ };
40031
+ return IgxComboBaseDirective;
40032
+ }(DisplayDensityBase));
40033
+ IgxComboBaseDirective.decorators = [
40034
+ { type: i0.Directive }
40035
+ ];
40036
+ IgxComboBaseDirective.ctorParameters = function () { return [
40037
+ { type: i0.ElementRef },
40038
+ { type: i0.ChangeDetectorRef },
40039
+ { type: IgxSelectionAPIService },
40040
+ { type: IgxComboAPIService },
40041
+ { type: IgxIconService },
40042
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [DisplayDensityToken,] }] },
40043
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [IGX_INPUT_GROUP_TYPE,] }] },
40044
+ { type: i0.Injector, decorators: [{ type: i0.Optional }] }
40045
+ ]; };
40046
+ IgxComboBaseDirective.propDecorators = {
40047
+ showSearchCaseIcon: [{ type: i0.Input }],
40048
+ overlaySettings: [{ type: i0.Input }],
40049
+ id: [{ type: i0.HostBinding, args: ['attr.id',] }, { type: i0.Input }],
40050
+ width: [{ type: i0.HostBinding, args: ['style.width',] }, { type: i0.Input }],
40051
+ allowCustomValues: [{ type: i0.Input }],
40052
+ itemsMaxHeight: [{ type: i0.Input }],
40053
+ itemHeight: [{ type: i0.Input }],
40054
+ itemsWidth: [{ type: i0.Input }],
40055
+ placeholder: [{ type: i0.Input }],
40056
+ data: [{ type: i0.Input }],
40057
+ valueKey: [{ type: i0.Input }],
40058
+ displayKey: [{ type: i0.Input }],
40059
+ groupKey: [{ type: i0.Input }],
40060
+ filterable: [{ type: i0.Input }],
40061
+ ariaLabelledBy: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.aria-labelledby',] }],
40062
+ cssClass: [{ type: i0.HostBinding, args: ['class.igx-combo',] }],
40063
+ role: [{ type: i0.HostBinding, args: ["attr.role",] }],
40064
+ ariaExpanded: [{ type: i0.HostBinding, args: ['attr.aria-expanded',] }],
40065
+ hasPopUp: [{ type: i0.HostBinding, args: ['attr.aria-haspopup',] }],
40066
+ ariaOwns: [{ type: i0.HostBinding, args: ['attr.aria-owns',] }],
40067
+ disabled: [{ type: i0.Input }],
40068
+ type: [{ type: i0.Input }],
40069
+ opening: [{ type: i0.Output }],
40070
+ opened: [{ type: i0.Output }],
40071
+ closing: [{ type: i0.Output }],
40072
+ closed: [{ type: i0.Output }],
40073
+ addition: [{ type: i0.Output }],
40074
+ searchInputUpdate: [{ type: i0.Output }],
40075
+ dataPreLoad: [{ type: i0.Output }],
40076
+ itemTemplate: [{ type: i0.ContentChild, args: [IgxComboItemDirective, { read: i0.TemplateRef },] }],
40077
+ headerTemplate: [{ type: i0.ContentChild, args: [IgxComboHeaderDirective, { read: i0.TemplateRef },] }],
40078
+ footerTemplate: [{ type: i0.ContentChild, args: [IgxComboFooterDirective, { read: i0.TemplateRef },] }],
40079
+ headerItemTemplate: [{ type: i0.ContentChild, args: [IgxComboHeaderItemDirective, { read: i0.TemplateRef },] }],
40080
+ addItemTemplate: [{ type: i0.ContentChild, args: [IgxComboAddItemDirective, { read: i0.TemplateRef },] }],
40081
+ emptyTemplate: [{ type: i0.ContentChild, args: [IgxComboEmptyDirective, { read: i0.TemplateRef },] }],
40082
+ toggleIconTemplate: [{ type: i0.ContentChild, args: [IgxComboToggleIconDirective, { read: i0.TemplateRef },] }],
40083
+ clearIconTemplate: [{ type: i0.ContentChild, args: [IgxComboClearIconDirective, { read: i0.TemplateRef },] }],
40084
+ inputGroup: [{ type: i0.ViewChild, args: ['inputGroup', { read: IgxInputGroupComponent, static: true },] }],
40085
+ comboInput: [{ type: i0.ViewChild, args: ['comboInput', { read: IgxInputDirective, static: true },] }],
40086
+ searchInput: [{ type: i0.ViewChild, args: ['searchInput',] }],
40087
+ virtualScrollContainer: [{ type: i0.ViewChild, args: [IgxForOfDirective, { static: true },] }],
40088
+ virtDir: [{ type: i0.ViewChild, args: [IgxForOfDirective, { read: IgxForOfDirective, static: true },] }],
40089
+ dropdownContainer: [{ type: i0.ViewChild, args: ['dropdownItemContainer', { static: true },] }],
40090
+ primitiveTemplate: [{ type: i0.ViewChild, args: ['primitive', { read: i0.TemplateRef, static: true },] }],
40091
+ complexTemplate: [{ type: i0.ViewChild, args: ['complex', { read: i0.TemplateRef, static: true },] }],
40092
+ onArrowDown: [{ type: i0.HostListener, args: ['keydown.ArrowDown', ['$event'],] }, { type: i0.HostListener, args: ['keydown.Alt.ArrowDown', ['$event'],] }]
40093
+ };
40094
+
40095
+ /**
40096
+ * @hidden
40097
+ */
40098
+ var IgxComboAddItemComponent = /** @class */ (function (_super) {
40099
+ __extends(IgxComboAddItemComponent, _super);
40100
+ function IgxComboAddItemComponent() {
40101
+ return _super !== null && _super.apply(this, arguments) || this;
40102
+ }
40103
+ Object.defineProperty(IgxComboAddItemComponent.prototype, "selected", {
40104
+ get: function () {
40105
+ return false;
40106
+ },
40107
+ set: function (value) {
40108
+ },
40109
+ enumerable: false,
40110
+ configurable: true
40111
+ });
40112
+ /**
40113
+ * @inheritdoc
40114
+ */
40115
+ IgxComboAddItemComponent.prototype.clicked = function (event) {
40116
+ this.comboAPI.disableTransitions = false;
40117
+ this.comboAPI.add_custom_item();
40118
+ };
40119
+ return IgxComboAddItemComponent;
40120
+ }(IgxComboItemComponent));
40121
+ IgxComboAddItemComponent.decorators = [
40122
+ { type: i0.Component, args: [{
40123
+ selector: 'igx-combo-add-item',
40124
+ template: '<ng-content></ng-content>',
40125
+ providers: [{ provide: IgxComboItemComponent, useExisting: IgxComboAddItemComponent }]
40126
+ },] }
40127
+ ];
40128
+
40129
+ /** @hidden */
40130
+ var IgxComboDropDownComponent = /** @class */ (function (_super) {
40131
+ __extends(IgxComboDropDownComponent, _super);
40132
+ function IgxComboDropDownComponent(elementRef, cdr, platform, selection, combo, comboAPI, _displayDensityOptions) {
40133
+ var _this = _super.call(this, elementRef, cdr, platform, selection, _displayDensityOptions) || this;
40134
+ _this.elementRef = elementRef;
40135
+ _this.cdr = cdr;
40136
+ _this.platform = platform;
40137
+ _this.selection = selection;
40138
+ _this.combo = combo;
40139
+ _this.comboAPI = comboAPI;
40140
+ _this._displayDensityOptions = _displayDensityOptions;
40141
+ /** @hidden @internal */
40142
+ _this.singleMode = false;
40143
+ /**
40144
+ * @hidden
40145
+ * @internal
40146
+ */
40147
+ _this.children = null;
40148
+ _this.scrollHandler = function () {
40149
+ _this.comboAPI.disableTransitions = true;
40150
+ };
40151
+ return _this;
40152
+ }
40153
+ Object.defineProperty(IgxComboDropDownComponent.prototype, "scrollContainer", {
40154
+ /** @hidden @internal */
40155
+ get: function () {
40156
+ return this.virtDir.dc.location.nativeElement;
40157
+ },
40158
+ enumerable: false,
40159
+ configurable: true
40160
+ });
40161
+ Object.defineProperty(IgxComboDropDownComponent.prototype, "isScrolledToLast", {
40162
+ get: function () {
40163
+ var scrollTop = this.virtDir.scrollPosition;
40164
+ var scrollHeight = this.virtDir.getScroll().scrollHeight;
40165
+ return Math.floor(scrollTop + this.virtDir.igxForContainerSize) === scrollHeight;
40166
+ },
40167
+ enumerable: false,
40168
+ configurable: true
40169
+ });
40170
+ Object.defineProperty(IgxComboDropDownComponent.prototype, "lastVisibleIndex", {
40171
+ get: function () {
40172
+ return this.combo.totalItemCount ?
40173
+ Math.floor(this.combo.itemsMaxHeight / this.combo.itemHeight) :
40174
+ this.items.length - 1;
40175
+ },
40176
+ enumerable: false,
40177
+ configurable: true
40178
+ });
40179
+ Object.defineProperty(IgxComboDropDownComponent.prototype, "sortedChildren", {
40180
+ get: function () {
40181
+ if (this.children !== undefined) {
40182
+ return this.children.toArray()
40183
+ .sort(function (a, b) { return a.index - b.index; });
40184
+ }
40185
+ return null;
40186
+ },
40187
+ enumerable: false,
40188
+ configurable: true
40189
+ });
40190
+ Object.defineProperty(IgxComboDropDownComponent.prototype, "items", {
40191
+ /**
40192
+ * Get all non-header items
40193
+ *
40194
+ * ```typescript
40195
+ * let myDropDownItems = this.dropdown.items;
40196
+ * ```
40197
+ */
40198
+ get: function () {
40199
+ var e_1, _a;
40200
+ var items = [];
40201
+ if (this.children !== undefined) {
40202
+ var sortedChildren = this.sortedChildren;
40203
+ try {
40204
+ for (var sortedChildren_1 = __values(sortedChildren), sortedChildren_1_1 = sortedChildren_1.next(); !sortedChildren_1_1.done; sortedChildren_1_1 = sortedChildren_1.next()) {
40205
+ var child = sortedChildren_1_1.value;
40206
+ if (!child.isHeader) {
40207
+ items.push(child);
40208
+ }
40209
+ }
40210
+ }
40211
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
40212
+ finally {
40213
+ try {
40214
+ if (sortedChildren_1_1 && !sortedChildren_1_1.done && (_a = sortedChildren_1.return)) _a.call(sortedChildren_1);
40215
+ }
40216
+ finally { if (e_1) throw e_1.error; }
40217
+ }
40218
+ }
40219
+ return items;
40220
+ },
40221
+ enumerable: false,
40222
+ configurable: true
40223
+ });
40224
+ /**
40225
+ * @hidden @internal
40226
+ */
40227
+ IgxComboDropDownComponent.prototype.onFocus = function () {
40228
+ this.focusedItem = this._focusedItem || this.items[0];
40229
+ };
40230
+ /**
40231
+ * @hidden @internal
40232
+ */
40233
+ IgxComboDropDownComponent.prototype.onBlur = function (_evt) {
40234
+ this.focusedItem = null;
40235
+ };
40236
+ /**
40237
+ * @hidden @internal
40238
+ */
40239
+ IgxComboDropDownComponent.prototype.onToggleOpened = function () {
40240
+ this.opened.emit();
40241
+ };
40242
+ /**
40243
+ * @hidden
40244
+ */
40245
+ IgxComboDropDownComponent.prototype.navigateFirst = function () {
40246
+ this.navigateItem(this.virtDir.igxForOf.findIndex(function (e) { return !e.isHeader; }));
40247
+ };
40248
+ /**
40249
+ * @hidden
40250
+ */
40251
+ IgxComboDropDownComponent.prototype.navigatePrev = function () {
40252
+ if (this._focusedItem && this._focusedItem.index === 0 && this.virtDir.state.startIndex === 0) {
40253
+ this.combo.focusSearchInput(false);
40254
+ }
40255
+ else {
40256
+ _super.prototype.navigatePrev.call(this);
40257
+ }
40258
+ };
40259
+ /**
40260
+ * @hidden
40261
+ */
40262
+ IgxComboDropDownComponent.prototype.navigateNext = function () {
40263
+ var lastIndex = this.combo.totalItemCount ? this.combo.totalItemCount - 1 : this.virtDir.igxForOf.length - 1;
40264
+ if (this._focusedItem && this._focusedItem.index === lastIndex) {
40265
+ this.focusAddItemButton();
40266
+ }
40267
+ else {
40268
+ _super.prototype.navigateNext.call(this);
40269
+ }
40270
+ };
40271
+ /**
40272
+ * @hidden @internal
40273
+ */
40274
+ IgxComboDropDownComponent.prototype.selectItem = function (item) {
40275
+ if (item === null || item === undefined) {
40276
+ return;
40277
+ }
40278
+ this.comboAPI.set_selected_item(item.itemID);
40279
+ this._focusedItem = item;
40280
+ };
40281
+ /**
40282
+ * @hidden @internal
40283
+ */
40284
+ IgxComboDropDownComponent.prototype.updateScrollPosition = function () {
40285
+ this.virtDir.getScroll().scrollTop = this._scrollPosition;
40286
+ };
40287
+ /**
40288
+ * @hidden @internal
40289
+ */
40290
+ IgxComboDropDownComponent.prototype.onItemActionKey = function (key) {
40291
+ switch (key) {
40292
+ case DropDownActionKey.ENTER:
40293
+ this.handleEnter();
40294
+ break;
40295
+ case DropDownActionKey.SPACE:
40296
+ this.handleSpace();
40297
+ break;
40298
+ case DropDownActionKey.ESCAPE:
40299
+ this.close();
40300
+ }
40301
+ };
40302
+ IgxComboDropDownComponent.prototype.ngAfterViewInit = function () {
40303
+ this.virtDir.getScroll().addEventListener('scroll', this.scrollHandler);
40304
+ };
40305
+ /**
40306
+ * @hidden @internal
40307
+ */
40308
+ IgxComboDropDownComponent.prototype.ngOnDestroy = function () {
40309
+ this.virtDir.getScroll().removeEventListener('scroll', this.scrollHandler);
40310
+ this.destroy$.next(true);
40311
+ this.destroy$.complete();
40312
+ };
40313
+ IgxComboDropDownComponent.prototype.scrollToHiddenItem = function (_newItem) { };
40314
+ IgxComboDropDownComponent.prototype.handleEnter = function () {
40315
+ if (this.isAddItemFocused()) {
40316
+ this.combo.addItemToCollection();
40317
+ return;
40318
+ }
40319
+ if (this.singleMode && this.focusedItem) {
40320
+ this.combo.select(this.focusedItem.itemID);
40321
+ }
40322
+ this.close();
40323
+ };
40324
+ IgxComboDropDownComponent.prototype.handleSpace = function () {
40325
+ if (this.isAddItemFocused()) {
40326
+ return;
40327
+ }
40328
+ else {
40329
+ this.selectItem(this.focusedItem);
40330
+ }
40331
+ };
40332
+ IgxComboDropDownComponent.prototype.isAddItemFocused = function () {
40333
+ return this.focusedItem instanceof IgxComboAddItemComponent;
40334
+ };
40335
+ IgxComboDropDownComponent.prototype.focusAddItemButton = function () {
40336
+ if (this.combo.isAddButtonVisible()) {
40337
+ this.focusedItem = this.items[this.items.length - 1];
40338
+ }
40339
+ };
40340
+ return IgxComboDropDownComponent;
40341
+ }(IgxDropDownComponent));
40342
+ IgxComboDropDownComponent.decorators = [
40343
+ { type: i0.Component, args: [{
40344
+ selector: 'igx-combo-drop-down',
40345
+ 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",
40346
+ providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxComboDropDownComponent }]
40347
+ },] }
40348
+ ];
40349
+ IgxComboDropDownComponent.ctorParameters = function () { return [
40350
+ { type: i0.ElementRef },
40351
+ { type: i0.ChangeDetectorRef },
40352
+ { type: PlatformUtil },
40353
+ { type: IgxSelectionAPIService },
40354
+ { type: undefined, decorators: [{ type: i0.Inject, args: [IGX_COMBO_COMPONENT,] }] },
40355
+ { type: IgxComboAPIService },
40356
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [DisplayDensityToken,] }] }
40357
+ ]; };
40358
+ IgxComboDropDownComponent.propDecorators = {
40359
+ singleMode: [{ type: i0.Input }],
40360
+ children: [{ type: i0.ContentChildren, args: [IgxComboItemComponent, { descendants: true },] }]
40361
+ };
40362
+
40363
+ /**
40364
+ * @hidden
40365
+ */
40366
+ var IgxComboFilteringPipe = /** @class */ (function () {
40367
+ function IgxComboFilteringPipe() {
40368
+ }
40369
+ IgxComboFilteringPipe.prototype.transform = function (collection, searchValue, displayKey, filteringOptions, shouldFilter) {
40370
+ if (shouldFilter === void 0) { shouldFilter = false; }
40371
+ if (!collection) {
40372
+ return [];
40373
+ }
40374
+ if (!searchValue || !shouldFilter) {
40375
+ return collection;
40376
+ }
40377
+ else {
40378
+ var searchTerm_1 = filteringOptions.caseSensitive ? searchValue.trim() : searchValue.toLowerCase().trim();
40379
+ if (displayKey != null) {
40380
+ return collection.filter(function (e) { return filteringOptions.caseSensitive ? e[displayKey].includes(searchTerm_1) :
40381
+ e[displayKey].toString().toLowerCase().includes(searchTerm_1); });
40382
+ }
40383
+ else {
40384
+ return collection.filter(function (e) { return filteringOptions.caseSensitive ? e.includes(searchTerm_1) :
40385
+ e.toString().toLowerCase().includes(searchTerm_1); });
40386
+ }
40387
+ }
40388
+ };
40389
+ return IgxComboFilteringPipe;
40390
+ }());
40391
+ IgxComboFilteringPipe.decorators = [
40392
+ { type: i0.Pipe, args: [{
40393
+ name: 'comboFiltering'
40394
+ },] }
40395
+ ];
40396
+ /**
40397
+ * @hidden
40398
+ */
40399
+ var IgxComboGroupingPipe = /** @class */ (function () {
40400
+ function IgxComboGroupingPipe(combo) {
40401
+ this.combo = combo;
40402
+ }
40403
+ IgxComboGroupingPipe.prototype.transform = function (collection, groupKey, valueKey) {
40404
+ var _a;
40405
+ this.combo.filteredData = collection;
40406
+ if ((!groupKey && groupKey !== 0) || !collection.length) {
40407
+ return collection;
40408
+ }
40409
+ var sorted = DataUtil.sort(cloneArray(collection), [{
40410
+ fieldName: groupKey,
40411
+ dir: exports.SortingDirection.Asc,
40412
+ ignoreCase: true,
40413
+ strategy: DefaultSortingStrategy.instance()
40414
+ }]);
40415
+ var data = cloneArray(sorted);
40416
+ var inserts = 0;
40417
+ var currentHeader = null;
40418
+ for (var i = 0; i < sorted.length; i++) {
40419
+ var insertFlag = 0;
40420
+ if (currentHeader !== sorted[i][groupKey]) {
40421
+ currentHeader = sorted[i][groupKey];
40422
+ insertFlag = 1;
40423
+ }
40424
+ if (insertFlag) {
40425
+ data.splice(i + inserts, 0, (_a = {},
40426
+ _a[valueKey] = currentHeader,
40427
+ _a[groupKey] = currentHeader,
40428
+ _a.isHeader = true,
40429
+ _a));
40430
+ inserts++;
40431
+ }
40432
+ }
40433
+ return data;
40300
40434
  };
40301
- Object.defineProperty(IgxComboComponent.prototype, "dataType", {
40435
+ return IgxComboGroupingPipe;
40436
+ }());
40437
+ IgxComboGroupingPipe.decorators = [
40438
+ { type: i0.Pipe, args: [{
40439
+ name: 'comboGrouping'
40440
+ },] }
40441
+ ];
40442
+ IgxComboGroupingPipe.ctorParameters = function () { return [
40443
+ { type: undefined, decorators: [{ type: i0.Inject, args: [IGX_COMBO_COMPONENT,] }] }
40444
+ ]; };
40445
+
40446
+ /**
40447
+ * When called with sets A & B, returns A - B (as array);
40448
+ *
40449
+ * @hidden
40450
+ */
40451
+ var diffInSets = function (set1, set2) {
40452
+ var results = [];
40453
+ set1.forEach(function (entry) {
40454
+ if (!set2.has(entry)) {
40455
+ results.push(entry);
40456
+ }
40457
+ });
40458
+ return results;
40459
+ };
40460
+ var ɵ0$1 = diffInSets;
40461
+ /**
40462
+ * Represents a drop-down list that provides editable functionalities, allowing users to choose an option from a predefined list.
40463
+ *
40464
+ * @igxModule IgxComboModule
40465
+ * @igxTheme igx-combo-theme
40466
+ * @igxKeywords combobox, combo selection
40467
+ * @igxGroup Grids & Lists
40468
+ *
40469
+ * @remarks
40470
+ * It provides the ability to filter items as well as perform selection with the provided data.
40471
+ * Additionally, it exposes keyboard navigation and custom styling capabilities.
40472
+ * @example
40473
+ * ```html
40474
+ * <igx-combo [itemsMaxHeight]="250" [data]="locationData"
40475
+ * [displayKey]="'field'" [valueKey]="'field'"
40476
+ * placeholder="Location(s)" searchPlaceholder="Search...">
40477
+ * </igx-combo>
40478
+ * ```
40479
+ */
40480
+ var IgxComboComponent = /** @class */ (function (_super) {
40481
+ __extends(IgxComboComponent, _super);
40482
+ function IgxComboComponent(elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) {
40483
+ var _this = _super.call(this, elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) || this;
40484
+ _this.elementRef = elementRef;
40485
+ _this.cdr = cdr;
40486
+ _this.selectionService = selectionService;
40487
+ _this.comboAPI = comboAPI;
40488
+ _this._iconService = _iconService;
40489
+ _this._displayDensityOptions = _displayDensityOptions;
40490
+ _this._inputGroupType = _inputGroupType;
40491
+ _this._injector = _injector;
40492
+ /**
40493
+ * An @Input property that controls whether the combo's search box
40494
+ * should be focused after the `opened` event is called
40495
+ * When `false`, the combo's list item container will be focused instead
40496
+ */
40497
+ _this.autoFocusSearch = true;
40498
+ /**
40499
+ * An @Input property that enabled/disables filtering in the list. The default is `true`.
40500
+ * ```html
40501
+ * <igx-combo [filterable]="false">
40502
+ * ```
40503
+ */
40504
+ _this.filterable = true;
40505
+ /**
40506
+ * Defines the placeholder value for the combo dropdown search field
40507
+ *
40508
+ * ```typescript
40509
+ * // get
40510
+ * let myComboSearchPlaceholder = this.combo.searchPlaceholder;
40511
+ * ```
40512
+ *
40513
+ * ```html
40514
+ * <!--set-->
40515
+ * <igx-combo [searchPlaceholder]='newPlaceHolder'></igx-combo>
40516
+ * ```
40517
+ */
40518
+ _this.searchPlaceholder = 'Enter a Search Term';
40519
+ /**
40520
+ * Emitted when item selection is changing, before the selection completes
40521
+ *
40522
+ * ```html
40523
+ * <igx-combo (selectionChanging)='handleSelection()'></igx-combo>
40524
+ * ```
40525
+ */
40526
+ _this.selectionChanging = new i0.EventEmitter();
40527
+ /**
40528
+ * @hidden @internal
40529
+ */
40530
+ _this.filteringLogic = exports.FilteringLogic.Or;
40531
+ _this.stringFilters = IgxStringFilteringOperand;
40532
+ _this.booleanFilters = IgxBooleanFilteringOperand;
40533
+ _this._prevInputValue = '';
40534
+ _this.comboAPI.register(_this);
40535
+ return _this;
40536
+ }
40537
+ Object.defineProperty(IgxComboComponent.prototype, "inputEmpty", {
40302
40538
  /**
40303
40539
  * @hidden @internal
40304
40540
  */
40305
40541
  get: function () {
40306
- if (this.displayKey) {
40307
- return DataTypes.COMPLEX;
40308
- }
40309
- return DataTypes.PRIMITIVE;
40542
+ return !this.value && !this.placeholder;
40310
40543
  },
40311
40544
  enumerable: false,
40312
40545
  configurable: true
40313
40546
  });
40314
- Object.defineProperty(IgxComboComponent.prototype, "isRemote", {
40315
- /**
40316
- * @hidden @internal
40317
- */
40547
+ Object.defineProperty(IgxComboComponent.prototype, "filteredData", {
40548
+ /** @hidden @internal */
40318
40549
  get: function () {
40319
- return this.totalItemCount > 0 &&
40320
- this.valueKey &&
40321
- this.dataType === DataTypes.COMPLEX;
40550
+ return this.filterable ? this._filteredData : this.data;
40551
+ },
40552
+ /** @hidden @internal */
40553
+ set: function (val) {
40554
+ this._filteredData = this.groupKey ? (val || []).filter(function (e) { return e.isHeader !== true; }) : val;
40555
+ this.checkMatch();
40556
+ },
40557
+ enumerable: false,
40558
+ configurable: true
40559
+ });
40560
+ Object.defineProperty(IgxComboComponent.prototype, "displaySearchInput", {
40561
+ /** @hidden @internal */
40562
+ get: function () {
40563
+ return this.filterable || this.allowCustomValues;
40322
40564
  },
40323
40565
  enumerable: false,
40324
40566
  configurable: true
40325
40567
  });
40326
- /**
40327
- * Returns if the specified itemID is selected
40328
- *
40329
- * @hidden
40330
- * @internal
40331
- */
40332
- IgxComboComponent.prototype.isItemSelected = function (item) {
40333
- return this.selection.is_item_selected(this.id, item);
40334
- };
40335
- /**
40336
- * Triggers change detection on the combo view
40337
- */
40338
- IgxComboComponent.prototype.triggerCheck = function () {
40339
- this.cdr.detectChanges();
40340
- };
40341
40568
  /**
40342
40569
  * @hidden @internal
40343
40570
  */
40344
- IgxComboComponent.prototype.isAddButtonVisible = function () {
40345
- // This should always return a boolean value. If this.searchValue was '', it returns '' instead of false;
40346
- return this.searchValue !== '' && this.customValueFlag;
40571
+ IgxComboComponent.prototype.handleKeyUp = function (event) {
40572
+ // TODO: use PlatformUtil for keyboard navigation
40573
+ if (event.key === 'ArrowDown' || event.key === 'Down') {
40574
+ this.dropdown.focusedItem = this.dropdown.items[0];
40575
+ this.dropdownContainer.nativeElement.focus();
40576
+ }
40577
+ else if (event.key === 'Escape' || event.key === 'Esc') {
40578
+ this.toggle();
40579
+ }
40347
40580
  };
40348
40581
  /**
40349
40582
  * @hidden @internal
@@ -40356,145 +40589,15 @@
40356
40589
  this.deselectAllItems();
40357
40590
  }
40358
40591
  };
40359
- /**
40360
- * @hidden @internal
40361
- */
40362
- IgxComboComponent.prototype.addItemToCollection = function () {
40363
- var _a, _b;
40364
- if (!this.searchValue) {
40365
- return;
40366
- }
40367
- var newValue = this.searchValue.trim();
40368
- var addedItem = this.displayKey ? (_a = {},
40369
- _a[this.valueKey] = newValue,
40370
- _a[this.displayKey] = newValue,
40371
- _a) : newValue;
40372
- if (this.groupKey) {
40373
- Object.assign(addedItem, (_b = {}, _b[this.groupKey] = this.defaultFallbackGroup, _b));
40374
- }
40375
- // expose shallow copy instead of this.data in event args so this.data can't be mutated
40376
- var oldCollection = __spreadArray([], __read(this.data));
40377
- var newCollection = __spreadArray(__spreadArray([], __read(this.data)), [addedItem]);
40378
- var args = {
40379
- oldCollection: oldCollection,
40380
- addedItem: addedItem,
40381
- newCollection: newCollection,
40382
- owner: this, cancel: false
40383
- };
40384
- this.addition.emit(args);
40385
- if (args.cancel) {
40386
- return;
40387
- }
40388
- this.data.push(args.addedItem);
40389
- // trigger re-render
40390
- this.data = cloneArray(this.data);
40391
- this.selectItems(this.valueKey !== null && this.valueKey !== undefined ?
40392
- [args.addedItem[this.valueKey]] : [args.addedItem], false);
40393
- this.customValueFlag = false;
40394
- this.searchInput.nativeElement.focus();
40395
- this.dropdown.focusedItem = null;
40396
- this.virtDir.scrollTo(0);
40397
- };
40398
- /**
40399
- * @hidden @internal
40400
- */
40401
- IgxComboComponent.prototype.focusSearchInput = function (opening) {
40402
- if (this.displaySearchInput && this.searchInput) {
40403
- this.searchInput.nativeElement.focus();
40404
- }
40405
- else {
40406
- if (opening) {
40407
- this.dropdownContainer.nativeElement.focus();
40408
- }
40409
- else {
40410
- this.comboInput.nativeElement.focus();
40411
- this.toggle();
40412
- }
40413
- }
40414
- };
40415
- /**
40416
- * @hidden @internal
40417
- */
40418
- IgxComboComponent.prototype.onBlur = function () {
40419
- if (this.collapsed) {
40420
- this._onTouchedCallback();
40421
- if (this.ngControl && this.ngControl.invalid) {
40422
- this.valid = exports.IgxComboState.INVALID;
40423
- }
40424
- else {
40425
- this.valid = exports.IgxComboState.INITIAL;
40426
- }
40427
- }
40428
- };
40429
- /**
40430
- * @hidden @internal
40431
- */
40432
- IgxComboComponent.prototype.ngOnInit = function () {
40433
- this.ngControl = this._injector.get(forms.NgControl, null);
40434
- var targetElement = this.elementRef.nativeElement;
40435
- this._overlaySettings = {
40436
- target: targetElement,
40437
- scrollStrategy: new AbsoluteScrollStrategy(),
40438
- positionStrategy: new AutoPositionStrategy(),
40439
- modal: false,
40440
- closeOnOutsideClick: true,
40441
- excludeFromOutsideClick: [targetElement]
40442
- };
40443
- this.selection.set(this.id, new Set());
40444
- this._iconService.addSvgIconFromText(materialIconsExtended.caseSensitive.name, materialIconsExtended.caseSensitive.value, 'imx-icons');
40445
- };
40446
- /**
40447
- * @hidden @internal
40448
- */
40449
- IgxComboComponent.prototype.ngAfterViewInit = function () {
40450
- var _this = this;
40451
- this.filteredData = __spreadArray([], __read(this.data));
40452
- if (this.ngControl) {
40453
- this.ngControl.statusChanges.pipe(operators.takeUntil(this.destroy$)).subscribe(this.onStatusChanged);
40454
- this.manageRequiredAsterisk();
40455
- this.cdr.detectChanges();
40456
- }
40457
- this.virtDir.chunkPreload.pipe(operators.takeUntil(this.destroy$)).subscribe(function (e) {
40458
- var eventArgs = Object.assign({}, e, { owner: _this });
40459
- _this.dataPreLoad.emit(eventArgs);
40460
- });
40461
- };
40462
- /**
40463
- * @hidden @internal
40464
- */
40465
- IgxComboComponent.prototype.ngOnDestroy = function () {
40466
- this.destroy$.next();
40467
- this.destroy$.complete();
40468
- this.comboAPI.clear();
40469
- this.selection.clear(this.id);
40470
- };
40471
40592
  /**
40472
40593
  * @hidden @internal
40473
40594
  */
40474
40595
  IgxComboComponent.prototype.writeValue = function (value) {
40475
40596
  var selection = Array.isArray(value) ? value : [];
40476
- var oldSelection = this.selectedItems();
40477
- this.selection.select_items(this.id, selection, true);
40597
+ var oldSelection = this.selection;
40598
+ this.selectionService.select_items(this.id, selection, true);
40478
40599
  this.cdr.markForCheck();
40479
- this._value = this.createDisplayText(this.selectedItems(), oldSelection);
40480
- };
40481
- /**
40482
- * @hidden @internal
40483
- */
40484
- IgxComboComponent.prototype.registerOnChange = function (fn) {
40485
- this._onChangeCallback = fn;
40486
- };
40487
- /**
40488
- * @hidden @internal
40489
- */
40490
- IgxComboComponent.prototype.registerOnTouched = function (fn) {
40491
- this._onTouchedCallback = fn;
40492
- };
40493
- /**
40494
- * @hidden @internal
40495
- */
40496
- IgxComboComponent.prototype.setDisabledState = function (isDisabled) {
40497
- this.disabled = isDisabled;
40600
+ this._value = this.createDisplayText(this.selection, oldSelection);
40498
40601
  };
40499
40602
  /**
40500
40603
  * @hidden
@@ -40502,23 +40605,6 @@
40502
40605
  IgxComboComponent.prototype.getEditElement = function () {
40503
40606
  return this.comboInput.nativeElement;
40504
40607
  };
40505
- Object.defineProperty(IgxComboComponent.prototype, "template", {
40506
- /**
40507
- * @hidden @internal
40508
- */
40509
- get: function () {
40510
- this._dataType = this.dataType;
40511
- if (this.itemTemplate) {
40512
- return this.itemTemplate;
40513
- }
40514
- if (this._dataType === DataTypes.COMPLEX) {
40515
- return this.complexTemplate;
40516
- }
40517
- return this.primitiveTemplate;
40518
- },
40519
- enumerable: false,
40520
- configurable: true
40521
- });
40522
40608
  Object.defineProperty(IgxComboComponent.prototype, "context", {
40523
40609
  /**
40524
40610
  * @hidden @internal
@@ -40547,79 +40633,18 @@
40547
40633
  }
40548
40634
  event.stopPropagation();
40549
40635
  };
40550
- /**
40551
- * A method that opens/closes the combo.
40552
- *
40553
- * ```html
40554
- * <button (click)="combo.toggle()">Toggle Combo</button>
40555
- * <igx-combo #combo></igx-combo>
40556
- * ```
40557
- */
40558
- IgxComboComponent.prototype.toggle = function () {
40559
- var overlaySettings = Object.assign({}, this._overlaySettings, this.overlaySettings);
40560
- this.dropdown.toggle(overlaySettings);
40561
- };
40562
- /**
40563
- * A method that opens the combo.
40564
- *
40565
- * ```html
40566
- * <button (click)="combo.open()">Open Combo</button>
40567
- * <igx-combo #combo></igx-combo>
40568
- * ```
40569
- */
40570
- IgxComboComponent.prototype.open = function () {
40571
- var overlaySettings = Object.assign({}, this._overlaySettings, this.overlaySettings);
40572
- this.dropdown.open(overlaySettings);
40573
- };
40574
- /**
40575
- * A method that closes the combo.
40576
- *
40577
- * ```html
40578
- * <button (click)="combo.close()">Close Combo</button>
40579
- * <igx-combo #combo></igx-combo>
40580
- * ```
40581
- */
40582
- IgxComboComponent.prototype.close = function () {
40583
- this.dropdown.close();
40584
- };
40585
- Object.defineProperty(IgxComboComponent.prototype, "collapsed", {
40586
- /**
40587
- * Gets drop down state.
40588
- *
40589
- * ```typescript
40590
- * let state = this.combo.collapsed;
40591
- * ```
40592
- */
40593
- get: function () {
40594
- return this.dropdown.collapsed;
40595
- },
40596
- enumerable: false,
40597
- configurable: true
40598
- });
40599
- /**
40600
- * Get current selection state
40601
- *
40602
- * @returns Array of selected items
40603
- * ```typescript
40604
- * let selectedItems = this.combo.selectedItems();
40605
- * ```
40606
- */
40607
- IgxComboComponent.prototype.selectedItems = function () {
40608
- var items = Array.from(this.selection.get(this.id));
40609
- return items;
40610
- };
40611
40636
  /**
40612
40637
  * Select defined items
40613
40638
  *
40614
40639
  * @param newItems new items to be selected
40615
40640
  * @param clearCurrentSelection if true clear previous selected items
40616
40641
  * ```typescript
40617
- * this.combo.selectItems(["New York", "New Jersey"]);
40642
+ * this.combo.select(["New York", "New Jersey"]);
40618
40643
  * ```
40619
40644
  */
40620
- IgxComboComponent.prototype.selectItems = function (newItems, clearCurrentSelection, event) {
40645
+ IgxComboComponent.prototype.select = function (newItems, clearCurrentSelection, event) {
40621
40646
  if (newItems) {
40622
- var newSelection = this.selection.add_items(this.id, newItems, clearCurrentSelection);
40647
+ var newSelection = this.selectionService.add_items(this.id, newItems, clearCurrentSelection);
40623
40648
  this.setSelection(newSelection, event);
40624
40649
  }
40625
40650
  };
@@ -40628,12 +40653,12 @@
40628
40653
  *
40629
40654
  * @param items items to deselected
40630
40655
  * ```typescript
40631
- * this.combo.deselectItems(["New York", "New Jersey"]);
40656
+ * this.combo.deselect(["New York", "New Jersey"]);
40632
40657
  * ```
40633
40658
  */
40634
- IgxComboComponent.prototype.deselectItems = function (items, event) {
40659
+ IgxComboComponent.prototype.deselect = function (items, event) {
40635
40660
  if (items) {
40636
- var newSelection = this.selection.delete_items(this.id, items);
40661
+ var newSelection = this.selectionService.delete_items(this.id, items);
40637
40662
  this.setSelection(newSelection, event);
40638
40663
  }
40639
40664
  };
@@ -40646,8 +40671,8 @@
40646
40671
  * ```
40647
40672
  */
40648
40673
  IgxComboComponent.prototype.selectAllItems = function (ignoreFilter, event) {
40649
- var allVisible = this.selection.get_all_ids(ignoreFilter ? this.data : this.filteredData, this.valueKey);
40650
- var newSelection = this.selection.add_items(this.id, allVisible);
40674
+ var allVisible = this.selectionService.get_all_ids(ignoreFilter ? this.data : this.filteredData, this.valueKey);
40675
+ var newSelection = this.selectionService.add_items(this.id, allVisible);
40651
40676
  this.setSelection(newSelection, event);
40652
40677
  };
40653
40678
  /**
@@ -40659,9 +40684,9 @@
40659
40684
  * ```
40660
40685
  */
40661
40686
  IgxComboComponent.prototype.deselectAllItems = function (ignoreFilter, event) {
40662
- var newSelection = this.selection.get_empty();
40687
+ var newSelection = this.selectionService.get_empty();
40663
40688
  if (this.filteredData.length !== this.data.length && !ignoreFilter) {
40664
- newSelection = this.selection.delete_items(this.id, this.selection.get_all_ids(this.filteredData, this.valueKey));
40689
+ newSelection = this.selectionService.delete_items(this.id, this.selectionService.get_all_ids(this.filteredData, this.valueKey));
40665
40690
  }
40666
40691
  this.setSelection(newSelection, event);
40667
40692
  };
@@ -40690,26 +40715,13 @@
40690
40715
  return;
40691
40716
  }
40692
40717
  if (select) {
40693
- this.selectItems([itemID], false, event);
40718
+ this.select([itemID], false, event);
40694
40719
  }
40695
40720
  else {
40696
- this.deselectItems([itemID], event);
40721
+ this.deselect([itemID], event);
40697
40722
  }
40698
40723
  };
40699
- /**
40700
- * Event handlers
40701
- *
40702
- * @hidden
40703
- * @internal
40704
- */
40705
- IgxComboComponent.prototype.handleOpening = function (e) {
40706
- var args = { owner: this, event: e.event, cancel: e.cancel };
40707
- this.opening.emit(args);
40708
- e.cancel = args.cancel;
40709
- };
40710
- /**
40711
- * @hidden @internal
40712
- */
40724
+ /** @hidden @internal */
40713
40725
  IgxComboComponent.prototype.handleOpened = function () {
40714
40726
  this.triggerCheck();
40715
40727
  // Disabling focus of the search input should happen only when drop down opens.
@@ -40723,36 +40735,26 @@
40723
40735
  }
40724
40736
  this.opened.emit({ owner: this });
40725
40737
  };
40726
- /**
40727
- * @hidden @internal
40728
- */
40729
- IgxComboComponent.prototype.handleClosing = function (e) {
40730
- var args = { owner: this, event: e.event, cancel: e.cancel };
40731
- this.closing.emit(args);
40732
- e.cancel = args.cancel;
40733
- if (e.cancel) {
40734
- return;
40738
+ /** @hidden @internal */
40739
+ IgxComboComponent.prototype.focusSearchInput = function (opening) {
40740
+ if (this.displaySearchInput && this.searchInput) {
40741
+ this.searchInput.nativeElement.focus();
40742
+ }
40743
+ else {
40744
+ if (opening) {
40745
+ this.dropdownContainer.nativeElement.focus();
40746
+ }
40747
+ else {
40748
+ this.comboInput.nativeElement.focus();
40749
+ this.toggle();
40750
+ }
40735
40751
  }
40736
- this.searchValue = '';
40737
- this.comboInput.nativeElement.focus();
40738
- };
40739
- /**
40740
- * @hidden @internal
40741
- */
40742
- IgxComboComponent.prototype.handleClosed = function () {
40743
- this.closed.emit({ owner: this });
40744
- };
40745
- /**
40746
- * @hidden @internal
40747
- */
40748
- IgxComboComponent.prototype.toggleCaseSensitive = function () {
40749
- this.filteringOptions = { caseSensitive: !this.filteringOptions.caseSensitive };
40750
40752
  };
40751
40753
  IgxComboComponent.prototype.setSelection = function (newSelection, event) {
40752
- var removed = diffInSets(this.selection.get(this.id), newSelection);
40753
- var added = diffInSets(newSelection, this.selection.get(this.id));
40754
+ var removed = diffInSets(this.selectionService.get(this.id), newSelection);
40755
+ var added = diffInSets(newSelection, this.selectionService.get(this.id));
40754
40756
  var newSelectionAsArray = Array.from(newSelection);
40755
- var oldSelectionAsArray = Array.from(this.selection.get(this.id) || []);
40757
+ var oldSelectionAsArray = Array.from(this.selectionService.get(this.id) || []);
40756
40758
  var displayText = this.createDisplayText(newSelectionAsArray, oldSelectionAsArray);
40757
40759
  var args = {
40758
40760
  newSelection: newSelectionAsArray,
@@ -40766,7 +40768,7 @@
40766
40768
  };
40767
40769
  this.selectionChanging.emit(args);
40768
40770
  if (!args.cancel) {
40769
- this.selection.select_items(this.id, args.newSelection, true);
40771
+ this.selectionService.select_items(this.id, args.newSelection, true);
40770
40772
  if (displayText !== args.displayText) {
40771
40773
  this._value = args.displayText;
40772
40774
  }
@@ -40776,71 +40778,10 @@
40776
40778
  this._onChangeCallback(args.newSelection);
40777
40779
  }
40778
40780
  };
40779
- IgxComboComponent.prototype.manageRequiredAsterisk = function () {
40780
- if (this.ngControl && this.ngControl.control.validator) {
40781
- // Run the validation with empty object to check if required is enabled.
40782
- var error = this.ngControl.control.validator({});
40783
- this.inputGroup.isRequired = error && error.required;
40784
- }
40785
- };
40786
- /** Contains key-value pairs of the selected valueKeys and their resp. displayKeys */
40787
- IgxComboComponent.prototype.registerRemoteEntries = function (ids, add) {
40788
- var e_1, _a, e_2, _b;
40789
- if (add === void 0) { add = true; }
40790
- if (add) {
40791
- var selection = this.getValueDisplayPairs(ids);
40792
- try {
40793
- for (var selection_1 = __values(selection), selection_1_1 = selection_1.next(); !selection_1_1.done; selection_1_1 = selection_1.next()) {
40794
- var entry = selection_1_1.value;
40795
- this._remoteSelection[entry[this.valueKey]] = entry[this.displayKey];
40796
- }
40797
- }
40798
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
40799
- finally {
40800
- try {
40801
- if (selection_1_1 && !selection_1_1.done && (_a = selection_1.return)) _a.call(selection_1);
40802
- }
40803
- finally { if (e_1) throw e_1.error; }
40804
- }
40805
- }
40806
- else {
40807
- try {
40808
- for (var ids_1 = __values(ids), ids_1_1 = ids_1.next(); !ids_1_1.done; ids_1_1 = ids_1.next()) {
40809
- var entry = ids_1_1.value;
40810
- delete this._remoteSelection[entry];
40811
- }
40812
- }
40813
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
40814
- finally {
40815
- try {
40816
- if (ids_1_1 && !ids_1_1.done && (_b = ids_1.return)) _b.call(ids_1);
40817
- }
40818
- finally { if (e_2) throw e_2.error; }
40819
- }
40820
- }
40821
- };
40822
- /**
40823
- * For `id: any[]` returns a mapped `{ [combo.valueKey]: any, [combo.displayKey]: any }[]`
40824
- */
40825
- IgxComboComponent.prototype.getValueDisplayPairs = function (ids) {
40826
- var _this = this;
40827
- return this.data.filter(function (entry) { return ids.indexOf(entry[_this.valueKey]) > -1; }).map(function (e) {
40828
- var _a;
40829
- return (_a = {},
40830
- _a[_this.valueKey] = e[_this.valueKey],
40831
- _a[_this.displayKey] = e[_this.displayKey],
40832
- _a);
40833
- });
40834
- };
40835
- IgxComboComponent.prototype.checkMatch = function () {
40836
- var _this = this;
40837
- var displayKey = this.displayKey;
40838
- var matchFn = function (e) {
40839
- var value = displayKey ? e[displayKey] : e;
40840
- return value.toString().toLowerCase() === _this.searchValue.trim().toLowerCase();
40841
- };
40842
- var itemMatch = this.filteredData.some(matchFn);
40843
- this.customValueFlag = this.allowCustomValues && !itemMatch;
40781
+ IgxComboComponent.prototype.createDisplayText = function (newSelection, oldSelection) {
40782
+ return this.isRemote
40783
+ ? this.getRemoteSelection(newSelection, oldSelection)
40784
+ : this.concatDisplayText(newSelection);
40844
40785
  };
40845
40786
  /** Returns a string that should be populated in the combo's text box */
40846
40787
  IgxComboComponent.prototype.concatDisplayText = function (selection) {
@@ -40850,47 +40791,12 @@
40850
40791
  selection.join(', ');
40851
40792
  return value;
40852
40793
  };
40853
- /**
40854
- * Constructs the combo display value
40855
- * If remote, caches the key displayText
40856
- * If not, just combine the object.displayKeys
40857
- */
40858
- IgxComboComponent.prototype.createDisplayText = function (newSelection, oldSelection) {
40859
- var _this = this;
40860
- var value = '';
40861
- if (this.isRemote) {
40862
- if (newSelection.length) {
40863
- var removedItems = oldSelection.filter(function (e) { return newSelection.indexOf(e) < 0; });
40864
- var addedItems = newSelection.filter(function (e) { return oldSelection.indexOf(e) < 0; });
40865
- this.registerRemoteEntries(addedItems);
40866
- this.registerRemoteEntries(removedItems, false);
40867
- value = Object.keys(this._remoteSelection).map(function (e) { return _this._remoteSelection[e]; }).join(', ');
40868
- }
40869
- else {
40870
- // If new selection is empty, clear all items
40871
- this.registerRemoteEntries(oldSelection, false);
40872
- }
40873
- }
40874
- else {
40875
- value = this.concatDisplayText(newSelection);
40876
- }
40877
- return value;
40878
- };
40879
- /** if there is a valueKey - map the keys to data items, else - just return the keys */
40880
- IgxComboComponent.prototype.convertKeysToItems = function (keys) {
40881
- var _this = this;
40882
- if (this.comboAPI.valueKey === null) {
40883
- return keys;
40884
- }
40885
- // map keys vs. filter data to retain the order of the selected items
40886
- return keys.map(function (key) { return _this.data.find(function (entry) { return entry[_this.valueKey] === key; }); }).filter(function (e) { return e !== undefined; });
40887
- };
40888
40794
  return IgxComboComponent;
40889
- }(DisplayDensityBase));
40795
+ }(IgxComboBaseDirective));
40890
40796
  IgxComboComponent.decorators = [
40891
40797
  { type: i0.Component, args: [{
40892
40798
  selector: 'igx-combo',
40893
- template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [type]=\"type\" (click)=\"onInputClick($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:filterable:filteringOptions\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",
40799
+ 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",
40894
40800
  providers: [
40895
40801
  IgxComboAPIService,
40896
40802
  { provide: IGX_COMBO_COMPONENT, useExisting: IgxComboComponent },
@@ -40909,56 +40815,11 @@
40909
40815
  { type: i0.Injector, decorators: [{ type: i0.Optional }] }
40910
40816
  ]; };
40911
40817
  IgxComboComponent.propDecorators = {
40912
- overlaySettings: [{ type: i0.Input }],
40913
- inputGroup: [{ type: i0.ViewChild, args: ['inputGroup', { read: IgxInputGroupComponent, static: true },] }],
40914
- comboInput: [{ type: i0.ViewChild, args: ['comboInput', { read: IgxInputDirective, static: true },] }],
40915
- dropdown: [{ type: i0.ViewChild, args: [IgxComboDropDownComponent, { read: IgxComboDropDownComponent, static: true },] }],
40916
- searchInput: [{ type: i0.ViewChild, args: ['searchInput',] }],
40917
- itemTemplate: [{ type: i0.ContentChild, args: [IgxComboItemDirective, { read: i0.TemplateRef },] }],
40918
- headerTemplate: [{ type: i0.ContentChild, args: [IgxComboHeaderDirective, { read: i0.TemplateRef },] }],
40919
- footerTemplate: [{ type: i0.ContentChild, args: [IgxComboFooterDirective, { read: i0.TemplateRef },] }],
40920
- headerItemTemplate: [{ type: i0.ContentChild, args: [IgxComboHeaderItemDirective, { read: i0.TemplateRef },] }],
40921
- addItemTemplate: [{ type: i0.ContentChild, args: [IgxComboAddItemDirective, { read: i0.TemplateRef },] }],
40922
- emptyTemplate: [{ type: i0.ContentChild, args: [IgxComboEmptyDirective, { read: i0.TemplateRef },] }],
40923
- toggleIconTemplate: [{ type: i0.ContentChild, args: [IgxComboToggleIconDirective, { read: i0.TemplateRef },] }],
40924
- clearIconTemplate: [{ type: i0.ContentChild, args: [IgxComboClearIconDirective, { read: i0.TemplateRef },] }],
40925
- virtualScrollContainer: [{ type: i0.ViewChild, args: [IgxForOfDirective, { static: true },] }],
40926
- selectionChanging: [{ type: i0.Output }],
40927
- opening: [{ type: i0.Output }],
40928
- opened: [{ type: i0.Output }],
40929
- closing: [{ type: i0.Output }],
40930
- closed: [{ type: i0.Output }],
40931
- addition: [{ type: i0.Output }],
40932
- searchInputUpdate: [{ type: i0.Output }],
40933
- dataPreLoad: [{ type: i0.Output }],
40934
- id: [{ type: i0.HostBinding, args: ['attr.id',] }, { type: i0.Input }],
40935
- width: [{ type: i0.HostBinding, args: ['style.width',] }, { type: i0.Input }],
40936
- cssClass: [{ type: i0.HostBinding, args: ['class.igx-combo',] }],
40937
- role: [{ type: i0.HostBinding, args: ["attr.role",] }],
40938
- ariaExpanded: [{ type: i0.HostBinding, args: ['attr.aria-expanded',] }],
40939
- hasPopUp: [{ type: i0.HostBinding, args: ['attr.aria-haspopup',] }],
40940
- ariaOwns: [{ type: i0.HostBinding, args: ['attr.aria-owns',] }],
40941
- allowCustomValues: [{ type: i0.Input }],
40942
- itemsMaxHeight: [{ type: i0.Input }],
40943
- itemsWidth: [{ type: i0.Input }],
40944
- itemHeight: [{ type: i0.Input }],
40945
- placeholder: [{ type: i0.Input }],
40946
- searchPlaceholder: [{ type: i0.Input }],
40947
- showSearchCaseIcon: [{ type: i0.Input }],
40948
- data: [{ type: i0.Input }],
40949
- valueKey: [{ type: i0.Input }],
40950
- displayKey: [{ type: i0.Input }],
40951
- groupKey: [{ type: i0.Input }],
40952
- filterable: [{ type: i0.Input }],
40953
- ariaLabelledBy: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.aria-labelledby',] }],
40954
- disabled: [{ type: i0.Input }],
40955
- type: [{ type: i0.Input }],
40956
40818
  autoFocusSearch: [{ type: i0.Input }],
40957
- dropdownContainer: [{ type: i0.ViewChild, args: ['dropdownItemContainer', { static: true },] }],
40958
- primitiveTemplate: [{ type: i0.ViewChild, args: ['primitive', { read: i0.TemplateRef, static: true },] }],
40959
- complexTemplate: [{ type: i0.ViewChild, args: ['complex', { read: i0.TemplateRef, static: true },] }],
40960
- virtDir: [{ type: i0.ViewChild, args: [IgxForOfDirective, { read: IgxForOfDirective, static: true },] }],
40961
- onArrowDown: [{ type: i0.HostListener, args: ['keydown.ArrowDown', ['$event'],] }, { type: i0.HostListener, args: ['keydown.Alt.ArrowDown', ['$event'],] }]
40819
+ filterable: [{ type: i0.Input }],
40820
+ searchPlaceholder: [{ type: i0.Input }],
40821
+ selectionChanging: [{ type: i0.Output }],
40822
+ dropdown: [{ type: i0.ViewChild, args: [IgxComboDropDownComponent, { static: true },] }]
40962
40823
  };
40963
40824
  /**
40964
40825
  * @hidden
@@ -40981,6 +40842,8 @@
40981
40842
  IgxComboToggleIconDirective,
40982
40843
  IgxComboClearIconDirective],
40983
40844
  exports: [IgxComboComponent, IgxComboItemComponent, IgxComboDropDownComponent, IgxComboAddItemComponent,
40845
+ IgxComboGroupingPipe,
40846
+ IgxComboFilteringPipe,
40984
40847
  IgxComboItemDirective,
40985
40848
  IgxComboEmptyDirective,
40986
40849
  IgxComboHeaderItemDirective,
@@ -40995,6 +40858,387 @@
40995
40858
  },] }
40996
40859
  ];
40997
40860
 
40861
+ /**
40862
+ * Represents a drop-down list that provides filtering functionality, allowing users to choose a single option from a predefined list.
40863
+ *
40864
+ * @igxModule IgxSimpleComboModule
40865
+ * @igxTheme igx-combo-theme
40866
+ * @igxKeywords combobox, single combo selection
40867
+ * @igxGroup Grids & Lists
40868
+ *
40869
+ * @remarks
40870
+ * It provides the ability to filter items as well as perform single selection on the provided data.
40871
+ * Additionally, it exposes keyboard navigation and custom styling capabilities.
40872
+ * @example
40873
+ * ```html
40874
+ * <igx-simple-combo [itemsMaxHeight]="250" [data]="locationData"
40875
+ * [displayKey]="'field'" [valueKey]="'field'"
40876
+ * placeholder="Location" searchPlaceholder="Search...">
40877
+ * </igx-simple-combo>
40878
+ * ```
40879
+ */
40880
+ var IgxSimpleComboComponent = /** @class */ (function (_super) {
40881
+ __extends(IgxSimpleComboComponent, _super);
40882
+ function IgxSimpleComboComponent(elementRef, cdr, selectionService, comboAPI, _iconService, platformUtil, _displayDensityOptions, _inputGroupType, _injector) {
40883
+ var _this = _super.call(this, elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) || this;
40884
+ _this.elementRef = elementRef;
40885
+ _this.cdr = cdr;
40886
+ _this.selectionService = selectionService;
40887
+ _this.comboAPI = comboAPI;
40888
+ _this._iconService = _iconService;
40889
+ _this.platformUtil = platformUtil;
40890
+ _this._displayDensityOptions = _displayDensityOptions;
40891
+ _this._inputGroupType = _inputGroupType;
40892
+ _this._injector = _injector;
40893
+ /**
40894
+ * Emitted when item selection is changing, before the selection completes
40895
+ *
40896
+ * ```html
40897
+ * <igx-simple-combo (selectionChanging)='handleSelection()'></igx-simple-combo>
40898
+ * ```
40899
+ */
40900
+ _this.selectionChanging = new i0.EventEmitter();
40901
+ /** @hidden @internal */
40902
+ _this.composing = false;
40903
+ _this._updateInput = true;
40904
+ _this.findMatch = function (element) {
40905
+ var value = _this.displayKey ? element[_this.displayKey] : element;
40906
+ return value.toString().toLowerCase().includes(_this.searchValue.trim().toLowerCase());
40907
+ };
40908
+ _this.comboAPI.register(_this);
40909
+ return _this;
40910
+ }
40911
+ Object.defineProperty(IgxSimpleComboComponent.prototype, "filteredData", {
40912
+ /** @hidden @internal */
40913
+ get: function () {
40914
+ return this._filteredData;
40915
+ },
40916
+ /** @hidden @internal */
40917
+ set: function (val) {
40918
+ this._filteredData = this.groupKey ? (val || []).filter(function (e) { return e.isHeader !== true; }) : val;
40919
+ this.checkMatch();
40920
+ },
40921
+ enumerable: false,
40922
+ configurable: true
40923
+ });
40924
+ /** @hidden @internal */
40925
+ IgxSimpleComboComponent.prototype.onArrowDown = function (event) {
40926
+ if (this.collapsed) {
40927
+ event.preventDefault();
40928
+ event.stopPropagation();
40929
+ this.open();
40930
+ }
40931
+ else {
40932
+ if (this.virtDir.igxForOf.length > 0) {
40933
+ this.dropdown.navigateFirst();
40934
+ this.dropdownContainer.nativeElement.focus();
40935
+ }
40936
+ else if (this.allowCustomValues) {
40937
+ this.addItem.element.nativeElement.focus();
40938
+ }
40939
+ }
40940
+ };
40941
+ /**
40942
+ * Select a defined item
40943
+ *
40944
+ * @param item the item to be selected
40945
+ * ```typescript
40946
+ * this.combo.select("New York");
40947
+ * ```
40948
+ */
40949
+ IgxSimpleComboComponent.prototype.select = function (item) {
40950
+ if (item !== null && item !== undefined) {
40951
+ var newSelection = this.selectionService.add_items(this.id, item instanceof Array ? item : [item], true);
40952
+ this.setSelection(newSelection);
40953
+ }
40954
+ };
40955
+ /**
40956
+ * Deselect the currently selected item
40957
+ *
40958
+ * @param item the items to be deselected
40959
+ * ```typescript
40960
+ * this.combo.deselect("New York");
40961
+ * ```
40962
+ */
40963
+ IgxSimpleComboComponent.prototype.deselect = function () {
40964
+ this.clearSelection();
40965
+ };
40966
+ /** @hidden @internal */
40967
+ IgxSimpleComboComponent.prototype.writeValue = function (value) {
40968
+ var oldSelection = this.selection;
40969
+ this.selectionService.select_items(this.id, value ? [value] : [], true);
40970
+ this.cdr.markForCheck();
40971
+ this._value = this.createDisplayText(this.selection, oldSelection);
40972
+ };
40973
+ /** @hidden @internal */
40974
+ IgxSimpleComboComponent.prototype.ngAfterViewInit = function () {
40975
+ var _this = this;
40976
+ this.virtDir.contentSizeChange.pipe(operators.takeUntil(this.destroy$)).subscribe(function () {
40977
+ if (_this.selection.length > 0) {
40978
+ var index = _this.virtDir.igxForOf.findIndex(function (e) {
40979
+ var current = e[_this.valueKey];
40980
+ if (_this.valueKey === null || _this.valueKey === undefined) {
40981
+ current = e;
40982
+ }
40983
+ return current === _this.selection[0];
40984
+ });
40985
+ _this.dropdown.navigateItem(index);
40986
+ }
40987
+ });
40988
+ this.dropdown.opened.pipe(operators.takeUntil(this.destroy$)).subscribe(function () {
40989
+ if (_this.composing) {
40990
+ _this.comboInput.focus();
40991
+ }
40992
+ });
40993
+ this.dropdown.closing.pipe(operators.takeUntil(this.destroy$)).subscribe(function (args) {
40994
+ if (_this.getEditElement() && !args.event) {
40995
+ _this.comboInput.focus();
40996
+ }
40997
+ else {
40998
+ _this.clearOnBlur();
40999
+ _this._onTouchedCallback();
41000
+ }
41001
+ });
41002
+ _super.prototype.ngAfterViewInit.call(this);
41003
+ };
41004
+ /** @hidden @internal */
41005
+ IgxSimpleComboComponent.prototype.handleInputChange = function (event) {
41006
+ this.searchValue = event.target.value;
41007
+ this._onChangeCallback(this.searchValue);
41008
+ if (this.collapsed && this.comboInput.focused) {
41009
+ this.open();
41010
+ this.dropdown.navigateFirst();
41011
+ }
41012
+ if (!this.comboInput.value.trim()) {
41013
+ // handle clearing of input by space
41014
+ this.clearSelection();
41015
+ this._onChangeCallback(null);
41016
+ }
41017
+ _super.prototype.handleInputChange.call(this, event);
41018
+ this.composing = true;
41019
+ };
41020
+ /** @hidden @internal */
41021
+ IgxSimpleComboComponent.prototype.handleKeyDown = function (event) {
41022
+ if (event.key === this.platformUtil.KEYMAP.ENTER) {
41023
+ var filtered = this.filteredData.find(this.findMatch);
41024
+ if (filtered === null || filtered === undefined) {
41025
+ return;
41026
+ }
41027
+ this.select(this.dropdown.focusedItem.itemID);
41028
+ event.preventDefault();
41029
+ event.stopPropagation();
41030
+ this.close();
41031
+ // manually trigger text selection as it will not be triggered during editing
41032
+ this.textSelection.trigger();
41033
+ return;
41034
+ }
41035
+ if (event.key === this.platformUtil.KEYMAP.BACKSPACE
41036
+ || event.key === this.platformUtil.KEYMAP.DELETE) {
41037
+ this._updateInput = false;
41038
+ this.clearSelection();
41039
+ }
41040
+ if (!this.collapsed && event.key === this.platformUtil.KEYMAP.TAB) {
41041
+ this.close();
41042
+ this.clearOnBlur();
41043
+ }
41044
+ this.composing = false;
41045
+ _super.prototype.handleKeyDown.call(this, event);
41046
+ };
41047
+ /** @hidden @internal */
41048
+ IgxSimpleComboComponent.prototype.handleKeyUp = function (event) {
41049
+ if (event.key === this.platformUtil.KEYMAP.ARROW_DOWN) {
41050
+ var firstItem_1 = this.selectionService.first_item(this.id);
41051
+ this.dropdown.focusedItem = firstItem_1 && this.filteredData.length > 0
41052
+ ? this.dropdown.items.find(function (i) { return i.itemID === firstItem_1; })
41053
+ : this.dropdown.items[0];
41054
+ this.dropdownContainer.nativeElement.focus();
41055
+ }
41056
+ };
41057
+ /** @hidden @internal */
41058
+ IgxSimpleComboComponent.prototype.handleItemKeyDown = function (event) {
41059
+ if (event.key === this.platformUtil.KEYMAP.ARROW_UP && event.altKey) {
41060
+ this.close();
41061
+ this.comboInput.focus();
41062
+ return;
41063
+ }
41064
+ if (event.key === this.platformUtil.KEYMAP.ENTER) {
41065
+ this.comboInput.focus();
41066
+ }
41067
+ };
41068
+ /** @hidden @internal */
41069
+ IgxSimpleComboComponent.prototype.handleItemClick = function () {
41070
+ this.close();
41071
+ this.comboInput.focus();
41072
+ };
41073
+ /** @hidden @internal */
41074
+ IgxSimpleComboComponent.prototype.onBlur = function () {
41075
+ if (this.collapsed) {
41076
+ this.clearOnBlur();
41077
+ }
41078
+ _super.prototype.onBlur.call(this);
41079
+ };
41080
+ /** @hidden @internal */
41081
+ IgxSimpleComboComponent.prototype.getEditElement = function () {
41082
+ return this.comboInput.nativeElement;
41083
+ };
41084
+ /** @hidden @internal */
41085
+ IgxSimpleComboComponent.prototype.handleClear = function (event) {
41086
+ if (this.disabled) {
41087
+ return;
41088
+ }
41089
+ this.clearSelection(true);
41090
+ if (this.collapsed) {
41091
+ this.open();
41092
+ this.dropdown.navigateFirst();
41093
+ }
41094
+ else {
41095
+ this.focusSearchInput(true);
41096
+ }
41097
+ event.stopPropagation();
41098
+ this.comboInput.value = this.filterValue = this.searchValue = '';
41099
+ this.dropdown.focusedItem = null;
41100
+ this.composing = false;
41101
+ this.comboInput.focus();
41102
+ };
41103
+ /** @hidden @internal */
41104
+ IgxSimpleComboComponent.prototype.handleOpened = function () {
41105
+ this.triggerCheck();
41106
+ this.dropdownContainer.nativeElement.focus();
41107
+ this.opened.emit({ owner: this });
41108
+ };
41109
+ /** @hidden @internal */
41110
+ IgxSimpleComboComponent.prototype.handleClosing = function (e) {
41111
+ var args = { owner: this, event: e.event, cancel: e.cancel };
41112
+ this.closing.emit(args);
41113
+ e.cancel = args.cancel;
41114
+ if (e.cancel) {
41115
+ return;
41116
+ }
41117
+ this.composing = false;
41118
+ // explicitly update selection and trigger text selection so that we don't have to force CD
41119
+ this.textSelection.selected = true;
41120
+ this.textSelection.trigger();
41121
+ };
41122
+ /** @hidden @internal */
41123
+ IgxSimpleComboComponent.prototype.focusSearchInput = function (opening) {
41124
+ if (opening) {
41125
+ this.dropdownContainer.nativeElement.focus();
41126
+ }
41127
+ else {
41128
+ this.comboInput.nativeElement.focus();
41129
+ this.toggle();
41130
+ }
41131
+ };
41132
+ /** @hidden @internal */
41133
+ IgxSimpleComboComponent.prototype.onClick = function (event) {
41134
+ _super.prototype.onClick.call(this, event);
41135
+ if (this.comboInput.value.length === 0) {
41136
+ this.virtDir.scrollTo(0);
41137
+ }
41138
+ };
41139
+ IgxSimpleComboComponent.prototype.setSelection = function (newSelection) {
41140
+ var newSelectionAsArray = newSelection ? Array.from(newSelection) : [];
41141
+ var oldSelectionAsArray = Array.from(this.selectionService.get(this.id) || []);
41142
+ var displayText = this.createDisplayText(newSelectionAsArray, oldSelectionAsArray);
41143
+ var args = {
41144
+ newSelection: newSelectionAsArray[0],
41145
+ oldSelection: oldSelectionAsArray[0],
41146
+ displayText: displayText,
41147
+ owner: this,
41148
+ cancel: false
41149
+ };
41150
+ this.selectionChanging.emit(args);
41151
+ if (!args.cancel) {
41152
+ var argsSelection = args.newSelection !== undefined
41153
+ && args.newSelection !== null
41154
+ ? [args.newSelection]
41155
+ : [];
41156
+ this.selectionService.select_items(this.id, argsSelection, true);
41157
+ if (this._updateInput) {
41158
+ this.comboInput.value = this._value = displayText !== args.displayText
41159
+ ? args.displayText
41160
+ : this.createDisplayText(argsSelection, [args.oldSelection]);
41161
+ }
41162
+ this._onChangeCallback(args.newSelection);
41163
+ this._updateInput = true;
41164
+ }
41165
+ };
41166
+ IgxSimpleComboComponent.prototype.createDisplayText = function (newSelection, oldSelection) {
41167
+ var _this = this;
41168
+ if (this.isRemote) {
41169
+ return this.getRemoteSelection(newSelection, oldSelection);
41170
+ }
41171
+ if (this.displayKey !== null && this.displayKey !== undefined
41172
+ && newSelection.length > 0) {
41173
+ return this.convertKeysToItems(newSelection).map(function (e) { return e[_this.displayKey]; })[0];
41174
+ }
41175
+ return newSelection[0] || '';
41176
+ };
41177
+ IgxSimpleComboComponent.prototype.clearSelection = function (ignoreFilter) {
41178
+ var newSelection = this.selectionService.get_empty();
41179
+ if (this.filteredData.length !== this.data.length && !ignoreFilter) {
41180
+ newSelection = this.selectionService.delete_items(this.id, this.selectionService.get_all_ids(this.filteredData, this.valueKey));
41181
+ }
41182
+ this.setSelection(newSelection);
41183
+ };
41184
+ IgxSimpleComboComponent.prototype.clearOnBlur = function () {
41185
+ var filtered = this.filteredData.find(this.findMatch);
41186
+ if ((filtered === undefined || filtered === null)) {
41187
+ this.close();
41188
+ this.clearSelection();
41189
+ this.searchValue = '';
41190
+ }
41191
+ };
41192
+ return IgxSimpleComboComponent;
41193
+ }(IgxComboBaseDirective));
41194
+ IgxSimpleComboComponent.decorators = [
41195
+ { type: i0.Component, args: [{
41196
+ selector: 'igx-simple-combo',
41197
+ template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [suppressInputAutofocus]=\"true\" [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\" aria-autocomplete=\"both\"\n [attr.aria-owns]=\"dropdown.id\" [attr.aria-labelledby]=\"ariaLabelledBy\" [disabled]=\"disabled\"\n [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 *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-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 (keydown)=\"handleItemKeyDown($event)\">\n <igx-combo-item role=\"option\" [singleMode]=\"true\" [itemHeight]='itemHeight' (click)=\"handleItemClick()\" *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 #addItem [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",
41198
+ providers: [
41199
+ IgxComboAPIService,
41200
+ { provide: IGX_COMBO_COMPONENT, useExisting: IgxSimpleComboComponent },
41201
+ { provide: forms.NG_VALUE_ACCESSOR, useExisting: IgxSimpleComboComponent, multi: true }
41202
+ ]
41203
+ },] }
41204
+ ];
41205
+ IgxSimpleComboComponent.ctorParameters = function () { return [
41206
+ { type: i0.ElementRef },
41207
+ { type: i0.ChangeDetectorRef },
41208
+ { type: IgxSelectionAPIService },
41209
+ { type: IgxComboAPIService },
41210
+ { type: IgxIconService },
41211
+ { type: PlatformUtil },
41212
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [DisplayDensityToken,] }] },
41213
+ { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [IGX_INPUT_GROUP_TYPE,] }] },
41214
+ { type: i0.Injector, decorators: [{ type: i0.Optional }] }
41215
+ ]; };
41216
+ IgxSimpleComboComponent.propDecorators = {
41217
+ dropdown: [{ type: i0.ViewChild, args: [IgxComboDropDownComponent, { static: true },] }],
41218
+ addItem: [{ type: i0.ViewChild, args: [IgxComboAddItemComponent,] }],
41219
+ selectionChanging: [{ type: i0.Output }],
41220
+ textSelection: [{ type: i0.ViewChild, args: [IgxTextSelectionDirective, { static: true },] }],
41221
+ onArrowDown: [{ type: i0.HostListener, args: ['keydown.ArrowDown', ['$event'],] }, { type: i0.HostListener, args: ['keydown.Alt.ArrowDown', ['$event'],] }]
41222
+ };
41223
+ var IgxSimpleComboModule = /** @class */ (function () {
41224
+ function IgxSimpleComboModule() {
41225
+ }
41226
+ return IgxSimpleComboModule;
41227
+ }());
41228
+ IgxSimpleComboModule.decorators = [
41229
+ { type: i0.NgModule, args: [{
41230
+ declarations: [IgxSimpleComboComponent],
41231
+ imports: [
41232
+ IgxComboModule, IgxRippleModule, i2.CommonModule,
41233
+ IgxInputGroupModule, forms.FormsModule, forms.ReactiveFormsModule,
41234
+ IgxForOfModule, IgxToggleModule, IgxCheckboxModule,
41235
+ IgxDropDownModule, IgxButtonModule, IgxIconModule,
41236
+ IgxTextSelectionModule
41237
+ ],
41238
+ exports: [IgxSimpleComboComponent, IgxComboModule]
41239
+ },] }
41240
+ ];
41241
+
40998
41242
  /** Header orientation in `dialog` mode. */
40999
41243
  var PickerHeaderOrientation = mkenum({
41000
41244
  Horizontal: 'horizontal',
@@ -52403,15 +52647,23 @@
52403
52647
  var _this = this;
52404
52648
  if (!val && val !== 0) {
52405
52649
  this.expression.searchVal = null;
52406
- this.showHideArrowButtons();
52650
+ var index = this.expressionsList.findIndex(function (item) { return item.expression === _this.expression; });
52651
+ if (index === 0 && this.expressionsList.length === 1) {
52652
+ this.clearFiltering();
52653
+ return;
52654
+ }
52407
52655
  }
52408
52656
  else {
52657
+ var oldValue = this.expression.searchVal;
52658
+ if (isEqual(oldValue, val)) {
52659
+ return;
52660
+ }
52409
52661
  this.expression.searchVal = DataUtil.parseValue(this.column.dataType, val);
52410
52662
  if (this.expressionsList.find(function (item) { return item.expression === _this.expression; }) === undefined) {
52411
52663
  this.addExpression(true);
52412
52664
  }
52665
+ this.filter();
52413
52666
  }
52414
- this.filter();
52415
52667
  },
52416
52668
  enumerable: false,
52417
52669
  configurable: true
@@ -54206,7 +54458,7 @@
54206
54458
  { type: i0.Component, args: [{
54207
54459
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
54208
54460
  selector: 'igx-grid-header-row',
54209
- template: "<div role=\"rowgroup\" class=\"igx-grid-thead__wrapper\" [style.width.px]=\"width\"\n [attr.aria-activedescendant]=\"activeDescendant\" [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n <!-- Column headers area -->\n <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n\n <!-- Left column moving area -->\n <ng-container *ngIf=\"grid.hasMovableColumns && grid.columnInDrag && pinnedColumnCollection.length <= 0\">\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-left\" droppable=\"true\" [style.left.px]=\"grid.pinnedWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n </ng-container>\n <ng-container *ngIf=\"grid.hasMovableColumns && grid.columnInDrag && pinnedColumnCollection.length > 0\">\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-pinned\" droppable=\"true\" [style.left.px]=\"grid.pinnedWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n </ng-container>\n\n <!-- Row dragging area -->\n <ng-container *ngIf=\"grid.rowDraggable\">\n <div #headerDragContainer class=\"igx-grid__drag-indicator igx-grid__tr-action\" (pointerdown)=\"$event.preventDefault()\" [class.igx-grid__drag-indicator--header]=\"!grid.isRowSelectable\">\n <div style=\"visibility: hidden;\">\n <ng-container *ngTemplateOutlet=\"grid.dragIndicatorIconTemplate || grid.dragIndicatorIconBase\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- Row selectors area -->\n <ng-container *ngIf=\"grid.showRowSelectors\">\n <div #headerSelectorContainer class=\"igx-grid__cbx-selection igx-grid__tr-action\"\n [class.igx-grid__cbx-selection--push]=\"grid.filteringService.isFilterRowVisible\"\n (click)=\"headerRowSelection($event)\"\n (pointerdown)=\"$event.preventDefault()\">\n <ng-container #headSelector\n *ngTemplateOutlet=\"grid.headSelectorTemplate || headSelectorBaseTemplate; context: rowSelectorsContext\">\n </ng-container>\n </div>\n </ng-container>\n\n <!-- Hierarchical grids expand all area -->\n <ng-container *ngIf=\"isHierarchicalGrid\">\n <div #headerHierarchyExpander\n (click)=\"grid.toggleAll()\"\n (pointerdown)=\"$event.preventDefault()\"\n [hidden]=\"!grid.hasExpandableChildren || !grid.hasVisibleColumns\"\n [ngClass]=\"{\n 'igx-grid__hierarchical-expander igx-grid__hierarchical-expander--header igx-grid__tr-action': grid.hasExpandableChildren,\n 'igx-grid__hierarchical-expander--push': grid.filteringService.isFilterRowVisible,\n 'igx-grid__hierarchical-expander--no-border': grid.isRowSelectable || grid.rowDraggable\n }\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate; context: { $implicit: grid }\"></ng-container>\n </div>\n </ng-container>\n\n\n <!-- Grouping icon toggle area -->\n <ng-container *ngIf=\"grid?.groupingExpressions?.length\">\n <div #headerGroupContainer class=\"{{ indentationCSSClasses }}\"\n (click)=\"grid.toggleAllGroupRows()\"\n (pointerdown)=\"$event.preventDefault()\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate\"></ng-container>\n </div>\n </ng-container>\n\n <!-- Pinned columns collection from the start -->\n <ng-container *ngIf=\"pinnedColumnCollection.length && grid.isPinningToStart\">\n <ng-container *ngFor=\"let column of pinnedColumnCollection | igxTopLevel\">\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\"\n [style.min-width]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\"\n [style.flex-basis]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\">\n </igx-grid-header-group>\n </ng-container>\n </ng-container>\n\n <!-- Unpinned columns collection -->\n <ng-template igxGridFor #headerVirtualContainer let-column\n [igxGridForOf]=\"unpinnedColumnCollection | igxTopLevel\"\n [igxForScrollContainer]=\"grid.parentVirtDir\"\n [igxForContainerSize]=\"grid.unpinnedWidth\"\n [igxForTrackBy]=\"grid.trackColumnChanges\"\n [igxForSizePropName]=\"'calcPixelWidth'\"\n [igxForScrollOrientation]=\"'horizontal'\"\n >\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\"\n [style.min-width]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\"\n [style.flex-basis]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\">\n </igx-grid-header-group>\n </ng-template>\n\n <!-- Pinned columns collection at the end -->\n <ng-container *ngIf=\"pinnedColumnCollection.length && !grid.isPinningToStart\">\n <ng-container *ngFor=\"let column of pinnedColumnCollection | igxTopLevel\">\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\"\n [style.min-width]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\"\n [style.flex-basis]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\"\n [style.left]=\"column.rightPinnedOffset\">\n </igx-grid-header-group>\n </ng-container>\n </ng-container>\n </div>\n\n <!-- Filter row area -->\n <ng-container *ngIf=\"grid.filteringService.isFilterRowVisible\">\n <igx-grid-filtering-row #filteringRow\n [column]=\"grid.filteringService.filteredColumn\"\n [style.width.px]=\"width\">\n </igx-grid-filtering-row>\n </ng-container>\n\n <!-- Right column moving area -->\n <ng-container *ngIf=\"grid.hasMovableColumns && grid.columnInDrag\">\n <span id=\"right\" class=\"igx-grid__scroll-on-drag-right\" droppable=\"true\" [igxColumnMovingDrop]=\"headerContainer\"></span>\n </ng-container>\n</div>\n\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\"></div>\n\n<!-- Default row selection header checkbox template -->\n<ng-template #headSelectorBaseTemplate igxHeadSelector let-context>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"context.selectedCount > 0 && context.totalCount === context.selectedCount\"\n [disableRipple]=\"true\"\n [ngStyle]=\"{'visibility': grid.isMultiRowSelectionEnabled? 'visible' : 'hidden' }\"\n [indeterminate]=\"context.selectedCount > 0 && context.selectedCount !== context.totalCount\"\n [aria-label]=\"grid.headSelectorBaseAriaLabel\"\n #headerCheckbox>\n </igx-checkbox>\n </div>\n</ng-template>\n"
54461
+ template: "<div role=\"rowgroup\" class=\"igx-grid-thead__wrapper\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n <!-- Column headers area -->\n <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n\n <!-- Left column moving area -->\n <ng-container *ngIf=\"grid.hasMovableColumns && grid.columnInDrag && pinnedColumnCollection.length <= 0\">\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-left\" droppable=\"true\" [style.left.px]=\"grid.pinnedWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n </ng-container>\n <ng-container *ngIf=\"grid.hasMovableColumns && grid.columnInDrag && pinnedColumnCollection.length > 0\">\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-pinned\" droppable=\"true\" [style.left.px]=\"grid.pinnedWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n </ng-container>\n\n <!-- Row dragging area -->\n <ng-container *ngIf=\"grid.rowDraggable\">\n <div #headerDragContainer class=\"igx-grid__drag-indicator igx-grid__tr-action\" (pointerdown)=\"$event.preventDefault()\" [class.igx-grid__drag-indicator--header]=\"!grid.isRowSelectable\">\n <div style=\"visibility: hidden;\">\n <ng-container *ngTemplateOutlet=\"grid.dragIndicatorIconTemplate || grid.dragIndicatorIconBase\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- Row selectors area -->\n <ng-container *ngIf=\"grid.showRowSelectors\">\n <div #headerSelectorContainer class=\"igx-grid__cbx-selection igx-grid__tr-action\"\n [class.igx-grid__cbx-selection--push]=\"grid.filteringService.isFilterRowVisible\"\n (click)=\"headerRowSelection($event)\"\n (pointerdown)=\"$event.preventDefault()\">\n <ng-container #headSelector\n *ngTemplateOutlet=\"grid.headSelectorTemplate || headSelectorBaseTemplate; context: rowSelectorsContext\">\n </ng-container>\n </div>\n </ng-container>\n\n <!-- Hierarchical grids expand all area -->\n <ng-container *ngIf=\"isHierarchicalGrid\">\n <div #headerHierarchyExpander\n (click)=\"grid.toggleAll()\"\n (pointerdown)=\"$event.preventDefault()\"\n [hidden]=\"!grid.hasExpandableChildren || !grid.hasVisibleColumns\"\n [ngClass]=\"{\n 'igx-grid__hierarchical-expander igx-grid__hierarchical-expander--header igx-grid__tr-action': grid.hasExpandableChildren,\n 'igx-grid__hierarchical-expander--push': grid.filteringService.isFilterRowVisible,\n 'igx-grid__hierarchical-expander--no-border': grid.isRowSelectable || grid.rowDraggable\n }\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate; context: { $implicit: grid }\"></ng-container>\n </div>\n </ng-container>\n\n\n <!-- Grouping icon toggle area -->\n <ng-container *ngIf=\"grid?.groupingExpressions?.length\">\n <div #headerGroupContainer class=\"{{ indentationCSSClasses }}\"\n (click)=\"grid.toggleAllGroupRows()\"\n (pointerdown)=\"$event.preventDefault()\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate\"></ng-container>\n </div>\n </ng-container>\n\n <!-- Pinned columns collection from the start -->\n <ng-container *ngIf=\"pinnedColumnCollection.length && grid.isPinningToStart\">\n <ng-container *ngFor=\"let column of pinnedColumnCollection | igxTopLevel\">\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\"\n [style.min-width]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\"\n [style.flex-basis]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\">\n </igx-grid-header-group>\n </ng-container>\n </ng-container>\n\n <!-- Unpinned columns collection -->\n <ng-template igxGridFor #headerVirtualContainer let-column\n [igxGridForOf]=\"unpinnedColumnCollection | igxTopLevel\"\n [igxForScrollContainer]=\"grid.parentVirtDir\"\n [igxForContainerSize]=\"grid.unpinnedWidth\"\n [igxForTrackBy]=\"grid.trackColumnChanges\"\n [igxForSizePropName]=\"'calcPixelWidth'\"\n [igxForScrollOrientation]=\"'horizontal'\"\n >\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\"\n [style.min-width]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\"\n [style.flex-basis]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\">\n </igx-grid-header-group>\n </ng-template>\n\n <!-- Pinned columns collection at the end -->\n <ng-container *ngIf=\"pinnedColumnCollection.length && !grid.isPinningToStart\">\n <ng-container *ngFor=\"let column of pinnedColumnCollection | igxTopLevel\">\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\"\n [style.min-width]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\"\n [style.flex-basis]=\"column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL\"\n [style.left]=\"column.rightPinnedOffset\">\n </igx-grid-header-group>\n </ng-container>\n </ng-container>\n </div>\n\n <!-- Filter row area -->\n <ng-container *ngIf=\"grid.filteringService.isFilterRowVisible\">\n <igx-grid-filtering-row #filteringRow\n [column]=\"grid.filteringService.filteredColumn\"\n [style.width.px]=\"width\">\n </igx-grid-filtering-row>\n </ng-container>\n\n <!-- Right column moving area -->\n <ng-container *ngIf=\"grid.hasMovableColumns && grid.columnInDrag\">\n <span id=\"right\" class=\"igx-grid__scroll-on-drag-right\" droppable=\"true\" [igxColumnMovingDrop]=\"headerContainer\"></span>\n </ng-container>\n</div>\n\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\"></div>\n\n<!-- Default row selection header checkbox template -->\n<ng-template #headSelectorBaseTemplate igxHeadSelector let-context>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"context.selectedCount > 0 && context.totalCount === context.selectedCount\"\n [disableRipple]=\"true\"\n [ngStyle]=\"{'visibility': grid.isMultiRowSelectionEnabled? 'visible' : 'hidden' }\"\n [indeterminate]=\"context.selectedCount > 0 && context.selectedCount !== context.totalCount\"\n [aria-label]=\"grid.headSelectorBaseAriaLabel\"\n #headerCheckbox>\n </igx-checkbox>\n </div>\n</ng-template>\n"
54210
54462
  },] }
54211
54463
  ];
54212
54464
  IgxGridHeaderRowComponent.ctorParameters = function () { return [
@@ -54390,9 +54642,10 @@
54390
54642
  */
54391
54643
  _this.gridScroll = new i0.EventEmitter();
54392
54644
  /**
54645
+ * @deprecated in version 12.1.0. Use the corresponding output exposed by the `igx-paginator` component instead
54646
+ *
54393
54647
  * Emitted after the current page is changed.
54394
54648
  *
54395
- * @deprecated in version 12.1.0
54396
54649
  * @example
54397
54650
  * ```html
54398
54651
  * <igx-grid (pageChange)="onPageChange($event)"></igx-grid>
@@ -54405,10 +54658,10 @@
54405
54658
  */
54406
54659
  _this.pageChange = new i0.EventEmitter();
54407
54660
  /**
54661
+ * @deprecated in version 12.1.0. Use the corresponding output exposed by the `igx-paginator` component instead
54662
+ *
54408
54663
  * Emitted when `perPage` property value of the grid is changed.
54409
54664
  *
54410
- * @deprecated in version 12.1.0
54411
- * @example
54412
54665
  * ```html
54413
54666
  * <igx-grid #grid (perPageChange)="onPerPageChange($event)" [autoGenerate]="true"></igx-grid>
54414
54667
  * ```
@@ -54425,6 +54678,8 @@
54425
54678
  */
54426
54679
  _this.class = '';
54427
54680
  /**
54681
+ * @deprecated in version 12.2.0. We suggest using `rowClasses` property instead
54682
+ *
54428
54683
  * Gets/Sets the styling classes applied to all even `IgxGridRowComponent`s in the grid.
54429
54684
  *
54430
54685
  * @example
@@ -54434,6 +54689,8 @@
54434
54689
  */
54435
54690
  _this.evenRowCSS = 'igx-grid__tr--even';
54436
54691
  /**
54692
+ * @deprecated in version 12.2.0. We suggest using `rowClasses` property instead
54693
+ *
54437
54694
  * Gets/Sets the styling classes applied to all odd `IgxGridRowComponent`s in the grid.
54438
54695
  *
54439
54696
  * @example
@@ -54688,9 +54945,10 @@
54688
54945
  */
54689
54946
  _this.filteringDone = new i0.EventEmitter();
54690
54947
  /**
54948
+ * @deprecated in version 12.1.0. Use the corresponding output exposed by the `igx-paginator` component instead
54949
+ *
54691
54950
  * Emitted after paging is performed.
54692
54951
  *
54693
- * @deprecated in version 12.1.x
54694
54952
  * @remarks
54695
54953
  * Returns an object consisting of the previous and next pages.
54696
54954
  * @example
@@ -55394,9 +55652,10 @@
55394
55652
  });
55395
55653
  Object.defineProperty(IgxGridBaseDirective.prototype, "paging", {
55396
55654
  /**
55655
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
55656
+ *
55397
55657
  * Gets/Sets whether the paging feature is enabled.
55398
55658
  *
55399
- * @deprecated in version 12.1.x
55400
55659
  * @remarks
55401
55660
  * The default state is disabled (false).
55402
55661
  * @example
@@ -55418,9 +55677,10 @@
55418
55677
  });
55419
55678
  Object.defineProperty(IgxGridBaseDirective.prototype, "page", {
55420
55679
  /**
55680
+ * @deprecated in version 12.1.0. Use `page` property form `paginator` component instead
55681
+ *
55421
55682
  * Gets/Sets the current page index.
55422
55683
  *
55423
- * @deprecated in version 12.1.x
55424
55684
  * @example
55425
55685
  * ```html
55426
55686
  * <igx-grid #grid [data]="Data" [autoGenerate]="true">
@@ -55444,9 +55704,10 @@
55444
55704
  });
55445
55705
  Object.defineProperty(IgxGridBaseDirective.prototype, "perPage", {
55446
55706
  /**
55707
+ * @deprecated in version 12.1.0. Use `perPage` property from `paginator` component instead
55708
+ *
55447
55709
  * Gets/Sets the number of visible items per page.
55448
55710
  *
55449
- * @deprecated in version 12.1.x
55450
55711
  * @remarks
55451
55712
  * The default is 15.
55452
55713
  * @example
@@ -55471,9 +55732,10 @@
55471
55732
  });
55472
55733
  Object.defineProperty(IgxGridBaseDirective.prototype, "columnHiding", {
55473
55734
  /**
55735
+ * @deprecated in version 10.1.0
55736
+ *
55474
55737
  * Gets/Sets whether the column hiding UI is enabled.
55475
55738
  *
55476
- * @deprecated
55477
55739
  * @remarks
55478
55740
  * By default it is disabled (false). In order for the UI to work, you need to enable the toolbar as shown in the example below.
55479
55741
  * @example
@@ -55724,9 +55986,9 @@
55724
55986
  });
55725
55987
  Object.defineProperty(IgxGridBaseDirective.prototype, "columnHidingTitle", {
55726
55988
  /**
55727
- * Gets/Sets the title to be displayed in the built-in column hiding UI.
55989
+ * @deprecated in version 10.1.0
55728
55990
  *
55729
- * @deprecated
55991
+ * Gets/Sets the title to be displayed in the built-in column hiding UI.
55730
55992
  *
55731
55993
  * @example
55732
55994
  * ```html
@@ -55776,9 +56038,9 @@
55776
56038
  });
55777
56039
  Object.defineProperty(IgxGridBaseDirective.prototype, "columnPinning", {
55778
56040
  /**
55779
- * Gets/Sets if the built-in column pinning UI should be shown in the toolbar.
56041
+ * @deprecated in version 10.1.0
55780
56042
  *
55781
- * @deprecated
56043
+ * Gets/Sets if the built-in column pinning UI should be shown in the toolbar.
55782
56044
  *
55783
56045
  * @example
55784
56046
  * ```html
@@ -55797,9 +56059,9 @@
55797
56059
  });
55798
56060
  Object.defineProperty(IgxGridBaseDirective.prototype, "columnPinningTitle", {
55799
56061
  /**
55800
- * Gets/Sets the title to be displayed in the UI of the column pinning.
56062
+ * @deprecated in version 10.1.0
55801
56063
  *
55802
- * @deprecated
56064
+ * Gets/Sets the title to be displayed in the UI of the column pinning.
55803
56065
  *
55804
56066
  * @example
55805
56067
  * ```html
@@ -56402,9 +56664,9 @@
56402
56664
  });
56403
56665
  Object.defineProperty(IgxGridBaseDirective.prototype, "hiddenColumnsText", {
56404
56666
  /**
56405
- * Gets/Sets the text to be displayed inside the toggle button.
56667
+ * @deprecated in version 10.1.0
56406
56668
  *
56407
- * @deprecated
56669
+ * Gets/Sets the text to be displayed inside the toggle button.
56408
56670
  *
56409
56671
  * @remarks
56410
56672
  * Used for the built-in column hiding UI of the`IgxColumnComponent`.
@@ -56413,7 +56675,6 @@
56413
56675
  * <igx-grid [columnHiding]="true" [showToolbar]="true" [hiddenColumnsText]="'Hidden Columns'"></igx-grid>
56414
56676
  * ```
56415
56677
  */
56416
- // @DeprecateProperty('`hiddenColumnsText` is deprecated')
56417
56678
  get: function () {
56418
56679
  return this._hiddenColumnsText;
56419
56680
  },
@@ -56426,9 +56687,9 @@
56426
56687
  });
56427
56688
  Object.defineProperty(IgxGridBaseDirective.prototype, "pinnedColumnsText", {
56428
56689
  /**
56429
- * Gets/Sets the text to be displayed inside the toggle button.
56690
+ * @deprecated in version 10.1.0
56430
56691
  *
56431
- * @deprecated
56692
+ * Gets/Sets the text to be displayed inside the toggle button.
56432
56693
  *
56433
56694
  * @remarks
56434
56695
  * Used for the built-in column pinning UI of the`IgxColumnComponent`.
@@ -56522,9 +56783,9 @@
56522
56783
  });
56523
56784
  Object.defineProperty(IgxGridBaseDirective.prototype, "showToolbar", {
56524
56785
  /**
56525
- * Gets/Sets whether the toolbar is shown.
56786
+ * @deprecated in version 11.0.0
56526
56787
  *
56527
- * @deprecated
56788
+ * Gets/Sets whether the toolbar is shown.
56528
56789
  *
56529
56790
  * @example
56530
56791
  * ```html
@@ -56542,9 +56803,9 @@
56542
56803
  });
56543
56804
  Object.defineProperty(IgxGridBaseDirective.prototype, "toolbarTitle", {
56544
56805
  /**
56545
- * Gets/Sets the toolbar's title.
56806
+ * @deprecated in version 11.0.0
56546
56807
  *
56547
- * @deprecated
56808
+ * Gets/Sets the toolbar's title.
56548
56809
  *
56549
56810
  * @example
56550
56811
  * ```html
@@ -56563,9 +56824,9 @@
56563
56824
  });
56564
56825
  Object.defineProperty(IgxGridBaseDirective.prototype, "exportExcel", {
56565
56826
  /**
56566
- * Gets/Sets whether exporting to MS Excel is enabled or disabled.
56827
+ * @deprecated `exportExcel` is deprecated
56567
56828
  *
56568
- * @deprecated
56829
+ * Gets/Sets whether exporting to MS Excel is enabled or disabled.
56569
56830
  *
56570
56831
  * @example
56571
56832
  * ```html
@@ -56584,9 +56845,9 @@
56584
56845
  });
56585
56846
  Object.defineProperty(IgxGridBaseDirective.prototype, "exportCsv", {
56586
56847
  /**
56587
- * Gets/Sets whether the option for exporting to CSV is enabled or disabled.
56848
+ * @deprecated `exportCsv` is deprecated
56588
56849
  *
56589
- * @deprecated
56850
+ * Gets/Sets whether the option for exporting to CSV is enabled or disabled.
56590
56851
  *
56591
56852
  * ```html
56592
56853
  * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" [exportCsv]="true"></igx-grid>
@@ -56604,9 +56865,9 @@
56604
56865
  });
56605
56866
  Object.defineProperty(IgxGridBaseDirective.prototype, "exportText", {
56606
56867
  /**
56607
- * Gets/Sets the textual content for the main export button.
56868
+ * @deprecated `exportText` is deprecated
56608
56869
  *
56609
- * @deprecated
56870
+ * Gets/Sets the textual content for the main export button.
56610
56871
  *
56611
56872
  * @example
56612
56873
  * ```html
@@ -56625,9 +56886,9 @@
56625
56886
  });
56626
56887
  Object.defineProperty(IgxGridBaseDirective.prototype, "exportExcelText", {
56627
56888
  /**
56628
- * Gets/Sets the textual content for the MS Excel export button.
56889
+ * @deprecated `exportExcelText` is deprecated
56629
56890
  *
56630
- * @deprecated
56891
+ * Gets/Sets the textual content for the MS Excel export button.
56631
56892
  *
56632
56893
  * ```html
56633
56894
  * <igx-grid [exportExcelText]="'My Excel Exporter" [showToolbar]="true" [exportText]="'My Exporter'" [exportCsv]="true"></igx-grid>
@@ -56645,9 +56906,9 @@
56645
56906
  });
56646
56907
  Object.defineProperty(IgxGridBaseDirective.prototype, "exportCsvText", {
56647
56908
  /**
56648
- * Gets/Sets the textual content for the CSV export button.
56909
+ * @deprecated `exportCsvText` is deprecated
56649
56910
  *
56650
- * @deprecated
56911
+ * Gets/Sets the textual content for the CSV export button.
56651
56912
  *
56652
56913
  * @example
56653
56914
  * ```html
@@ -57419,7 +57680,7 @@
57419
57680
  this.rendered$.pipe(operators.takeUntil(this.destroy$)).subscribe(function () {
57420
57681
  if (_this.paginator) {
57421
57682
  _this.paginator.perPage = _this._perPage !== DEFAULT_ITEMS_PER_PAGE ? _this._perPage : _this.paginator.perPage;
57422
- _this.paginator.totalRecords = _this.totalRecords;
57683
+ _this.paginator.totalRecords = _this.totalRecords ? _this.totalRecords : _this.paginator.totalRecords;
57423
57684
  _this.paginator.overlaySettings = { outlet: _this.outlet };
57424
57685
  }
57425
57686
  _this._rendered = true;
@@ -57913,9 +58174,10 @@
57913
58174
  });
57914
58175
  Object.defineProperty(IgxGridBaseDirective.prototype, "totalPages", {
57915
58176
  /**
58177
+ * @deprecated in version 12.1.0. Use the corresponding property exposed by the `igx-paginator`
58178
+ *
57916
58179
  * Gets the total number of pages.
57917
58180
  *
57918
- * @deprecated in version 12.1.0
57919
58181
  * @example
57920
58182
  * ```typescript
57921
58183
  * const totalPages = this.grid.totalPages;
@@ -57930,9 +58192,10 @@
57930
58192
  });
57931
58193
  Object.defineProperty(IgxGridBaseDirective.prototype, "isFirstPage", {
57932
58194
  /**
58195
+ * @deprecated in version 12.1.0. Use the corresponding property exposed by the `igx-paginator`
58196
+ *
57933
58197
  * Gets if the current page is the first page.
57934
58198
  *
57935
- * @deprecated in version 12.1.0
57936
58199
  * @example
57937
58200
  * ```typescript
57938
58201
  * const firstPage = this.grid.isFirstPage;
@@ -57945,9 +58208,10 @@
57945
58208
  configurable: true
57946
58209
  });
57947
58210
  /**
58211
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
58212
+ *
57948
58213
  * Goes to the next page, if the grid is not already at the last page.
57949
58214
  *
57950
- * @deprecated in version 12.1.0
57951
58215
  * @example
57952
58216
  * ```typescript
57953
58217
  * this.grid1.nextPage();
@@ -57959,9 +58223,10 @@
57959
58223
  (_a = this.paginator) === null || _a === void 0 ? void 0 : _a.nextPage();
57960
58224
  };
57961
58225
  /**
58226
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
58227
+ *
57962
58228
  * Goes to the previous page, if the grid is not already at the first page.
57963
58229
  *
57964
- * @deprecated in version 12.1.0
57965
58230
  * @example
57966
58231
  * ```typescript
57967
58232
  * this.grid1.previousPage();
@@ -58002,9 +58267,10 @@
58002
58267
  });
58003
58268
  Object.defineProperty(IgxGridBaseDirective.prototype, "isLastPage", {
58004
58269
  /**
58270
+ * @deprecated in version 12.1.0. Use the corresponding property exposed by the `igx-paginator`
58271
+ *
58005
58272
  * Returns if the current page is the last page.
58006
58273
  *
58007
- * @deprecated in version 12.1.0
58008
58274
  * @example
58009
58275
  * ```typescript
58010
58276
  * const lastPage = this.grid.isLastPage;
@@ -58121,6 +58387,8 @@
58121
58387
  this._columnsReordered(column);
58122
58388
  };
58123
58389
  /**
58390
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
58391
+ *
58124
58392
  * Goes to the desired page index.
58125
58393
  *
58126
58394
  * @example
@@ -61411,24 +61679,9 @@
61411
61679
  totalRecords: [{ type: i0.Input }],
61412
61680
  selectRowOnClick: [{ type: i0.Input }]
61413
61681
  };
61414
- __decorate([
61415
- DeprecateProperty('`pageChange` is deprecated. Use the corresponding output exposed by the `igx-paginator` component instead.')
61416
- ], IgxGridBaseDirective.prototype, "pageChange", void 0);
61417
- __decorate([
61418
- DeprecateProperty('`perPageChange` is deprecated. Use the corresponding output exposed by the `igx-paginator` component instead.')
61419
- ], IgxGridBaseDirective.prototype, "perPageChange", void 0);
61420
- __decorate([
61421
- DeprecateProperty('`evenRowCSS` is deprecated. We suggest using `rowClasses` property instead.')
61422
- ], IgxGridBaseDirective.prototype, "evenRowCSS", void 0);
61423
- __decorate([
61424
- DeprecateProperty('`oddRowCSS` is deprecated. We suggest using `rowClasses` property instead.')
61425
- ], IgxGridBaseDirective.prototype, "oddRowCSS", void 0);
61426
61682
  __decorate([
61427
61683
  WatchChanges()
61428
61684
  ], IgxGridBaseDirective.prototype, "primaryKey", void 0);
61429
- __decorate([
61430
- DeprecateProperty('`pagingDone` is deprecated. Use the corresponding output exposed by the `igx-paginator` component instead.')
61431
- ], IgxGridBaseDirective.prototype, "pagingDone", void 0);
61432
61685
  __decorate([
61433
61686
  WatchChanges()
61434
61687
  ], IgxGridBaseDirective.prototype, "filteringLogic", null);
@@ -61438,18 +61691,6 @@
61438
61691
  __decorate([
61439
61692
  WatchChanges()
61440
61693
  ], IgxGridBaseDirective.prototype, "advancedFilteringExpressionsTree", null);
61441
- __decorate([
61442
- DeprecateProperty('`paging` is deprecated')
61443
- ], IgxGridBaseDirective.prototype, "paging", null);
61444
- __decorate([
61445
- DeprecateProperty('`page` is deprecated. Use `page` property form `paginator` component instead.')
61446
- ], IgxGridBaseDirective.prototype, "page", null);
61447
- __decorate([
61448
- DeprecateProperty('`perPage` is deprecated. Use `perPage` property from `paginator` component instead.')
61449
- ], IgxGridBaseDirective.prototype, "perPage", null);
61450
- __decorate([
61451
- DeprecateProperty('`columnHiding` is deprecated.')
61452
- ], IgxGridBaseDirective.prototype, "columnHiding", null);
61453
61694
  __decorate([
61454
61695
  WatchChanges()
61455
61696
  ], IgxGridBaseDirective.prototype, "hideRowSelectors", null);
@@ -61471,42 +61712,9 @@
61471
61712
  __decorate([
61472
61713
  WatchChanges()
61473
61714
  ], IgxGridBaseDirective.prototype, "isLoading", null);
61474
- __decorate([
61475
- DeprecateProperty('`columnHidingTitle` is deprecated')
61476
- ], IgxGridBaseDirective.prototype, "columnHidingTitle", null);
61477
- __decorate([
61478
- DeprecateProperty('`columnPinning` is deprecated')
61479
- ], IgxGridBaseDirective.prototype, "columnPinning", null);
61480
- __decorate([
61481
- DeprecateProperty('`columnPinningTitle` is deprecated')
61482
- ], IgxGridBaseDirective.prototype, "columnPinningTitle", null);
61483
61715
  __decorate([
61484
61716
  WatchChanges()
61485
61717
  ], IgxGridBaseDirective.prototype, "sortingExpressions", null);
61486
- __decorate([
61487
- DeprecateProperty('`pinnedColumnsText` is deprecated')
61488
- ], IgxGridBaseDirective.prototype, "pinnedColumnsText", null);
61489
- __decorate([
61490
- DeprecateProperty('`showToolbar` is deprecated')
61491
- ], IgxGridBaseDirective.prototype, "showToolbar", null);
61492
- __decorate([
61493
- DeprecateProperty('`toolbarTitle` is deprecated')
61494
- ], IgxGridBaseDirective.prototype, "toolbarTitle", null);
61495
- __decorate([
61496
- DeprecateProperty('`exportExcel` is deprecated')
61497
- ], IgxGridBaseDirective.prototype, "exportExcel", null);
61498
- __decorate([
61499
- DeprecateProperty('`exportCsv` is deprecated')
61500
- ], IgxGridBaseDirective.prototype, "exportCsv", null);
61501
- __decorate([
61502
- DeprecateProperty('`exportText` is deprecated')
61503
- ], IgxGridBaseDirective.prototype, "exportText", null);
61504
- __decorate([
61505
- DeprecateProperty('`exportExcelText` is deprecated')
61506
- ], IgxGridBaseDirective.prototype, "exportExcelText", null);
61507
- __decorate([
61508
- DeprecateProperty('`exportCsvText` is deprecated')
61509
- ], IgxGridBaseDirective.prototype, "exportCsvText", null);
61510
61718
  __decorate([
61511
61719
  WatchChanges()
61512
61720
  ], IgxGridBaseDirective.prototype, "cellSelection", null);
@@ -61516,24 +61724,6 @@
61516
61724
  __decorate([
61517
61725
  WatchChanges()
61518
61726
  ], IgxGridBaseDirective.prototype, "columnSelection", null);
61519
- __decorate([
61520
- DeprecateProperty('`totalPages` is deprecated. Use the corresponding property exposed by the `igx-paginator`.')
61521
- ], IgxGridBaseDirective.prototype, "totalPages", null);
61522
- __decorate([
61523
- DeprecateProperty('`isFirstPage` is deprecated. Use the corresponding property exposed by the `igx-paginator`.')
61524
- ], IgxGridBaseDirective.prototype, "isFirstPage", null);
61525
- __decorate([
61526
- DeprecateMethod('Use the corresponding method exposed by the `igx-paginator`.')
61527
- ], IgxGridBaseDirective.prototype, "nextPage", null);
61528
- __decorate([
61529
- DeprecateMethod('Use the corresponding method exposed by the `igx-paginator`.')
61530
- ], IgxGridBaseDirective.prototype, "previousPage", null);
61531
- __decorate([
61532
- DeprecateProperty('`isLastPage` is deprecated. Use the corresponding property exposed by the `igx-paginator`.')
61533
- ], IgxGridBaseDirective.prototype, "isLastPage", null);
61534
- __decorate([
61535
- DeprecateMethod('Use the corresponding method exposed by the `igx-paginator`.')
61536
- ], IgxGridBaseDirective.prototype, "paginate", null);
61537
61727
  __decorate([
61538
61728
  WatchChanges()
61539
61729
  ], IgxGridBaseDirective.prototype, "selectRowOnClick", null);
@@ -61596,7 +61786,7 @@
61596
61786
  });
61597
61787
  Object.defineProperty(BaseRow.prototype, "rowData", {
61598
61788
  /**
61599
- * @deprecated Use 'data' instead.
61789
+ * @deprecated Use 'data' instead
61600
61790
  *
61601
61791
  * The data record that populates the row
61602
61792
  */
@@ -61608,8 +61798,7 @@
61608
61798
  });
61609
61799
  Object.defineProperty(BaseRow.prototype, "rowID", {
61610
61800
  /**
61611
- * @deprecated Use 'key' instead.
61612
- *
61801
+ * @deprecated Use 'key' instead
61613
61802
  */
61614
61803
  get: function () {
61615
61804
  return this.key;
@@ -61815,12 +62004,6 @@
61815
62004
  };
61816
62005
  return BaseRow;
61817
62006
  }());
61818
- __decorate([
61819
- DeprecateProperty("'rowData' property is deprecated. Use 'data' instead.")
61820
- ], BaseRow.prototype, "rowData", null);
61821
- __decorate([
61822
- DeprecateProperty("'rowID' property is deprecated. Use 'key' instead.")
61823
- ], BaseRow.prototype, "rowID", null);
61824
62007
  var IgxGridRow = /** @class */ (function (_super) {
61825
62008
  __extends(IgxGridRow, _super);
61826
62009
  /**
@@ -63063,17 +63246,6 @@
63063
63246
  enumerable: false,
63064
63247
  configurable: true
63065
63248
  });
63066
- /**
63067
- * @deprecated
63068
- * Gets whether the cell is selected.
63069
- * ```typescript
63070
- * let isCellSelected = thid.cell.isCellSelected();
63071
- * ```
63072
- * @memberof IgxGridCellComponent
63073
- */
63074
- IgxGridCellComponent.prototype.isCellSelected = function () {
63075
- return this.selectionService.selected(this.selectionNode);
63076
- };
63077
63249
  /**
63078
63250
  * @hidden
63079
63251
  * @internal
@@ -63385,9 +63557,6 @@
63385
63557
  onClick: [{ type: i0.HostListener, args: ['click', ['$event'],] }],
63386
63558
  onContextMenu: [{ type: i0.HostListener, args: ['contextmenu', ['$event'],] }]
63387
63559
  };
63388
- __decorate([
63389
- DeprecateMethod("'isCellSelected' is deprecated. Use 'selected' property instead.")
63390
- ], IgxGridCellComponent.prototype, "isCellSelected", null);
63391
63560
 
63392
63561
  var IgxGridFooterComponent = /** @class */ (function () {
63393
63562
  function IgxGridFooterComponent() {
@@ -63790,9 +63959,10 @@
63790
63959
  }
63791
63960
  Object.defineProperty(IgxColumnActionsComponent.prototype, "columns", {
63792
63961
  /**
63962
+ * @deprecated Use grid input instead.
63963
+ *
63793
63964
  * Gets the grid columns to provide an action for.
63794
63965
  *
63795
- * @deprecated
63796
63966
  * @example
63797
63967
  * ```typescript
63798
63968
  * let gridColumns = this.columnActions.columns;
@@ -64072,9 +64242,6 @@
64072
64242
  checkAllText: [{ type: i0.Input }],
64073
64243
  id: [{ type: i0.HostBinding, args: ['attr.id',] }, { type: i0.Input }]
64074
64244
  };
64075
- __decorate([
64076
- DeprecateProperty("Deprecated. Use 'grid' input instead.")
64077
- ], IgxColumnActionsComponent.prototype, "columns", null);
64078
64245
 
64079
64246
  /**
64080
64247
  * @hidden
@@ -68946,7 +69113,8 @@
68946
69113
  configurable: true
68947
69114
  });
68948
69115
  /**
68949
- * @deprecated
69116
+ * @deprecated in version 12.1.0. Use `getCellByColumn` or `getCellByKey` instead
69117
+ *
68950
69118
  * Returns a `CellType` object that matches the conditions.
68951
69119
  *
68952
69120
  * @example
@@ -69773,9 +69941,6 @@
69773
69941
  dropAreaMessage: [{ type: i0.Input }],
69774
69942
  showGroupArea: [{ type: i0.Input }]
69775
69943
  };
69776
- __decorate([
69777
- DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
69778
- ], IgxGridComponent.prototype, "getCellByColumnVisibleIndex", null);
69779
69944
 
69780
69945
  var IgxGridStateDirective = /** @class */ (function () {
69781
69946
  /**
@@ -72951,7 +73116,8 @@
72951
73116
  configurable: true
72952
73117
  });
72953
73118
  /**
72954
- * @deprecated
73119
+ * @deprecated in version 12.1.0. Use `getCellByColumn` or `getCellByKey` instead
73120
+ *
72955
73121
  * Returns a `CellType` object that matches the conditions.
72956
73122
  *
72957
73123
  * @example
@@ -73663,9 +73829,6 @@
73663
73829
  expansionDepth: [{ type: i0.Input }],
73664
73830
  rowLoadingIndicatorTemplate: [{ type: i0.Input }]
73665
73831
  };
73666
- __decorate([
73667
- DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
73668
- ], IgxTreeGridComponent.prototype, "getCellByColumnVisibleIndex", null);
73669
73832
 
73670
73833
  var IgxTreeGridRowComponent = /** @class */ (function (_super) {
73671
73834
  __extends(IgxTreeGridRowComponent, _super);
@@ -76163,7 +76326,8 @@
76163
76326
  configurable: true
76164
76327
  });
76165
76328
  /**
76166
- * @deprecated
76329
+ * @deprecated in version 12.1.0. Use `getCellByColumn` or `getCellByKey` instead
76330
+ *
76167
76331
  * Returns a `CellType` object that matches the conditions.
76168
76332
  *
76169
76333
  * @example
@@ -76859,9 +77023,6 @@
76859
77023
  data: [{ type: i0.Input }],
76860
77024
  expandChildren: [{ type: i0.Input }]
76861
77025
  };
76862
- __decorate([
76863
- DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
76864
- ], IgxHierarchicalGridComponent.prototype, "getCellByColumnVisibleIndex", null);
76865
77026
 
76866
77027
  var IgxHierarchicalGridCellComponent = /** @class */ (function (_super) {
76867
77028
  __extends(IgxHierarchicalGridCellComponent, _super);
@@ -81859,6 +82020,8 @@
81859
82020
  }
81860
82021
  Object.defineProperty(IgxToastComponent.prototype, "position", {
81861
82022
  /**
82023
+ * @deprecated in version 12.2.3. We suggest using `positionSettings` property instead
82024
+ *
81862
82025
  * Sets/gets the position of the toast.
81863
82026
  * If not set, the `position` attribute will have value `IgxToastPosition.Bottom`.
81864
82027
  * ```html
@@ -82015,9 +82178,6 @@
82015
82178
  position: [{ type: i0.Input }],
82016
82179
  positionSettings: [{ type: i0.Input }]
82017
82180
  };
82018
- __decorate([
82019
- DeprecateProperty('`position` is deprecated. We suggest using `positionSettings` property instead.')
82020
- ], IgxToastComponent.prototype, "position", null);
82021
82181
  /**
82022
82182
  * @hidden
82023
82183
  */
@@ -86061,6 +86221,8 @@
86061
86221
  exports.IgxSelectItemComponent = IgxSelectItemComponent;
86062
86222
  exports.IgxSelectModule = IgxSelectModule;
86063
86223
  exports.IgxSelectToggleIconDirective = IgxSelectToggleIconDirective;
86224
+ exports.IgxSimpleComboComponent = IgxSimpleComboComponent;
86225
+ exports.IgxSimpleComboModule = IgxSimpleComboModule;
86064
86226
  exports.IgxSlideComponent = IgxSlideComponent;
86065
86227
  exports.IgxSliderComponent = IgxSliderComponent;
86066
86228
  exports.IgxSliderModule = IgxSliderModule;
@@ -86274,185 +86436,184 @@
86274
86436
  exports.ɵ2 = ɵ2;
86275
86437
  exports.ɵa = IgxActionStripMenuItemDirective;
86276
86438
  exports.ɵb = IGX_DROPDOWN_BASE;
86277
- exports.ɵba = IgxGridActionButtonComponent;
86278
- exports.ɵbb = ToggleAnimationPlayer;
86279
- exports.ɵbc = IgxExpansionPanelTitleDirective;
86280
- exports.ɵbd = IgxExpansionPanelDescriptionDirective;
86281
- exports.ɵbe = IgxExpansionPanelIconDirective;
86282
- exports.ɵbf = IgxBannerActionsDirective;
86283
- exports.ɵbg = IgxDaysViewNavigationService;
86284
- exports.ɵbh = IgxDayItemComponent;
86285
- exports.ɵbi = IgxMonthViewSlotsCalendar;
86286
- exports.ɵbj = IgxGetViewDateCalendar;
86287
- exports.ɵbk = IgxCarouselIndicatorDirective;
86288
- exports.ɵbl = IgxCarouselNextButtonDirective;
86289
- exports.ɵbm = IgxCarouselPrevButtonDirective;
86290
- exports.ɵbn = IgxComboAPIService;
86291
- exports.ɵbo = IGX_COMBO_COMPONENT;
86292
- exports.ɵbq = IgxComboDropDownComponent;
86293
- exports.ɵbr = IgxComboItemComponent;
86294
- exports.ɵbs = IgxComboHeaderDirective;
86295
- exports.ɵbt = IgxComboFooterDirective;
86296
- exports.ɵbu = IgxComboItemDirective;
86297
- exports.ɵbv = IgxComboEmptyDirective;
86298
- exports.ɵbw = IgxComboHeaderItemDirective;
86299
- exports.ɵbx = IgxComboAddItemDirective;
86300
- exports.ɵby = IgxComboToggleIconDirective;
86301
- exports.ɵbz = IgxComboClearIconDirective;
86302
- exports.ɵca = IgxComboFilteringPipe;
86303
- exports.ɵcb = IgxComboGroupingPipe;
86304
- exports.ɵcc = IgxComboAddItemComponent;
86305
- exports.ɵcd = PickerBaseDirective;
86306
- exports.ɵce = IgxCalendarContainerComponent;
86307
- exports.ɵcf = IgxCalendarContainerModule;
86308
- exports.ɵcg = IgxDialogTitleDirective;
86309
- exports.ɵch = IgxDialogActionsDirective;
86310
- exports.ɵci = IgxCellCrudState;
86311
- exports.ɵcj = IgxRowCrudState;
86312
- exports.ɵck = IgxRowAddCrudState;
86313
- exports.ɵcl = IgxGridCRUDService;
86314
- exports.ɵcm = IgxColumnMovingService;
86315
- exports.ɵcn = IgxExcelStyleCustomDialogComponent;
86316
- exports.ɵco = IgxExcelStyleDefaultExpressionComponent;
86317
- exports.ɵcp = IgxExcelStyleDateExpressionComponent;
86318
- exports.ɵcq = HammerGesturesManager;
86319
- exports.ɵcr = WatchChanges;
86320
- exports.ɵcs = WatchColumnChanges;
86321
- exports.ɵct = notifyChanges;
86322
- exports.ɵcu = IgxNotificationsDirective;
86323
- exports.ɵcv = IgxGridColumnResizerComponent;
86324
- exports.ɵcw = IgxColumnResizerDirective;
86325
- exports.ɵcx = IgxColumnResizingService;
86326
- exports.ɵcy = IgxRowSelectorDirective;
86327
- exports.ɵcz = IgxGroupByRowSelectorDirective;
86439
+ exports.ɵba = IgxExpansionPanelTitleDirective;
86440
+ exports.ɵbb = IgxExpansionPanelDescriptionDirective;
86441
+ exports.ɵbc = IgxExpansionPanelIconDirective;
86442
+ exports.ɵbd = IgxBannerActionsDirective;
86443
+ exports.ɵbe = IgxDaysViewNavigationService;
86444
+ exports.ɵbf = IgxDayItemComponent;
86445
+ exports.ɵbg = IgxMonthViewSlotsCalendar;
86446
+ exports.ɵbh = IgxGetViewDateCalendar;
86447
+ exports.ɵbi = IgxCarouselIndicatorDirective;
86448
+ exports.ɵbj = IgxCarouselNextButtonDirective;
86449
+ exports.ɵbk = IgxCarouselPrevButtonDirective;
86450
+ exports.ɵbl = IGX_COMBO_COMPONENT;
86451
+ exports.ɵbn = IgxComboBaseDirective;
86452
+ exports.ɵbo = IgxComboHeaderDirective;
86453
+ exports.ɵbp = IgxComboFooterDirective;
86454
+ exports.ɵbq = IgxComboItemDirective;
86455
+ exports.ɵbr = IgxComboEmptyDirective;
86456
+ exports.ɵbs = IgxComboHeaderItemDirective;
86457
+ exports.ɵbt = IgxComboAddItemDirective;
86458
+ exports.ɵbu = IgxComboToggleIconDirective;
86459
+ exports.ɵbv = IgxComboClearIconDirective;
86460
+ exports.ɵbw = IgxComboAPIService;
86461
+ exports.ɵbx = IgxComboDropDownComponent;
86462
+ exports.ɵby = IgxComboItemComponent;
86463
+ exports.ɵbz = IgxComboFilteringPipe;
86464
+ exports.ɵca = IgxComboGroupingPipe;
86465
+ exports.ɵcb = IgxComboAddItemComponent;
86466
+ exports.ɵcc = PickerBaseDirective;
86467
+ exports.ɵcd = IgxCalendarContainerComponent;
86468
+ exports.ɵce = IgxCalendarContainerModule;
86469
+ exports.ɵcf = IgxDialogTitleDirective;
86470
+ exports.ɵcg = IgxDialogActionsDirective;
86471
+ exports.ɵch = IgxCellCrudState;
86472
+ exports.ɵci = IgxRowCrudState;
86473
+ exports.ɵcj = IgxRowAddCrudState;
86474
+ exports.ɵck = IgxGridCRUDService;
86475
+ exports.ɵcl = IgxColumnMovingService;
86476
+ exports.ɵcm = IgxExcelStyleCustomDialogComponent;
86477
+ exports.ɵcn = IgxExcelStyleDefaultExpressionComponent;
86478
+ exports.ɵco = IgxExcelStyleDateExpressionComponent;
86479
+ exports.ɵcp = HammerGesturesManager;
86480
+ exports.ɵcq = WatchChanges;
86481
+ exports.ɵcr = WatchColumnChanges;
86482
+ exports.ɵcs = notifyChanges;
86483
+ exports.ɵct = IgxNotificationsDirective;
86484
+ exports.ɵcu = IgxGridColumnResizerComponent;
86485
+ exports.ɵcv = IgxColumnResizerDirective;
86486
+ exports.ɵcw = IgxColumnResizingService;
86487
+ exports.ɵcx = IgxRowSelectorDirective;
86488
+ exports.ɵcy = IgxGroupByRowSelectorDirective;
86489
+ exports.ɵcz = IgxHeadSelectorDirective;
86328
86490
  exports.ɵd = IgxGridSelectionService;
86329
- exports.ɵda = IgxHeadSelectorDirective;
86330
- exports.ɵdb = IgxRowDragDirective;
86331
- exports.ɵdc = IgxDragIndicatorIconDirective;
86332
- exports.ɵdd = IgxRowDragGhostDirective;
86333
- exports.ɵde = IgxRowDragModule;
86334
- exports.ɵdf = IgxGridHeaderRowComponent;
86335
- exports.ɵdg = IgxGridHeaderGroupComponent;
86336
- exports.ɵdh = IgxGridHeaderComponent;
86337
- exports.ɵdi = IgxGridFilteringCellComponent;
86338
- exports.ɵdj = IgxFilteringService;
86339
- exports.ɵdk = IgxGridFilteringRowComponent;
86340
- exports.ɵdl = IgxGridGroupByAreaComponent;
86341
- exports.ɵdm = IgxGroupByAreaDirective;
86342
- exports.ɵdn = IgxGroupByMetaPipe;
86343
- exports.ɵdo = IgxTemplateOutletDirective;
86344
- exports.ɵdp = IgxTemplateOutletModule;
86345
- exports.ɵdq = IgxRowEditTemplateDirective;
86346
- exports.ɵdr = IgxRowEditTextDirective;
86347
- exports.ɵds = IgxRowAddTextDirective;
86348
- exports.ɵdt = IgxRowEditActionsDirective;
86349
- exports.ɵdu = IgxRowEditTabStopDirective;
86350
- exports.ɵdv = IgxSummaryRowComponent;
86351
- exports.ɵdw = IgxSummaryCellComponent;
86352
- exports.ɵdx = IgxRowDirective;
86353
- exports.ɵdy = IgxGridNavigationService;
86354
- exports.ɵdz = IgxGridSummaryService;
86355
- exports.ɵea = ConnectedPositioningStrategy;
86356
- exports.ɵeb = IgxGridGroupByRowComponent;
86357
- exports.ɵec = IgxTreeGridSelectionService;
86358
- exports.ɵed = IgxTreeGridGroupByAreaComponent;
86359
- exports.ɵee = IgxRowLoadingIndicatorTemplateDirective;
86360
- exports.ɵef = IgxHierarchicalGridNavigationService;
86361
- exports.ɵeg = IgxChildGridRowComponent;
86362
- exports.ɵeh = IgxGridCellComponent;
86363
- exports.ɵei = IgxGridFooterComponent;
86364
- exports.ɵej = IgxAdvancedFilteringDialogComponent;
86365
- exports.ɵek = IgxColumnHidingDirective;
86366
- exports.ɵel = IgxColumnPinningDirective;
86367
- exports.ɵem = IgxGridSharedModules;
86368
- exports.ɵen = IgxProcessBarTextTemplateDirective;
86369
- exports.ɵeo = IgxProgressBarGradientDirective;
86370
- exports.ɵep = DIR_DOCUMENT_FACTORY;
86371
- exports.ɵeq = DIR_DOCUMENT;
86372
- exports.ɵer = IgxDirectionality;
86373
- exports.ɵes = IgxSelectItemNavigationDirective;
86374
- exports.ɵet = IGX_TIME_PICKER_COMPONENT;
86375
- exports.ɵev = IgxItemListDirective;
86376
- exports.ɵew = IgxTimeItemDirective;
86377
- exports.ɵex = IgxTimePickerTemplateDirective;
86378
- exports.ɵey = IgxTimePickerActionsDirective;
86379
- exports.ɵez = TimeFormatPipe;
86491
+ exports.ɵda = IgxRowDragDirective;
86492
+ exports.ɵdb = IgxDragIndicatorIconDirective;
86493
+ exports.ɵdc = IgxRowDragGhostDirective;
86494
+ exports.ɵdd = IgxRowDragModule;
86495
+ exports.ɵde = IgxGridHeaderRowComponent;
86496
+ exports.ɵdf = IgxGridHeaderGroupComponent;
86497
+ exports.ɵdg = IgxGridHeaderComponent;
86498
+ exports.ɵdh = IgxGridFilteringCellComponent;
86499
+ exports.ɵdi = IgxFilteringService;
86500
+ exports.ɵdj = IgxGridFilteringRowComponent;
86501
+ exports.ɵdk = IgxGridGroupByAreaComponent;
86502
+ exports.ɵdl = IgxGroupByAreaDirective;
86503
+ exports.ɵdm = IgxGroupByMetaPipe;
86504
+ exports.ɵdn = IgxTemplateOutletDirective;
86505
+ exports.ɵdo = IgxTemplateOutletModule;
86506
+ exports.ɵdp = IgxRowEditTemplateDirective;
86507
+ exports.ɵdq = IgxRowEditTextDirective;
86508
+ exports.ɵdr = IgxRowAddTextDirective;
86509
+ exports.ɵds = IgxRowEditActionsDirective;
86510
+ exports.ɵdt = IgxRowEditTabStopDirective;
86511
+ exports.ɵdu = IgxSummaryRowComponent;
86512
+ exports.ɵdv = IgxSummaryCellComponent;
86513
+ exports.ɵdw = IgxRowDirective;
86514
+ exports.ɵdx = IgxGridNavigationService;
86515
+ exports.ɵdy = IgxGridSummaryService;
86516
+ exports.ɵdz = ConnectedPositioningStrategy;
86517
+ exports.ɵea = IgxGridGroupByRowComponent;
86518
+ exports.ɵeb = IgxTreeGridSelectionService;
86519
+ exports.ɵec = IgxTreeGridGroupByAreaComponent;
86520
+ exports.ɵed = IgxRowLoadingIndicatorTemplateDirective;
86521
+ exports.ɵee = IgxHierarchicalGridNavigationService;
86522
+ exports.ɵef = IgxChildGridRowComponent;
86523
+ exports.ɵeg = IgxGridCellComponent;
86524
+ exports.ɵeh = IgxGridFooterComponent;
86525
+ exports.ɵei = IgxAdvancedFilteringDialogComponent;
86526
+ exports.ɵej = IgxColumnHidingDirective;
86527
+ exports.ɵek = IgxColumnPinningDirective;
86528
+ exports.ɵel = IgxGridSharedModules;
86529
+ exports.ɵem = IgxProcessBarTextTemplateDirective;
86530
+ exports.ɵen = IgxProgressBarGradientDirective;
86531
+ exports.ɵeo = DIR_DOCUMENT_FACTORY;
86532
+ exports.ɵep = DIR_DOCUMENT;
86533
+ exports.ɵeq = IgxDirectionality;
86534
+ exports.ɵer = IgxSelectItemNavigationDirective;
86535
+ exports.ɵes = IGX_TIME_PICKER_COMPONENT;
86536
+ exports.ɵeu = IgxItemListDirective;
86537
+ exports.ɵev = IgxTimeItemDirective;
86538
+ exports.ɵew = IgxTimePickerTemplateDirective;
86539
+ exports.ɵex = IgxTimePickerActionsDirective;
86540
+ exports.ɵey = TimeFormatPipe;
86541
+ exports.ɵez = TimeItemPipe;
86380
86542
  exports.ɵf = IGX_EXPANSION_PANEL_COMPONENT;
86381
- exports.ɵfa = TimeItemPipe;
86382
- exports.ɵfb = IgxGridPipesModule;
86383
- exports.ɵfc = IgxGridCellStyleClassesPipe;
86384
- exports.ɵfd = IgxGridCellStylesPipe;
86385
- exports.ɵfe = IgxGridRowClassesPipe;
86386
- exports.ɵff = IgxGridRowStylesPipe;
86387
- exports.ɵfg = IgxGridNotGroupedPipe;
86388
- exports.ɵfh = IgxGridTopLevelColumns;
86389
- exports.ɵfi = IgxGridFilterConditionPipe;
86390
- exports.ɵfj = IgxGridTransactionPipe;
86391
- exports.ɵfk = IgxGridPaginatorOptionsPipe;
86392
- exports.ɵfl = IgxHasVisibleColumnsPipe;
86393
- exports.ɵfm = IgxGridRowPinningPipe;
86394
- exports.ɵfn = IgxColumnActionEnabledPipe;
86395
- exports.ɵfo = IgxFilterActionColumnsPipe;
86396
- exports.ɵfp = IgxSortActionColumnsPipe;
86397
- exports.ɵfq = IgxGridDataMapperPipe;
86398
- exports.ɵfr = IgxStringReplacePipe;
86399
- exports.ɵfs = IgxGridTransactionStatePipe;
86400
- exports.ɵft = IgxColumnFormatterPipe;
86401
- exports.ɵfu = IgxSummaryFormatterPipe;
86402
- exports.ɵfv = IgxGridAddRowPipe;
86403
- exports.ɵfw = IgxHeaderGroupWidthPipe;
86404
- exports.ɵfx = IgxHeaderGroupStylePipe;
86405
- exports.ɵfy = IgxGridColumnModule;
86406
- exports.ɵfz = IgxGridHeadersModule;
86543
+ exports.ɵfa = IgxGridPipesModule;
86544
+ exports.ɵfb = IgxGridCellStyleClassesPipe;
86545
+ exports.ɵfc = IgxGridCellStylesPipe;
86546
+ exports.ɵfd = IgxGridRowClassesPipe;
86547
+ exports.ɵfe = IgxGridRowStylesPipe;
86548
+ exports.ɵff = IgxGridNotGroupedPipe;
86549
+ exports.ɵfg = IgxGridTopLevelColumns;
86550
+ exports.ɵfh = IgxGridFilterConditionPipe;
86551
+ exports.ɵfi = IgxGridTransactionPipe;
86552
+ exports.ɵfj = IgxGridPaginatorOptionsPipe;
86553
+ exports.ɵfk = IgxHasVisibleColumnsPipe;
86554
+ exports.ɵfl = IgxGridRowPinningPipe;
86555
+ exports.ɵfm = IgxColumnActionEnabledPipe;
86556
+ exports.ɵfn = IgxFilterActionColumnsPipe;
86557
+ exports.ɵfo = IgxSortActionColumnsPipe;
86558
+ exports.ɵfp = IgxGridDataMapperPipe;
86559
+ exports.ɵfq = IgxStringReplacePipe;
86560
+ exports.ɵfr = IgxGridTransactionStatePipe;
86561
+ exports.ɵfs = IgxColumnFormatterPipe;
86562
+ exports.ɵft = IgxSummaryFormatterPipe;
86563
+ exports.ɵfu = IgxGridAddRowPipe;
86564
+ exports.ɵfv = IgxHeaderGroupWidthPipe;
86565
+ exports.ɵfw = IgxHeaderGroupStylePipe;
86566
+ exports.ɵfx = IgxGridColumnModule;
86567
+ exports.ɵfy = IgxGridHeadersModule;
86568
+ exports.ɵfz = SortingIndexPipe;
86407
86569
  exports.ɵg = IGX_TREE_COMPONENT;
86408
- exports.ɵga = SortingIndexPipe;
86409
- exports.ɵgb = IgxGridFilteringModule;
86410
- exports.ɵgc = IgxColumnMovingModule;
86411
- exports.ɵgd = IgxColumnMovingDropDirective;
86412
- exports.ɵge = IgxColumnMovingDragDirective;
86413
- exports.ɵgf = IgxGridResizingModule;
86414
- exports.ɵgg = IgxResizeHandleDirective;
86415
- exports.ɵgh = IgxGridExcelStyleFilteringModule;
86416
- exports.ɵgi = IgxGridSelectionModule;
86417
- exports.ɵgj = IgxGridDragSelectDirective;
86418
- exports.ɵgk = IgxGridSummaryModule;
86419
- exports.ɵgl = IgxSummaryDataPipe;
86420
- exports.ɵgm = IgxGridToolbarModule;
86421
- exports.ɵgn = BaseToolbarDirective;
86422
- exports.ɵgo = BaseToolbarColumnActionsDirective;
86423
- exports.ɵgp = IgxGridRowComponent;
86424
- exports.ɵgq = IgxGridSortingPipe;
86425
- exports.ɵgr = IgxGridGroupingPipe;
86426
- exports.ɵgs = IgxGridPagingPipe;
86427
- exports.ɵgt = IgxGridFilteringPipe;
86428
- exports.ɵgu = IgxGridSummaryPipe;
86429
- exports.ɵgv = IgxGridDetailsPipe;
86430
- exports.ɵgw = IgxGridExpandableCellComponent;
86431
- exports.ɵgx = IgxTreeGridRowComponent;
86432
- exports.ɵgy = IgxTreeGridCellComponent;
86433
- exports.ɵgz = IgxTreeGridHierarchizingPipe;
86570
+ exports.ɵga = IgxGridFilteringModule;
86571
+ exports.ɵgb = IgxColumnMovingModule;
86572
+ exports.ɵgc = IgxColumnMovingDropDirective;
86573
+ exports.ɵgd = IgxColumnMovingDragDirective;
86574
+ exports.ɵge = IgxGridResizingModule;
86575
+ exports.ɵgf = IgxResizeHandleDirective;
86576
+ exports.ɵgg = IgxGridExcelStyleFilteringModule;
86577
+ exports.ɵgh = IgxGridSelectionModule;
86578
+ exports.ɵgi = IgxGridDragSelectDirective;
86579
+ exports.ɵgj = IgxGridSummaryModule;
86580
+ exports.ɵgk = IgxSummaryDataPipe;
86581
+ exports.ɵgl = IgxGridToolbarModule;
86582
+ exports.ɵgm = BaseToolbarDirective;
86583
+ exports.ɵgn = BaseToolbarColumnActionsDirective;
86584
+ exports.ɵgo = IgxGridRowComponent;
86585
+ exports.ɵgp = IgxGridSortingPipe;
86586
+ exports.ɵgq = IgxGridGroupingPipe;
86587
+ exports.ɵgr = IgxGridPagingPipe;
86588
+ exports.ɵgs = IgxGridFilteringPipe;
86589
+ exports.ɵgt = IgxGridSummaryPipe;
86590
+ exports.ɵgu = IgxGridDetailsPipe;
86591
+ exports.ɵgv = IgxGridExpandableCellComponent;
86592
+ exports.ɵgw = IgxTreeGridRowComponent;
86593
+ exports.ɵgx = IgxTreeGridCellComponent;
86594
+ exports.ɵgy = IgxTreeGridHierarchizingPipe;
86595
+ exports.ɵgz = IgxTreeGridFlatteningPipe;
86434
86596
  exports.ɵh = IGX_TREE_NODE_COMPONENT;
86435
- exports.ɵha = IgxTreeGridFlatteningPipe;
86436
- exports.ɵhb = IgxTreeGridSortingPipe;
86437
- exports.ɵhc = IgxTreeGridPagingPipe;
86438
- exports.ɵhd = IgxTreeGridTransactionPipe;
86439
- exports.ɵhe = IgxTreeGridNormalizeRecordsPipe;
86440
- exports.ɵhf = IgxTreeGridAddRowPipe;
86441
- exports.ɵhg = IgxTreeGridFilteringPipe;
86442
- exports.ɵhh = IgxTreeGridSummaryPipe;
86443
- exports.ɵhi = IgxHierarchicalRowComponent;
86444
- exports.ɵhj = IgxHierarchicalGridCellComponent;
86445
- exports.ɵhk = IgxSliderThumbComponent;
86446
- exports.ɵhl = IgxThumbLabelComponent;
86447
- exports.ɵhm = IgxTicksComponent;
86448
- exports.ɵhn = IgxTickLabelsPipe;
86449
- exports.ɵho = IgxTabsBase;
86450
- exports.ɵhp = IgxTabHeaderBase;
86451
- exports.ɵhq = IgxTabContentBase;
86452
- exports.ɵhr = IgxSplitBarComponent;
86453
- exports.ɵhs = IgxTreeService;
86454
- exports.ɵht = IgxTreeSelectionService;
86455
- exports.ɵhu = IgxTreeNavigationService;
86597
+ exports.ɵha = IgxTreeGridSortingPipe;
86598
+ exports.ɵhb = IgxTreeGridPagingPipe;
86599
+ exports.ɵhc = IgxTreeGridTransactionPipe;
86600
+ exports.ɵhd = IgxTreeGridNormalizeRecordsPipe;
86601
+ exports.ɵhe = IgxTreeGridAddRowPipe;
86602
+ exports.ɵhf = IgxTreeGridFilteringPipe;
86603
+ exports.ɵhg = IgxTreeGridSummaryPipe;
86604
+ exports.ɵhh = IgxHierarchicalRowComponent;
86605
+ exports.ɵhi = IgxHierarchicalGridCellComponent;
86606
+ exports.ɵhj = IgxSliderThumbComponent;
86607
+ exports.ɵhk = IgxThumbLabelComponent;
86608
+ exports.ɵhl = IgxTicksComponent;
86609
+ exports.ɵhm = IgxTickLabelsPipe;
86610
+ exports.ɵhn = IgxTabsBase;
86611
+ exports.ɵho = IgxTabHeaderBase;
86612
+ exports.ɵhp = IgxTabContentBase;
86613
+ exports.ɵhq = IgxSplitBarComponent;
86614
+ exports.ɵhr = IgxTreeService;
86615
+ exports.ɵhs = IgxTreeSelectionService;
86616
+ exports.ɵht = IgxTreeNavigationService;
86456
86617
  exports.ɵi = PlatformUtil;
86457
86618
  exports.ɵl = IgxInputGroupBase;
86458
86619
  exports.ɵm = IgxSelectionAPIService;
@@ -86465,10 +86626,10 @@
86465
86626
  exports.ɵt = VirtualHelperBaseDirective;
86466
86627
  exports.ɵu = HVirtualHelperComponent;
86467
86628
  exports.ɵv = MaskParsingService;
86468
- exports.ɵw = DeprecateMethod;
86469
- exports.ɵx = DeprecateProperty;
86470
- exports.ɵy = isHierarchyMatch;
86471
- exports.ɵz = getHierarchy;
86629
+ exports.ɵw = isHierarchyMatch;
86630
+ exports.ɵx = getHierarchy;
86631
+ exports.ɵy = IgxGridActionButtonComponent;
86632
+ exports.ɵz = ToggleAnimationPlayer;
86472
86633
 
86473
86634
  Object.defineProperty(exports, '__esModule', { value: true });
86474
86635