igniteui-angular 12.2.4 → 12.2.8

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 (78) hide show
  1. package/bundles/igniteui-angular.umd.js +466 -521
  2. package/bundles/igniteui-angular.umd.js.map +1 -1
  3. package/esm2015/igniteui-angular.js +106 -107
  4. package/esm2015/lib/action-strip/action-strip.component.js +19 -2
  5. package/esm2015/lib/action-strip/grid-actions/grid-action-button.component.js +2 -2
  6. package/esm2015/lib/action-strip/grid-actions/grid-editing-actions.component.js +4 -4
  7. package/esm2015/lib/action-strip/grid-actions/grid-pinning-actions.component.js +5 -5
  8. package/esm2015/lib/banner/banner.component.js +1 -1
  9. package/esm2015/lib/core/i18n/action-strip-resources.js +4 -0
  10. package/esm2015/lib/core/i18n/resources.js +5 -3
  11. package/esm2015/lib/core/utils.js +24 -2
  12. package/esm2015/lib/data-operations/data-clone-strategy.js +7 -0
  13. package/esm2015/lib/data-operations/data-util.js +8 -8
  14. package/esm2015/lib/data-operations/grouping-strategy.js +1 -1
  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/api.service.js +2 -2
  18. package/esm2015/lib/grids/cell.component.js +1 -17
  19. package/esm2015/lib/grids/column-actions/column-actions.component.js +3 -7
  20. package/esm2015/lib/grids/common/crud.service.js +4 -3
  21. package/esm2015/lib/grids/common/grid.interface.js +1 -1
  22. package/esm2015/lib/grids/common/pipes.js +2 -2
  23. package/esm2015/lib/grids/common/row.interface.js +1 -1
  24. package/esm2015/lib/grids/grid/grid.component.js +21 -8
  25. package/esm2015/lib/grids/grid/grid.pipes.js +3 -3
  26. package/esm2015/lib/grids/grid-base.directive.js +82 -118
  27. package/esm2015/lib/grids/grid-public-row.js +18 -16
  28. package/esm2015/lib/grids/headers/grid-header-row.component.js +2 -2
  29. package/esm2015/lib/grids/hierarchical-grid/hierarchical-grid.component.js +3 -7
  30. package/esm2015/lib/grids/row.directive.js +2 -3
  31. package/esm2015/lib/grids/summaries/grid-summary.service.js +2 -2
  32. package/esm2015/lib/grids/tree-grid/tree-grid.component.js +3 -7
  33. package/esm2015/lib/grids/tree-grid/tree-grid.pipes.js +3 -3
  34. package/esm2015/lib/icon/icon.component.js +1 -6
  35. package/esm2015/lib/services/exporter-common/base-export-service.js +2 -2
  36. package/esm2015/lib/services/overlay/overlay.js +2 -1
  37. package/esm2015/lib/services/overlay/utilities.js +1 -1
  38. package/esm2015/lib/services/transaction/base-transaction.js +17 -4
  39. package/esm2015/lib/services/transaction/igx-hierarchical-transaction.js +3 -4
  40. package/esm2015/lib/services/transaction/igx-transaction.js +3 -3
  41. package/esm2015/lib/services/transaction/transaction-factory.service.js +1 -2
  42. package/esm2015/lib/services/transaction/transaction.js +1 -1
  43. package/esm2015/lib/toast/toast.component.js +43 -21
  44. package/esm2015/public_api.js +2 -1
  45. package/fesm2015/igniteui-angular.js +265 -330
  46. package/fesm2015/igniteui-angular.js.map +1 -1
  47. package/igniteui-angular.d.ts +105 -106
  48. package/igniteui-angular.metadata.json +1 -1
  49. package/lib/action-strip/action-strip.component.d.ts +10 -0
  50. package/lib/banner/banner.component.d.ts +1 -2
  51. package/lib/core/i18n/action-strip-resources.d.ts +4 -0
  52. package/lib/core/i18n/resources.d.ts +3 -1
  53. package/lib/core/utils.d.ts +12 -0
  54. package/lib/data-operations/data-clone-strategy.d.ts +6 -0
  55. package/lib/data-operations/data-util.d.ts +5 -3
  56. package/lib/data-operations/grouping-strategy.d.ts +5 -2
  57. package/lib/directives/radio/radio-group.directive.d.ts +4 -4
  58. package/lib/grids/cell.component.d.ts +0 -9
  59. package/lib/grids/column-actions/column-actions.component.d.ts +2 -1
  60. package/lib/grids/common/grid.interface.d.ts +2 -0
  61. package/lib/grids/common/row.interface.d.ts +1 -0
  62. package/lib/grids/grid/grid.component.d.ts +19 -1
  63. package/lib/grids/grid/grid.pipes.d.ts +2 -1
  64. package/lib/grids/grid-base.directive.d.ts +66 -37
  65. package/lib/grids/grid-public-row.d.ts +10 -3
  66. package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +2 -1
  67. package/lib/grids/tree-grid/tree-grid.component.d.ts +2 -1
  68. package/lib/icon/icon.component.d.ts +2 -2
  69. package/lib/services/overlay/utilities.d.ts +2 -1
  70. package/lib/services/transaction/base-transaction.d.ts +7 -0
  71. package/lib/services/transaction/transaction.d.ts +5 -0
  72. package/lib/toast/toast.component.d.ts +10 -4
  73. package/migrations/common/filterSourceDirs.d.ts +2 -2
  74. package/migrations/common/filterSourceDirs.js +2 -2
  75. package/package.json +1 -1
  76. package/public_api.d.ts +2 -0
  77. package/esm2015/lib/core/deprecateDecorators.js +0 -101
  78. 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.
@@ -1327,6 +1336,18 @@
1327
1336
  }
1328
1337
  return result;
1329
1338
  };
1339
+ /**
1340
+ * Creates an object with prototype from provided source and copies
1341
+ * all properties descriptors from provided source
1342
+ *
1343
+ * @param obj Source to copy prototype and descriptors from
1344
+ * @returns New object with cloned prototype and property descriptors
1345
+ */
1346
+ var copyDescriptors = function (obj) {
1347
+ if (obj) {
1348
+ return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));
1349
+ }
1350
+ };
1330
1351
  /**
1331
1352
  * Deep clones all first level keys of Obj2 and merges them to Obj1
1332
1353
  *
@@ -1414,7 +1435,7 @@
1414
1435
  * @returns true if provided variable is Object
1415
1436
  * @hidden
1416
1437
  */
1417
- var isObject = function (value) { return value && value.toString() === '[object Object]'; };
1438
+ var isObject = function (value) { return !!(value && value.toString() === '[object Object]'); };
1418
1439
  /**
1419
1440
  * Checks if provided variable is Date
1420
1441
  *
@@ -2489,6 +2510,15 @@
2489
2510
  TransactionEventOrigin["END"] = "endPending";
2490
2511
  })(exports.TransactionEventOrigin || (exports.TransactionEventOrigin = {}));
2491
2512
 
2513
+ var DefaultDataCloneStrategy = /** @class */ (function () {
2514
+ function DefaultDataCloneStrategy() {
2515
+ }
2516
+ DefaultDataCloneStrategy.prototype.clone = function (data) {
2517
+ return cloneValue(data);
2518
+ };
2519
+ return DefaultDataCloneStrategy;
2520
+ }());
2521
+
2492
2522
  /**
2493
2523
  * @hidden
2494
2524
  */
@@ -2537,11 +2567,11 @@
2537
2567
  };
2538
2568
  return rec;
2539
2569
  };
2540
- DataUtil.group = function (data, state, grid, groupsRecords, fullResult) {
2570
+ DataUtil.group = function (data, state, grouping, grid, groupsRecords, fullResult) {
2571
+ if (grouping === void 0) { grouping = new IgxGrouping(); }
2541
2572
  if (grid === void 0) { grid = null; }
2542
2573
  if (groupsRecords === void 0) { groupsRecords = []; }
2543
2574
  if (fullResult === void 0) { fullResult = { data: [], metadata: [] }; }
2544
- var grouping = new IgxGrouping();
2545
2575
  groupsRecords.splice(0, groupsRecords.length);
2546
2576
  return grouping.groupBy(data, state, grid, groupsRecords, fullResult);
2547
2577
  };
@@ -2603,13 +2633,14 @@
2603
2633
  * @param deleteRows Should delete rows with DELETE transaction type from data
2604
2634
  * @returns Provided data collections updated with all provided transactions
2605
2635
  */
2606
- DataUtil.mergeTransactions = function (data, transactions, primaryKey, deleteRows) {
2636
+ DataUtil.mergeTransactions = function (data, transactions, primaryKey, cloneStrategy, deleteRows) {
2637
+ if (cloneStrategy === void 0) { cloneStrategy = new DefaultDataCloneStrategy(); }
2607
2638
  if (deleteRows === void 0) { deleteRows = false; }
2608
2639
  data.forEach(function (item, index) {
2609
2640
  var rowId = primaryKey ? item[primaryKey] : item;
2610
2641
  var transaction = transactions.find(function (t) { return t.id === rowId; });
2611
2642
  if (transaction && transaction.type === exports.TransactionType.UPDATE) {
2612
- data[index] = transaction.newValue;
2643
+ data[index] = mergeObjects(cloneStrategy.clone(data[index]), transaction.newValue);
2613
2644
  }
2614
2645
  });
2615
2646
  if (deleteRows) {
@@ -2637,8 +2668,9 @@
2637
2668
  * @param deleteRows Should delete rows with DELETE transaction type from data
2638
2669
  * @returns Provided data collections updated with all provided transactions
2639
2670
  */
2640
- DataUtil.mergeHierarchicalTransactions = function (data, transactions, childDataKey, primaryKey, deleteRows) {
2671
+ DataUtil.mergeHierarchicalTransactions = function (data, transactions, childDataKey, primaryKey, cloneStrategy, deleteRows) {
2641
2672
  var e_1, _a;
2673
+ if (cloneStrategy === void 0) { cloneStrategy = new DefaultDataCloneStrategy(); }
2642
2674
  if (deleteRows === void 0) { deleteRows = false; }
2643
2675
  var _loop_1 = function (transaction) {
2644
2676
  if (transaction.path) {
@@ -2655,7 +2687,7 @@
2655
2687
  case exports.TransactionType.UPDATE:
2656
2688
  var updateIndex = collection.findIndex(function (x) { return x[primaryKey] === transaction.id; });
2657
2689
  if (updateIndex !== -1) {
2658
- collection[updateIndex] = mergeObjects(cloneValue(collection[updateIndex]), transaction.newValue);
2690
+ collection[updateIndex] = mergeObjects(cloneStrategy.clone(collection[updateIndex]), transaction.newValue);
2659
2691
  }
2660
2692
  break;
2661
2693
  case exports.TransactionType.DELETE:
@@ -7171,7 +7203,8 @@
7171
7203
  var rowInEditMode = grid.gridAPI.crudService.row;
7172
7204
  row.newData = value !== null && value !== void 0 ? value : rowInEditMode.transactionState;
7173
7205
  if (rowInEditMode && row.id === rowInEditMode.id) {
7174
- row.data = Object.assign(Object.assign({}, row.data), rowInEditMode.transactionState);
7206
+ // do not use spread operator here as it will copy everything over an empty object with no descriptors
7207
+ row.data = Object.assign(copyDescriptors(row.data), row.data, rowInEditMode.transactionState);
7175
7208
  // TODO: Workaround for updating a row in edit mode through the API
7176
7209
  }
7177
7210
  else if (this.grid.transactions.enabled) {
@@ -7444,7 +7477,7 @@
7444
7477
  }
7445
7478
  if (!data) {
7446
7479
  if (grid.transactions.enabled) {
7447
- data = DataUtil.mergeTransactions(cloneArray(grid.data), grid.transactions.getAggregatedChanges(true), grid.primaryKey);
7480
+ data = DataUtil.mergeTransactions(cloneArray(grid.data), grid.transactions.getAggregatedChanges(true), grid.primaryKey, grid.dataCloneStrategy);
7448
7481
  var deletedRows = grid.transactions.getTransactionLog().filter(function (t) { return t.type === exports.TransactionType.DELETE; }).map(function (t) { return t.id; });
7449
7482
  deletedRows.forEach(function (rowID) {
7450
7483
  var tempData = grid.primaryKey ? data.map(function (rec) { return rec[grid.primaryKey]; }) : data;
@@ -8592,7 +8625,7 @@
8592
8625
  */
8593
8626
  get: function () {
8594
8627
  if (this.inEditMode) {
8595
- return mergeWith__default['default'](cloneValue(this._rowData), this.grid.transactions.getAggregatedValue(this.rowID, false), function (objValue, srcValue) {
8628
+ return mergeWith__default['default'](this.grid.dataCloneStrategy.clone(this._rowData), this.grid.transactions.getAggregatedValue(this.rowID, false), function (objValue, srcValue) {
8596
8629
  if (Array.isArray(srcValue)) {
8597
8630
  return objValue = srcValue;
8598
8631
  }
@@ -9139,7 +9172,7 @@
9139
9172
  };
9140
9173
 
9141
9174
  var clear = function (el) { return el === 0 || Boolean(el); };
9142
- var ɵ0$4 = clear;
9175
+ var ɵ0$3 = clear;
9143
9176
  var first = function (arr) { return arr[0]; };
9144
9177
  var ɵ1 = first;
9145
9178
  var last = function (arr) { return arr[arr.length - 1]; };
@@ -13147,7 +13180,7 @@
13147
13180
  }
13148
13181
  if (hasGrouping && !this.options.ignoreGrouping) {
13149
13182
  var groupsRecords = [];
13150
- DataUtil.group(cloneArray(gridData), groupedGridGroupingState, grid, groupsRecords);
13183
+ DataUtil.group(cloneArray(gridData), groupedGridGroupingState, grid.groupStrategy, grid, groupsRecords);
13151
13184
  gridData = groupsRecords;
13152
13185
  }
13153
13186
  if (hasGrouping && !this.options.ignoreGrouping) {
@@ -16283,6 +16316,7 @@
16283
16316
  return null;
16284
16317
  }
16285
16318
  var hook = this._document.createElement('div');
16319
+ hook.style.display = 'none';
16286
16320
  element.parentElement.insertBefore(hook, element);
16287
16321
  return hook;
16288
16322
  };
@@ -16851,7 +16885,23 @@
16851
16885
  this._isPending = false;
16852
16886
  this._pendingTransactions = [];
16853
16887
  this._pendingStates = new Map();
16888
+ this._cloneStrategy = new DefaultDataCloneStrategy();
16854
16889
  }
16890
+ Object.defineProperty(IgxBaseTransactionService.prototype, "cloneStrategy", {
16891
+ /**
16892
+ * @inheritdoc
16893
+ */
16894
+ get: function () {
16895
+ return this._cloneStrategy;
16896
+ },
16897
+ set: function (strategy) {
16898
+ if (strategy) {
16899
+ this._cloneStrategy = strategy;
16900
+ }
16901
+ },
16902
+ enumerable: false,
16903
+ configurable: true
16904
+ });
16855
16905
  Object.defineProperty(IgxBaseTransactionService.prototype, "canRedo", {
16856
16906
  /**
16857
16907
  * @inheritdoc
@@ -16979,7 +17029,7 @@
16979
17029
  }
16980
17030
  }
16981
17031
  else {
16982
- state = { value: cloneValue(transaction.newValue), recordRef: recordRef, type: transaction.type };
17032
+ state = { value: this.cloneStrategy.clone(transaction.newValue), recordRef: recordRef, type: transaction.type };
16983
17033
  states.set(transaction.id, state);
16984
17034
  }
16985
17035
  };
@@ -17001,7 +17051,7 @@
17001
17051
  */
17002
17052
  IgxBaseTransactionService.prototype.mergeValues = function (first, second) {
17003
17053
  if (isObject(first) || isObject(second)) {
17004
- return mergeObjects(cloneValue(first), second);
17054
+ return mergeObjects(this.cloneStrategy.clone(first), second);
17005
17055
  }
17006
17056
  else {
17007
17057
  return second ? second : first;
@@ -17327,7 +17377,7 @@
17327
17377
  }
17328
17378
  }
17329
17379
  else {
17330
- state = { value: cloneValue(transaction.newValue), recordRef: recordRef, type: transaction.type };
17380
+ state = { value: this.cloneStrategy.clone(transaction.newValue), recordRef: recordRef, type: transaction.type };
17331
17381
  states.set(transaction.id, state);
17332
17382
  }
17333
17383
  // should not clean pending state. This will happen automatically on endPending call
@@ -17418,7 +17468,7 @@
17418
17468
  var _this = this;
17419
17469
  var result = [];
17420
17470
  this._states.forEach(function (state, key) {
17421
- var value = mergeChanges ? _this.mergeValues(state.recordRef, state.value) : cloneValue(state.value);
17471
+ var value = mergeChanges ? _this.mergeValues(state.recordRef, state.value) : _this.cloneStrategy.clone(state.value);
17422
17472
  _this.clearArraysFromObject(value);
17423
17473
  result.push({ id: key, path: state.path, newValue: value, type: state.type });
17424
17474
  });
@@ -17430,7 +17480,7 @@
17430
17480
  if (id !== undefined) {
17431
17481
  transactions = transactions.filter(function (t) { return t.id === id; });
17432
17482
  }
17433
- DataUtil.mergeHierarchicalTransactions(data, transactions, childDataKey, primaryKeyOrId, true);
17483
+ DataUtil.mergeHierarchicalTransactions(data, transactions, childDataKey, primaryKeyOrId, this.cloneStrategy, true);
17434
17484
  this.clear(id);
17435
17485
  }
17436
17486
  else {
@@ -17536,7 +17586,6 @@
17536
17586
  switch (type) {
17537
17587
  case ("Base" /* Base */):
17538
17588
  return new IgxHierarchicalTransactionService();
17539
- ;
17540
17589
  default:
17541
17590
  return new IgxBaseTransactionService();
17542
17591
  }
@@ -18299,124 +18348,6 @@
18299
18348
  },] }
18300
18349
  ];
18301
18350
 
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
18351
  var NEXT_ID$t = 0;
18421
18352
  /**
18422
18353
  * The `<igx-drop-down-item>` is a container intended for row items in
@@ -18492,7 +18423,6 @@
18492
18423
  };
18493
18424
 
18494
18425
  var NEXT_ID$s = 0;
18495
- var warningShown = false;
18496
18426
  /**
18497
18427
  * An abstract class defining a drop-down item:
18498
18428
  * With properties / styles for selection, highlight, height
@@ -18566,8 +18496,6 @@
18566
18496
  */
18567
18497
  get: function () {
18568
18498
  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
18499
  return this.itemIndex;
18572
18500
  }
18573
18501
  return this._index;
@@ -21420,9 +21348,6 @@
21420
21348
  getInactive: [{ type: i0.HostBinding, args: ['class.igx-icon--inactive',] }],
21421
21349
  getColor: [{ type: i0.HostBinding, args: ['style.color',] }]
21422
21350
  };
21423
- __decorate([
21424
- DeprecateProperty('`color` is deprecated.')
21425
- ], IgxIconComponent.prototype, "color", void 0);
21426
21351
 
21427
21352
  /**
21428
21353
  * @hidden
@@ -21713,6 +21638,10 @@
21713
21638
  igx_collapse: 'Collapse',
21714
21639
  };
21715
21640
 
21641
+ var ActionStripResourceStringsEN = {
21642
+ igx_action_strip_button_more_title: 'More'
21643
+ };
21644
+
21716
21645
  /**
21717
21646
  * @hidden
21718
21647
  * IF YOU EDIT THIS OBJECT, DO NOT FORGET TO UPDATE
@@ -21736,7 +21665,8 @@
21736
21665
  CarouselResStrings: cloneValue(CarouselResourceStringsEN),
21737
21666
  ListResStrings: cloneValue(ListResourceStringsEN),
21738
21667
  InputResStrings: cloneValue(InputResourceStringsEN),
21739
- TreeResStrings: cloneValue(TreeResourceStringsEN)
21668
+ TreeResStrings: cloneValue(TreeResourceStringsEN),
21669
+ ActionStripResourceStrings: cloneValue(ActionStripResourceStringsEN)
21740
21670
  };
21741
21671
  var updateResourceStrings = function (currentStrings, newStrings) {
21742
21672
  var e_1, _a;
@@ -21781,7 +21711,7 @@
21781
21711
  /**
21782
21712
  * Returns current resource strings for all components
21783
21713
  */
21784
- var getCurrentResourceStrings = function () { return (Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, CurrentResourceStrings.CalendarResStrings), CurrentResourceStrings.CarouselResStrings), CurrentResourceStrings.ChipResStrings), CurrentResourceStrings.DatePickerResourceStrings), CurrentResourceStrings.DateRangePickerResStrings), CurrentResourceStrings.GridResStrings), CurrentResourceStrings.InputResStrings), CurrentResourceStrings.ListResStrings), CurrentResourceStrings.PaginatorResStrings), CurrentResourceStrings.TimePickerResStrings), CurrentResourceStrings.TreeResStrings)); };
21714
+ var getCurrentResourceStrings = function () { return (Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, CurrentResourceStrings.CalendarResStrings), CurrentResourceStrings.CarouselResStrings), CurrentResourceStrings.ChipResStrings), CurrentResourceStrings.DatePickerResourceStrings), CurrentResourceStrings.DateRangePickerResStrings), CurrentResourceStrings.GridResStrings), CurrentResourceStrings.InputResStrings), CurrentResourceStrings.ListResStrings), CurrentResourceStrings.PaginatorResStrings), CurrentResourceStrings.TimePickerResStrings), CurrentResourceStrings.TreeResStrings), CurrentResourceStrings.ActionStripResourceStrings)); };
21785
21715
 
21786
21716
  var IgxInputGroupTheme = mkenum({
21787
21717
  Material: 'material',
@@ -26111,10 +26041,10 @@
26111
26041
  });
26112
26042
  Object.defineProperty(IgxRadioGroupDirective.prototype, "disabled", {
26113
26043
  /**
26114
- * An @Input property that allows you to disable the radio group. By default it's false.
26115
- *
26116
26044
  * @deprecated in version 12.2.0
26117
26045
  *
26046
+ * An input property that allows you to disable the radio group. By default it's false.
26047
+ *
26118
26048
  * @example
26119
26049
  * ```html
26120
26050
  * <igx-radio-group disabled></igx-radio-group>
@@ -26132,10 +26062,10 @@
26132
26062
  });
26133
26063
  Object.defineProperty(IgxRadioGroupDirective.prototype, "labelPosition", {
26134
26064
  /**
26135
- * Sets/gets the position of the `label` in the child radio buttons.
26136
- *
26137
26065
  * @deprecated in version 12.2.0
26138
26066
  *
26067
+ * Sets/gets the position of the `label` in the child radio buttons.
26068
+ *
26139
26069
  * @remarks
26140
26070
  * If not set, `labelPosition` will have value `"after"`.
26141
26071
  *
@@ -26403,12 +26333,6 @@
26403
26333
  vertical: [{ type: i0.HostBinding, args: ['class.igx-radio-group--vertical',] }],
26404
26334
  alignment: [{ type: i0.Input }]
26405
26335
  };
26406
- __decorate([
26407
- DeprecateProperty('`disabled` is deprecated.')
26408
- ], IgxRadioGroupDirective.prototype, "disabled", null);
26409
- __decorate([
26410
- DeprecateProperty('`labelPosition` is deprecated.')
26411
- ], IgxRadioGroupDirective.prototype, "labelPosition", null);
26412
26336
  /**
26413
26337
  * @hidden
26414
26338
  */
@@ -28827,7 +28751,7 @@
28827
28751
  IgxGridActionButtonComponent.decorators = [
28828
28752
  { type: i0.Component, args: [{
28829
28753
  selector: 'igx-grid-action-button',
28830
- template: "<ng-container *ngIf=\"!asMenuItem\">\n <button igxButton=\"icon\" igxRipple (click)=\"handleClick($event)\" (mousedown)=\"preventEvent($event)\">\n <igx-icon *ngIf=\"iconSet\" [family]=\"iconSet\" [name]=\"iconName\">{{iconName}}</igx-icon>\n <igx-icon *ngIf=\"!iconSet\" >{{iconName}}</igx-icon>\n </button>\n</ng-container>\n\n<ng-template #menuItemTemplate>\n <ng-container *ngIf=\"asMenuItem\">\n <div #container [className]='containerClass'>\n <igx-icon *ngIf=\"iconSet\" [family]=\"iconSet\" [name]=\"iconName\">{{iconName}}</igx-icon>\n <igx-icon *ngIf=\"!iconSet\" >{{iconName}}</igx-icon>\n <label igxLabel>{{labelText}}</label>\n </div>\n </ng-container>\n</ng-template>"
28754
+ template: "<ng-container *ngIf=\"!asMenuItem\">\n <button [title]=\"labelText\" igxButton=\"icon\" igxRipple (click)=\"handleClick($event)\" (mousedown)=\"preventEvent($event)\">\n <igx-icon *ngIf=\"iconSet\" [family]=\"iconSet\" [name]=\"iconName\">{{iconName}}</igx-icon>\n <igx-icon *ngIf=\"!iconSet\" >{{iconName}}</igx-icon>\n </button>\n</ng-container>\n\n<ng-template #menuItemTemplate>\n <ng-container *ngIf=\"asMenuItem\">\n <div #container [className]='containerClass'>\n <igx-icon *ngIf=\"iconSet\" [family]=\"iconSet\" [name]=\"iconName\">{{iconName}}</igx-icon>\n <igx-icon *ngIf=\"!iconSet\" >{{iconName}}</igx-icon>\n <label igxLabel>{{labelText}}</label>\n </div>\n </ng-container>\n</ng-template>"
28831
28755
  },] }
28832
28756
  ];
28833
28757
  IgxGridActionButtonComponent.propDecorators = {
@@ -29067,8 +28991,8 @@
29067
28991
  * @internal
29068
28992
  */
29069
28993
  IgxGridEditingActionsComponent.prototype.registerIcons = function () {
29070
- this.iconService.addSvgIconFromText(materialIconsExtended.addRow.name, materialIconsExtended.addRow.value, 'imx-icons');
29071
- this.iconService.addSvgIconFromText(materialIconsExtended.addChild.name, materialIconsExtended.addChild.value, 'imx-icons');
28994
+ this.iconService.addSvgIconFromText(materialIconsExtended.addRow.name, materialIconsExtended.addRow.value, 'imx-icons', true);
28995
+ this.iconService.addSvgIconFromText(materialIconsExtended.addChild.name, materialIconsExtended.addChild.value, 'imx-icons', true);
29072
28996
  };
29073
28997
  return IgxGridEditingActionsComponent;
29074
28998
  }(IgxGridActionsBaseDirective));
@@ -29209,10 +29133,10 @@
29209
29133
  var context = this.strip.context;
29210
29134
  var grid = context.grid;
29211
29135
  if (grid) {
29212
- this.iconService.addSvgIconFromText(materialIconsExtended.pinLeft.name, materialIconsExtended.pinLeft.value, 'imx-icons');
29213
- this.iconService.addSvgIconFromText(materialIconsExtended.unpinLeft.name, materialIconsExtended.unpinLeft.value, 'imx-icons');
29214
- this.iconService.addSvgIconFromText(materialIconsExtended.jumpDown.name, materialIconsExtended.jumpDown.value, 'imx-icons');
29215
- this.iconService.addSvgIconFromText(materialIconsExtended.jumpUp.name, materialIconsExtended.jumpDown.value, 'imx-icons');
29136
+ this.iconService.addSvgIconFromText(materialIconsExtended.pinLeft.name, materialIconsExtended.pinLeft.value, 'imx-icons', true);
29137
+ this.iconService.addSvgIconFromText(materialIconsExtended.unpinLeft.name, materialIconsExtended.unpinLeft.value, 'imx-icons', true);
29138
+ this.iconService.addSvgIconFromText(materialIconsExtended.jumpDown.name, materialIconsExtended.jumpDown.value, 'imx-icons', true);
29139
+ this.iconService.addSvgIconFromText(materialIconsExtended.jumpUp.name, materialIconsExtended.jumpDown.value, 'imx-icons', true);
29216
29140
  }
29217
29141
  };
29218
29142
  return IgxGridPinningActionsComponent;
@@ -29300,6 +29224,25 @@
29300
29224
  enumerable: false,
29301
29225
  configurable: true
29302
29226
  });
29227
+ Object.defineProperty(IgxActionStripComponent.prototype, "resourceStrings", {
29228
+ get: function () {
29229
+ if (!this._resourceStrings) {
29230
+ this._resourceStrings = CurrentResourceStrings.ActionStripResourceStrings;
29231
+ }
29232
+ return this._resourceStrings;
29233
+ },
29234
+ /**
29235
+ * Gets/Sets the resource strings.
29236
+ *
29237
+ * @remarks
29238
+ * By default it uses EN resources.
29239
+ */
29240
+ set: function (value) {
29241
+ this._resourceStrings = Object.assign({}, this._resourceStrings, value);
29242
+ },
29243
+ enumerable: false,
29244
+ configurable: true
29245
+ });
29303
29246
  Object.defineProperty(IgxActionStripComponent.prototype, "display", {
29304
29247
  /**
29305
29248
  * Getter for the 'display' property of the current `IgxActionStrip`
@@ -29444,7 +29387,7 @@
29444
29387
  IgxActionStripComponent.decorators = [
29445
29388
  { type: i0.Component, args: [{
29446
29389
  selector: 'igx-action-strip',
29447
- template: "<div class=\"igx-action-strip__actions\">\n <ng-content #content></ng-content>\n <ng-container *ngIf=\"menuItems.length > 0\">\n <button\n igxButton=\"icon\"\n igxRipple\n [igxToggleAction]=\"dropdown\"\n [overlaySettings]=\"menuOverlaySettings\"\n (click)=\"$event.stopPropagation()\"\n [igxDropDownItemNavigation]=\"dropdown\"\n >\n <igx-icon>more_vert</igx-icon>\n </button>\n </ng-container>\n <igx-drop-down #dropdown [displayDensity]=\"displayDensity\">\n <igx-drop-down-item\n *ngFor=\"let item of menuItems\"\n class=\"igx-action-strip__menu-item\"\n >\n <div class=\"igx-drop-down__item-template\">\n <ng-container\n *ngTemplateOutlet=\"\n item.templateRef;\n context: { $implicit: item }\n \"\n ></ng-container>\n </div>\n </igx-drop-down-item>\n </igx-drop-down>\n</div>\n"
29390
+ template: "<div class=\"igx-action-strip__actions\">\n <ng-content #content></ng-content>\n <ng-container *ngIf=\"menuItems.length > 0\">\n <button\n igxButton=\"icon\"\n igxRipple\n [igxToggleAction]=\"dropdown\"\n [overlaySettings]=\"menuOverlaySettings\"\n (click)=\"$event.stopPropagation()\"\n [title]=\"resourceStrings.igx_action_strip_button_more_title\"\n [igxDropDownItemNavigation]=\"dropdown\"\n >\n <igx-icon>more_vert</igx-icon>\n </button>\n </ng-container>\n <igx-drop-down #dropdown [displayDensity]=\"displayDensity\">\n <igx-drop-down-item\n *ngFor=\"let item of menuItems\"\n class=\"igx-action-strip__menu-item\"\n >\n <div class=\"igx-drop-down__item-template\">\n <ng-container\n *ngTemplateOutlet=\"\n item.templateRef;\n context: { $implicit: item }\n \"\n ></ng-container>\n </div>\n </igx-drop-down-item>\n </igx-drop-down>\n</div>\n"
29448
29391
  },] }
29449
29392
  ];
29450
29393
  IgxActionStripComponent.ctorParameters = function () { return [
@@ -29459,6 +29402,7 @@
29459
29402
  actionButtons: [{ type: i0.ContentChildren, args: [IgxGridActionsBaseDirective,] }],
29460
29403
  hidden: [{ type: i0.Input }],
29461
29404
  hostClass: [{ type: i0.Input, args: ['class',] }],
29405
+ resourceStrings: [{ type: i0.Input }],
29462
29406
  menu: [{ type: i0.ViewChild, args: ['dropdown',] }],
29463
29407
  display: [{ type: i0.HostBinding, args: ['style.display',] }],
29464
29408
  hostClasses: [{ type: i0.HostBinding, args: ['attr.class',] }]
@@ -48905,7 +48849,7 @@
48905
48849
  var summaryIDs = [];
48906
48850
  var data = this.grid.data;
48907
48851
  if (this.grid.transactions.enabled) {
48908
- data = DataUtil.mergeTransactions(cloneArray(this.grid.data), this.grid.transactions.getAggregatedChanges(true), this.grid.primaryKey);
48852
+ data = DataUtil.mergeTransactions(cloneArray(this.grid.data), this.grid.transactions.getAggregatedChanges(true), this.grid.primaryKey, this.grid.dataCloneStrategy);
48909
48853
  }
48910
48854
  var rowData = this.grid.primaryKey ? data.find(function (rec) { return rec[_this.grid.primaryKey] === rowID; }) : rowID;
48911
48855
  var id = '{ ';
@@ -54181,7 +54125,7 @@
54181
54125
  { type: i0.Component, args: [{
54182
54126
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
54183
54127
  selector: 'igx-grid-header-row',
54184
- 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"
54128
+ 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"
54185
54129
  },] }
54186
54130
  ];
54187
54131
  IgxGridHeaderRowComponent.ctorParameters = function () { return [
@@ -54365,9 +54309,10 @@
54365
54309
  */
54366
54310
  _this.gridScroll = new i0.EventEmitter();
54367
54311
  /**
54312
+ * @deprecated in version 12.1.0. Use the corresponding output exposed by the `igx-paginator` component instead
54313
+ *
54368
54314
  * Emitted after the current page is changed.
54369
54315
  *
54370
- * @deprecated in version 12.1.0
54371
54316
  * @example
54372
54317
  * ```html
54373
54318
  * <igx-grid (pageChange)="onPageChange($event)"></igx-grid>
@@ -54380,10 +54325,10 @@
54380
54325
  */
54381
54326
  _this.pageChange = new i0.EventEmitter();
54382
54327
  /**
54328
+ * @deprecated in version 12.1.0. Use the corresponding output exposed by the `igx-paginator` component instead
54329
+ *
54383
54330
  * Emitted when `perPage` property value of the grid is changed.
54384
54331
  *
54385
- * @deprecated in version 12.1.0
54386
- * @example
54387
54332
  * ```html
54388
54333
  * <igx-grid #grid (perPageChange)="onPerPageChange($event)" [autoGenerate]="true"></igx-grid>
54389
54334
  * ```
@@ -54400,6 +54345,8 @@
54400
54345
  */
54401
54346
  _this.class = '';
54402
54347
  /**
54348
+ * @deprecated in version 12.2.0. We suggest using `rowClasses` property instead
54349
+ *
54403
54350
  * Gets/Sets the styling classes applied to all even `IgxGridRowComponent`s in the grid.
54404
54351
  *
54405
54352
  * @example
@@ -54409,6 +54356,8 @@
54409
54356
  */
54410
54357
  _this.evenRowCSS = 'igx-grid__tr--even';
54411
54358
  /**
54359
+ * @deprecated in version 12.2.0. We suggest using `rowClasses` property instead
54360
+ *
54412
54361
  * Gets/Sets the styling classes applied to all odd `IgxGridRowComponent`s in the grid.
54413
54362
  *
54414
54363
  * @example
@@ -54663,9 +54612,10 @@
54663
54612
  */
54664
54613
  _this.filteringDone = new i0.EventEmitter();
54665
54614
  /**
54615
+ * @deprecated in version 12.1.0. Use the corresponding output exposed by the `igx-paginator` component instead
54616
+ *
54666
54617
  * Emitted after paging is performed.
54667
54618
  *
54668
- * @deprecated in version 12.1.x
54669
54619
  * @remarks
54670
54620
  * Returns an object consisting of the previous and next pages.
54671
54621
  * @example
@@ -55148,6 +55098,7 @@
55148
55098
  outlet: _this.rowOutletDirective,
55149
55099
  positionStrategy: _this.rowEditPositioningStrategy
55150
55100
  };
55101
+ _this._dataCloneStrategy = new DefaultDataCloneStrategy();
55151
55102
  _this.transactionChange$ = new rxjs.Subject();
55152
55103
  _this._rendered = false;
55153
55104
  _this.DRAG_SCROLL_DELTA = 10;
@@ -55170,6 +55121,7 @@
55170
55121
  _this.currencyPipe = new i2.CurrencyPipe(_this.locale);
55171
55122
  _this.percentPipe = new i2.PercentPipe(_this.locale);
55172
55123
  _this._transactions = _this.transactionFactory.create("None" /* None */);
55124
+ _this._transactions.cloneStrategy = _this.dataCloneStrategy;
55173
55125
  _this.cdr.detach();
55174
55126
  return _this;
55175
55127
  }
@@ -55180,6 +55132,27 @@
55180
55132
  enumerable: false,
55181
55133
  configurable: true
55182
55134
  });
55135
+ Object.defineProperty(IgxGridBaseDirective.prototype, "dataCloneStrategy", {
55136
+ /**
55137
+ * Gets/Sets the data clone strategy of the grid when in edit mode.
55138
+ *
55139
+ * @example
55140
+ * ```html
55141
+ * <igx-grid #grid [data]="localData" [dataCloneStrategy]="customCloneStrategy"></igx-grid>
55142
+ * ```
55143
+ */
55144
+ get: function () {
55145
+ return this._dataCloneStrategy;
55146
+ },
55147
+ set: function (strategy) {
55148
+ if (strategy) {
55149
+ this._dataCloneStrategy = strategy;
55150
+ this._transactions.cloneStrategy = strategy;
55151
+ }
55152
+ },
55153
+ enumerable: false,
55154
+ configurable: true
55155
+ });
55183
55156
  Object.defineProperty(IgxGridBaseDirective.prototype, "headerContainer", {
55184
55157
  get: function () {
55185
55158
  return this.theadRow.headerContainer;
@@ -55369,9 +55342,10 @@
55369
55342
  });
55370
55343
  Object.defineProperty(IgxGridBaseDirective.prototype, "paging", {
55371
55344
  /**
55345
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
55346
+ *
55372
55347
  * Gets/Sets whether the paging feature is enabled.
55373
55348
  *
55374
- * @deprecated in version 12.1.x
55375
55349
  * @remarks
55376
55350
  * The default state is disabled (false).
55377
55351
  * @example
@@ -55393,9 +55367,10 @@
55393
55367
  });
55394
55368
  Object.defineProperty(IgxGridBaseDirective.prototype, "page", {
55395
55369
  /**
55370
+ * @deprecated in version 12.1.0. Use `page` property form `paginator` component instead
55371
+ *
55396
55372
  * Gets/Sets the current page index.
55397
55373
  *
55398
- * @deprecated in version 12.1.x
55399
55374
  * @example
55400
55375
  * ```html
55401
55376
  * <igx-grid #grid [data]="Data" [autoGenerate]="true">
@@ -55419,9 +55394,10 @@
55419
55394
  });
55420
55395
  Object.defineProperty(IgxGridBaseDirective.prototype, "perPage", {
55421
55396
  /**
55397
+ * @deprecated in version 12.1.0. Use `perPage` property from `paginator` component instead
55398
+ *
55422
55399
  * Gets/Sets the number of visible items per page.
55423
55400
  *
55424
- * @deprecated in version 12.1.x
55425
55401
  * @remarks
55426
55402
  * The default is 15.
55427
55403
  * @example
@@ -55446,9 +55422,10 @@
55446
55422
  });
55447
55423
  Object.defineProperty(IgxGridBaseDirective.prototype, "columnHiding", {
55448
55424
  /**
55425
+ * @deprecated in version 10.1.0
55426
+ *
55449
55427
  * Gets/Sets whether the column hiding UI is enabled.
55450
55428
  *
55451
- * @deprecated
55452
55429
  * @remarks
55453
55430
  * 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.
55454
55431
  * @example
@@ -55699,9 +55676,9 @@
55699
55676
  });
55700
55677
  Object.defineProperty(IgxGridBaseDirective.prototype, "columnHidingTitle", {
55701
55678
  /**
55702
- * Gets/Sets the title to be displayed in the built-in column hiding UI.
55679
+ * @deprecated in version 10.1.0
55703
55680
  *
55704
- * @deprecated
55681
+ * Gets/Sets the title to be displayed in the built-in column hiding UI.
55705
55682
  *
55706
55683
  * @example
55707
55684
  * ```html
@@ -55751,9 +55728,9 @@
55751
55728
  });
55752
55729
  Object.defineProperty(IgxGridBaseDirective.prototype, "columnPinning", {
55753
55730
  /**
55754
- * Gets/Sets if the built-in column pinning UI should be shown in the toolbar.
55731
+ * @deprecated in version 10.1.0
55755
55732
  *
55756
- * @deprecated
55733
+ * Gets/Sets if the built-in column pinning UI should be shown in the toolbar.
55757
55734
  *
55758
55735
  * @example
55759
55736
  * ```html
@@ -55772,9 +55749,9 @@
55772
55749
  });
55773
55750
  Object.defineProperty(IgxGridBaseDirective.prototype, "columnPinningTitle", {
55774
55751
  /**
55775
- * Gets/Sets the title to be displayed in the UI of the column pinning.
55752
+ * @deprecated in version 10.1.0
55776
55753
  *
55777
- * @deprecated
55754
+ * Gets/Sets the title to be displayed in the UI of the column pinning.
55778
55755
  *
55779
55756
  * @example
55780
55757
  * ```html
@@ -56377,9 +56354,9 @@
56377
56354
  });
56378
56355
  Object.defineProperty(IgxGridBaseDirective.prototype, "hiddenColumnsText", {
56379
56356
  /**
56380
- * Gets/Sets the text to be displayed inside the toggle button.
56357
+ * @deprecated in version 10.1.0
56381
56358
  *
56382
- * @deprecated
56359
+ * Gets/Sets the text to be displayed inside the toggle button.
56383
56360
  *
56384
56361
  * @remarks
56385
56362
  * Used for the built-in column hiding UI of the`IgxColumnComponent`.
@@ -56388,7 +56365,6 @@
56388
56365
  * <igx-grid [columnHiding]="true" [showToolbar]="true" [hiddenColumnsText]="'Hidden Columns'"></igx-grid>
56389
56366
  * ```
56390
56367
  */
56391
- // @DeprecateProperty('`hiddenColumnsText` is deprecated')
56392
56368
  get: function () {
56393
56369
  return this._hiddenColumnsText;
56394
56370
  },
@@ -56401,9 +56377,9 @@
56401
56377
  });
56402
56378
  Object.defineProperty(IgxGridBaseDirective.prototype, "pinnedColumnsText", {
56403
56379
  /**
56404
- * Gets/Sets the text to be displayed inside the toggle button.
56380
+ * @deprecated in version 10.1.0
56405
56381
  *
56406
- * @deprecated
56382
+ * Gets/Sets the text to be displayed inside the toggle button.
56407
56383
  *
56408
56384
  * @remarks
56409
56385
  * Used for the built-in column pinning UI of the`IgxColumnComponent`.
@@ -56497,9 +56473,9 @@
56497
56473
  });
56498
56474
  Object.defineProperty(IgxGridBaseDirective.prototype, "showToolbar", {
56499
56475
  /**
56500
- * Gets/Sets whether the toolbar is shown.
56476
+ * @deprecated in version 11.0.0
56501
56477
  *
56502
- * @deprecated
56478
+ * Gets/Sets whether the toolbar is shown.
56503
56479
  *
56504
56480
  * @example
56505
56481
  * ```html
@@ -56517,9 +56493,9 @@
56517
56493
  });
56518
56494
  Object.defineProperty(IgxGridBaseDirective.prototype, "toolbarTitle", {
56519
56495
  /**
56520
- * Gets/Sets the toolbar's title.
56496
+ * @deprecated in version 11.0.0
56521
56497
  *
56522
- * @deprecated
56498
+ * Gets/Sets the toolbar's title.
56523
56499
  *
56524
56500
  * @example
56525
56501
  * ```html
@@ -56538,9 +56514,9 @@
56538
56514
  });
56539
56515
  Object.defineProperty(IgxGridBaseDirective.prototype, "exportExcel", {
56540
56516
  /**
56541
- * Gets/Sets whether exporting to MS Excel is enabled or disabled.
56517
+ * @deprecated `exportExcel` is deprecated
56542
56518
  *
56543
- * @deprecated
56519
+ * Gets/Sets whether exporting to MS Excel is enabled or disabled.
56544
56520
  *
56545
56521
  * @example
56546
56522
  * ```html
@@ -56559,9 +56535,9 @@
56559
56535
  });
56560
56536
  Object.defineProperty(IgxGridBaseDirective.prototype, "exportCsv", {
56561
56537
  /**
56562
- * Gets/Sets whether the option for exporting to CSV is enabled or disabled.
56538
+ * @deprecated `exportCsv` is deprecated
56563
56539
  *
56564
- * @deprecated
56540
+ * Gets/Sets whether the option for exporting to CSV is enabled or disabled.
56565
56541
  *
56566
56542
  * ```html
56567
56543
  * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" [exportCsv]="true"></igx-grid>
@@ -56579,9 +56555,9 @@
56579
56555
  });
56580
56556
  Object.defineProperty(IgxGridBaseDirective.prototype, "exportText", {
56581
56557
  /**
56582
- * Gets/Sets the textual content for the main export button.
56558
+ * @deprecated `exportText` is deprecated
56583
56559
  *
56584
- * @deprecated
56560
+ * Gets/Sets the textual content for the main export button.
56585
56561
  *
56586
56562
  * @example
56587
56563
  * ```html
@@ -56600,9 +56576,9 @@
56600
56576
  });
56601
56577
  Object.defineProperty(IgxGridBaseDirective.prototype, "exportExcelText", {
56602
56578
  /**
56603
- * Gets/Sets the textual content for the MS Excel export button.
56579
+ * @deprecated `exportExcelText` is deprecated
56604
56580
  *
56605
- * @deprecated
56581
+ * Gets/Sets the textual content for the MS Excel export button.
56606
56582
  *
56607
56583
  * ```html
56608
56584
  * <igx-grid [exportExcelText]="'My Excel Exporter" [showToolbar]="true" [exportText]="'My Exporter'" [exportCsv]="true"></igx-grid>
@@ -56620,9 +56596,9 @@
56620
56596
  });
56621
56597
  Object.defineProperty(IgxGridBaseDirective.prototype, "exportCsvText", {
56622
56598
  /**
56623
- * Gets/Sets the textual content for the CSV export button.
56599
+ * @deprecated `exportCsvText` is deprecated
56624
56600
  *
56625
- * @deprecated
56601
+ * Gets/Sets the textual content for the CSV export button.
56626
56602
  *
56627
56603
  * @example
56628
56604
  * ```html
@@ -57888,9 +57864,10 @@
57888
57864
  });
57889
57865
  Object.defineProperty(IgxGridBaseDirective.prototype, "totalPages", {
57890
57866
  /**
57867
+ * @deprecated in version 12.1.0. Use the corresponding property exposed by the `igx-paginator`
57868
+ *
57891
57869
  * Gets the total number of pages.
57892
57870
  *
57893
- * @deprecated in version 12.1.0
57894
57871
  * @example
57895
57872
  * ```typescript
57896
57873
  * const totalPages = this.grid.totalPages;
@@ -57905,9 +57882,10 @@
57905
57882
  });
57906
57883
  Object.defineProperty(IgxGridBaseDirective.prototype, "isFirstPage", {
57907
57884
  /**
57885
+ * @deprecated in version 12.1.0. Use the corresponding property exposed by the `igx-paginator`
57886
+ *
57908
57887
  * Gets if the current page is the first page.
57909
57888
  *
57910
- * @deprecated in version 12.1.0
57911
57889
  * @example
57912
57890
  * ```typescript
57913
57891
  * const firstPage = this.grid.isFirstPage;
@@ -57920,9 +57898,10 @@
57920
57898
  configurable: true
57921
57899
  });
57922
57900
  /**
57901
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
57902
+ *
57923
57903
  * Goes to the next page, if the grid is not already at the last page.
57924
57904
  *
57925
- * @deprecated in version 12.1.0
57926
57905
  * @example
57927
57906
  * ```typescript
57928
57907
  * this.grid1.nextPage();
@@ -57934,9 +57913,10 @@
57934
57913
  (_a = this.paginator) === null || _a === void 0 ? void 0 : _a.nextPage();
57935
57914
  };
57936
57915
  /**
57916
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
57917
+ *
57937
57918
  * Goes to the previous page, if the grid is not already at the first page.
57938
57919
  *
57939
- * @deprecated in version 12.1.0
57940
57920
  * @example
57941
57921
  * ```typescript
57942
57922
  * this.grid1.previousPage();
@@ -57977,9 +57957,10 @@
57977
57957
  });
57978
57958
  Object.defineProperty(IgxGridBaseDirective.prototype, "isLastPage", {
57979
57959
  /**
57960
+ * @deprecated in version 12.1.0. Use the corresponding property exposed by the `igx-paginator`
57961
+ *
57980
57962
  * Returns if the current page is the last page.
57981
57963
  *
57982
- * @deprecated in version 12.1.0
57983
57964
  * @example
57984
57965
  * ```typescript
57985
57966
  * const lastPage = this.grid.isLastPage;
@@ -58096,6 +58077,8 @@
58096
58077
  this._columnsReordered(column);
58097
58078
  };
58098
58079
  /**
58080
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
58081
+ *
58099
58082
  * Goes to the desired page index.
58100
58083
  *
58101
58084
  * @example
@@ -59425,6 +59408,9 @@
59425
59408
  if (!this.clipboardOptions.copyHeaders) {
59426
59409
  result = result.substring(result.indexOf('\n') + 1);
59427
59410
  }
59411
+ if (Object.values(data[0]).length === 1) {
59412
+ result = result.slice(0, -2);
59413
+ }
59428
59414
  event.preventDefault();
59429
59415
  /* Necessary for the hiearachical case but will probably have to
59430
59416
  change how getSelectedData is propagated in the hiearachical grid
@@ -59843,6 +59829,9 @@
59843
59829
  else {
59844
59830
  this._transactions = this.transactionFactory.create("None" /* None */);
59845
59831
  }
59832
+ if (this.dataCloneStrategy) {
59833
+ this._transactions.cloneStrategy = this.dataCloneStrategy;
59834
+ }
59846
59835
  };
59847
59836
  IgxGridBaseDirective.prototype.subscribeToTransactions = function () {
59848
59837
  this.transactionChange$.next();
@@ -61229,6 +61218,7 @@
61229
61218
  primaryKey: [{ type: i0.Input }],
61230
61219
  uniqueColumnValuesStrategy: [{ type: i0.Input }],
61231
61220
  excelStyleFilteringComponents: [{ type: i0.ContentChildren, args: [IgxGridExcelStyleFilteringComponent, { read: IgxGridExcelStyleFilteringComponent, descendants: false },] }],
61221
+ dataCloneStrategy: [{ type: i0.Input }],
61232
61222
  cellClick: [{ type: i0.Output }],
61233
61223
  selected: [{ type: i0.Output }],
61234
61224
  rowSelected: [{ type: i0.Output }],
@@ -61383,24 +61373,9 @@
61383
61373
  totalRecords: [{ type: i0.Input }],
61384
61374
  selectRowOnClick: [{ type: i0.Input }]
61385
61375
  };
61386
- __decorate([
61387
- DeprecateProperty('`pageChange` is deprecated. Use the corresponding output exposed by the `igx-paginator` component instead.')
61388
- ], IgxGridBaseDirective.prototype, "pageChange", void 0);
61389
- __decorate([
61390
- DeprecateProperty('`perPageChange` is deprecated. Use the corresponding output exposed by the `igx-paginator` component instead.')
61391
- ], IgxGridBaseDirective.prototype, "perPageChange", void 0);
61392
- __decorate([
61393
- DeprecateProperty('`evenRowCSS` is deprecated. We suggest using `rowClasses` property instead.')
61394
- ], IgxGridBaseDirective.prototype, "evenRowCSS", void 0);
61395
- __decorate([
61396
- DeprecateProperty('`oddRowCSS` is deprecated. We suggest using `rowClasses` property instead.')
61397
- ], IgxGridBaseDirective.prototype, "oddRowCSS", void 0);
61398
61376
  __decorate([
61399
61377
  WatchChanges()
61400
61378
  ], IgxGridBaseDirective.prototype, "primaryKey", void 0);
61401
- __decorate([
61402
- DeprecateProperty('`pagingDone` is deprecated. Use the corresponding output exposed by the `igx-paginator` component instead.')
61403
- ], IgxGridBaseDirective.prototype, "pagingDone", void 0);
61404
61379
  __decorate([
61405
61380
  WatchChanges()
61406
61381
  ], IgxGridBaseDirective.prototype, "filteringLogic", null);
@@ -61410,18 +61385,6 @@
61410
61385
  __decorate([
61411
61386
  WatchChanges()
61412
61387
  ], IgxGridBaseDirective.prototype, "advancedFilteringExpressionsTree", null);
61413
- __decorate([
61414
- DeprecateProperty('`paging` is deprecated')
61415
- ], IgxGridBaseDirective.prototype, "paging", null);
61416
- __decorate([
61417
- DeprecateProperty('`page` is deprecated. Use `page` property form `paginator` component instead.')
61418
- ], IgxGridBaseDirective.prototype, "page", null);
61419
- __decorate([
61420
- DeprecateProperty('`perPage` is deprecated. Use `perPage` property from `paginator` component instead.')
61421
- ], IgxGridBaseDirective.prototype, "perPage", null);
61422
- __decorate([
61423
- DeprecateProperty('`columnHiding` is deprecated.')
61424
- ], IgxGridBaseDirective.prototype, "columnHiding", null);
61425
61388
  __decorate([
61426
61389
  WatchChanges()
61427
61390
  ], IgxGridBaseDirective.prototype, "hideRowSelectors", null);
@@ -61443,42 +61406,9 @@
61443
61406
  __decorate([
61444
61407
  WatchChanges()
61445
61408
  ], IgxGridBaseDirective.prototype, "isLoading", null);
61446
- __decorate([
61447
- DeprecateProperty('`columnHidingTitle` is deprecated')
61448
- ], IgxGridBaseDirective.prototype, "columnHidingTitle", null);
61449
- __decorate([
61450
- DeprecateProperty('`columnPinning` is deprecated')
61451
- ], IgxGridBaseDirective.prototype, "columnPinning", null);
61452
- __decorate([
61453
- DeprecateProperty('`columnPinningTitle` is deprecated')
61454
- ], IgxGridBaseDirective.prototype, "columnPinningTitle", null);
61455
61409
  __decorate([
61456
61410
  WatchChanges()
61457
61411
  ], IgxGridBaseDirective.prototype, "sortingExpressions", null);
61458
- __decorate([
61459
- DeprecateProperty('`pinnedColumnsText` is deprecated')
61460
- ], IgxGridBaseDirective.prototype, "pinnedColumnsText", null);
61461
- __decorate([
61462
- DeprecateProperty('`showToolbar` is deprecated')
61463
- ], IgxGridBaseDirective.prototype, "showToolbar", null);
61464
- __decorate([
61465
- DeprecateProperty('`toolbarTitle` is deprecated')
61466
- ], IgxGridBaseDirective.prototype, "toolbarTitle", null);
61467
- __decorate([
61468
- DeprecateProperty('`exportExcel` is deprecated')
61469
- ], IgxGridBaseDirective.prototype, "exportExcel", null);
61470
- __decorate([
61471
- DeprecateProperty('`exportCsv` is deprecated')
61472
- ], IgxGridBaseDirective.prototype, "exportCsv", null);
61473
- __decorate([
61474
- DeprecateProperty('`exportText` is deprecated')
61475
- ], IgxGridBaseDirective.prototype, "exportText", null);
61476
- __decorate([
61477
- DeprecateProperty('`exportExcelText` is deprecated')
61478
- ], IgxGridBaseDirective.prototype, "exportExcelText", null);
61479
- __decorate([
61480
- DeprecateProperty('`exportCsvText` is deprecated')
61481
- ], IgxGridBaseDirective.prototype, "exportCsvText", null);
61482
61412
  __decorate([
61483
61413
  WatchChanges()
61484
61414
  ], IgxGridBaseDirective.prototype, "cellSelection", null);
@@ -61488,24 +61418,6 @@
61488
61418
  __decorate([
61489
61419
  WatchChanges()
61490
61420
  ], IgxGridBaseDirective.prototype, "columnSelection", null);
61491
- __decorate([
61492
- DeprecateProperty('`totalPages` is deprecated. Use the corresponding property exposed by the `igx-paginator`.')
61493
- ], IgxGridBaseDirective.prototype, "totalPages", null);
61494
- __decorate([
61495
- DeprecateProperty('`isFirstPage` is deprecated. Use the corresponding property exposed by the `igx-paginator`.')
61496
- ], IgxGridBaseDirective.prototype, "isFirstPage", null);
61497
- __decorate([
61498
- DeprecateMethod('Use the corresponding method exposed by the `igx-paginator`.')
61499
- ], IgxGridBaseDirective.prototype, "nextPage", null);
61500
- __decorate([
61501
- DeprecateMethod('Use the corresponding method exposed by the `igx-paginator`.')
61502
- ], IgxGridBaseDirective.prototype, "previousPage", null);
61503
- __decorate([
61504
- DeprecateProperty('`isLastPage` is deprecated. Use the corresponding property exposed by the `igx-paginator`.')
61505
- ], IgxGridBaseDirective.prototype, "isLastPage", null);
61506
- __decorate([
61507
- DeprecateMethod('Use the corresponding method exposed by the `igx-paginator`.')
61508
- ], IgxGridBaseDirective.prototype, "paginate", null);
61509
61421
  __decorate([
61510
61422
  WatchChanges()
61511
61423
  ], IgxGridBaseDirective.prototype, "selectRowOnClick", null);
@@ -61544,6 +61456,22 @@
61544
61456
  enumerable: false,
61545
61457
  configurable: true
61546
61458
  });
61459
+ Object.defineProperty(BaseRow.prototype, "addRowUI", {
61460
+ /**
61461
+ * Gets if this represents add row UI
61462
+ *
61463
+ * ```typescript
61464
+ * let isAddRow = row.addRowUI;
61465
+ * ```
61466
+ */
61467
+ get: function () {
61468
+ return !!this.grid.crudService.row &&
61469
+ this.grid.crudService.row.getClassName() === IgxAddRow.name &&
61470
+ this.grid.crudService.row.id === this.key;
61471
+ },
61472
+ enumerable: false,
61473
+ configurable: true
61474
+ });
61547
61475
  Object.defineProperty(BaseRow.prototype, "data", {
61548
61476
  /**
61549
61477
  * The data record that populates the row.
@@ -61555,7 +61483,7 @@
61555
61483
  get: function () {
61556
61484
  var _a, _b;
61557
61485
  if (this.inEditMode) {
61558
- return mergeWith__default['default'](cloneValue((_a = this._data) !== null && _a !== void 0 ? _a : this.grid.dataView[this.index]), this.grid.transactions.getAggregatedValue(this.key, false), function (objValue, srcValue) {
61486
+ return mergeWith__default['default'](this.grid.dataCloneStrategy.clone((_a = this._data) !== null && _a !== void 0 ? _a : this.grid.dataView[this.index]), this.grid.transactions.getAggregatedValue(this.key, false), function (objValue, srcValue) {
61559
61487
  if (Array.isArray(srcValue)) {
61560
61488
  return objValue = srcValue;
61561
61489
  }
@@ -61568,7 +61496,7 @@
61568
61496
  });
61569
61497
  Object.defineProperty(BaseRow.prototype, "rowData", {
61570
61498
  /**
61571
- * @deprecated Use 'data' instead.
61499
+ * @deprecated Use 'data' instead
61572
61500
  *
61573
61501
  * The data record that populates the row
61574
61502
  */
@@ -61580,8 +61508,7 @@
61580
61508
  });
61581
61509
  Object.defineProperty(BaseRow.prototype, "rowID", {
61582
61510
  /**
61583
- * @deprecated Use 'key' instead.
61584
- *
61511
+ * @deprecated Use 'key' instead
61585
61512
  */
61586
61513
  get: function () {
61587
61514
  return this.key;
@@ -61787,12 +61714,6 @@
61787
61714
  };
61788
61715
  return BaseRow;
61789
61716
  }());
61790
- __decorate([
61791
- DeprecateProperty("'rowData' property is deprecated. Use 'data' instead.")
61792
- ], BaseRow.prototype, "rowData", null);
61793
- __decorate([
61794
- DeprecateProperty("'rowID' property is deprecated. Use 'key' instead.")
61795
- ], BaseRow.prototype, "rowID", null);
61796
61717
  var IgxGridRow = /** @class */ (function (_super) {
61797
61718
  __extends(IgxGridRow, _super);
61798
61719
  /**
@@ -61922,7 +61843,7 @@
61922
61843
  get: function () {
61923
61844
  var _a;
61924
61845
  if (this.inEditMode) {
61925
- return mergeWith__default['default'](cloneValue((_a = this._data) !== null && _a !== void 0 ? _a : this.grid.dataView[this.index]), this.grid.transactions.getAggregatedValue(this.key, false), function (objValue, srcValue) {
61846
+ return mergeWith__default['default'](this.grid.dataCloneStrategy.clone((_a = this._data) !== null && _a !== void 0 ? _a : this.grid.dataView[this.index]), this.grid.transactions.getAggregatedValue(this.key, false), function (objValue, srcValue) {
61926
61847
  if (Array.isArray(srcValue)) {
61927
61848
  return objValue = srcValue;
61928
61849
  }
@@ -63035,17 +62956,6 @@
63035
62956
  enumerable: false,
63036
62957
  configurable: true
63037
62958
  });
63038
- /**
63039
- * @deprecated
63040
- * Gets whether the cell is selected.
63041
- * ```typescript
63042
- * let isCellSelected = thid.cell.isCellSelected();
63043
- * ```
63044
- * @memberof IgxGridCellComponent
63045
- */
63046
- IgxGridCellComponent.prototype.isCellSelected = function () {
63047
- return this.selectionService.selected(this.selectionNode);
63048
- };
63049
62959
  /**
63050
62960
  * @hidden
63051
62961
  * @internal
@@ -63357,9 +63267,6 @@
63357
63267
  onClick: [{ type: i0.HostListener, args: ['click', ['$event'],] }],
63358
63268
  onContextMenu: [{ type: i0.HostListener, args: ['contextmenu', ['$event'],] }]
63359
63269
  };
63360
- __decorate([
63361
- DeprecateMethod("'isCellSelected' is deprecated. Use 'selected' property instead.")
63362
- ], IgxGridCellComponent.prototype, "isCellSelected", null);
63363
63270
 
63364
63271
  var IgxGridFooterComponent = /** @class */ (function () {
63365
63272
  function IgxGridFooterComponent() {
@@ -63762,9 +63669,10 @@
63762
63669
  }
63763
63670
  Object.defineProperty(IgxColumnActionsComponent.prototype, "columns", {
63764
63671
  /**
63672
+ * @deprecated Use grid input instead.
63673
+ *
63765
63674
  * Gets the grid columns to provide an action for.
63766
63675
  *
63767
- * @deprecated
63768
63676
  * @example
63769
63677
  * ```typescript
63770
63678
  * let gridColumns = this.columnActions.columns;
@@ -64044,9 +63952,6 @@
64044
63952
  checkAllText: [{ type: i0.Input }],
64045
63953
  id: [{ type: i0.HostBinding, args: ['attr.id',] }, { type: i0.Input }]
64046
63954
  };
64047
- __decorate([
64048
- DeprecateProperty("Deprecated. Use 'grid' input instead.")
64049
- ], IgxColumnActionsComponent.prototype, "columns", null);
64050
63955
 
64051
63956
  /**
64052
63957
  * @hidden
@@ -64292,7 +64197,7 @@
64292
64197
  IgxGridTransactionPipe.prototype.transform = function (collection, _id, _pipeTrigger) {
64293
64198
  var grid = this.gridAPI.grid;
64294
64199
  if (grid.transactions.enabled) {
64295
- var result = DataUtil.mergeTransactions(cloneArray(collection), grid.transactions.getAggregatedChanges(true), grid.primaryKey);
64200
+ var result = DataUtil.mergeTransactions(cloneArray(collection), grid.transactions.getAggregatedChanges(true), grid.primaryKey, grid.dataCloneStrategy);
64296
64201
  return result;
64297
64202
  }
64298
64203
  return collection;
@@ -68874,6 +68779,26 @@
68874
68779
  enumerable: false,
68875
68780
  configurable: true
68876
68781
  });
68782
+ Object.defineProperty(IgxGridComponent.prototype, "groupStrategy", {
68783
+ /**
68784
+ * Gets/Sets the grouping strategy of the grid.
68785
+ *
68786
+ * @remarks The default IgxGrouping extends from IgxSorting and a custom one can be used as a `sortStrategy` as well.
68787
+ *
68788
+ * @example
68789
+ * ```html
68790
+ * <igx-grid #grid [data]="localData" [groupStrategy]="groupStrategy"></igx-grid>
68791
+ * ```
68792
+ */
68793
+ get: function () {
68794
+ return this._groupStrategy;
68795
+ },
68796
+ set: function (value) {
68797
+ this._groupStrategy = value;
68798
+ },
68799
+ enumerable: false,
68800
+ configurable: true
68801
+ });
68877
68802
  Object.defineProperty(IgxGridComponent.prototype, "dropAreaMessage", {
68878
68803
  get: function () {
68879
68804
  return this._dropAreaMessage || this.resourceStrings.igx_grid_groupByArea_message;
@@ -68898,7 +68823,8 @@
68898
68823
  configurable: true
68899
68824
  });
68900
68825
  /**
68901
- * @deprecated
68826
+ * @deprecated in version 12.1.0. Use `getCellByColumn` or `getCellByKey` instead
68827
+ *
68902
68828
  * Returns a `CellType` object that matches the conditions.
68903
68829
  *
68904
68830
  * @example
@@ -69695,7 +69621,7 @@
69695
69621
  IgxForOfScrollSyncService
69696
69622
  ],
69697
69623
  selector: 'igx-grid',
69698
- template: "<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar\"></ng-content>\n\n<!-- Group-by area -->\n<ng-container *ngIf=\"showGroupArea && (groupingExpressions.length > 0 || hasGroupableColumns)\">\n <igx-grid-group-by-area #groupArea [style.flex-basis.px]='outerWidth'\n [grid]=\"this\"\n [expressions]=\"groupingExpressions\"\n [sortingExpressions]=\"sortingExpressions\"\n [density]=\"displayDensity\"\n [dropAreaTemplate]=\"dropAreaTemplate\"\n [dropAreaMessage]=\"dropAreaMessage\"\n >\n </igx-grid-group-by-area>\n</ng-container>\n\n<!-- Grid table head row area -->\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [density]=\"displayDensity\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)='preventContainerScroll($event)'\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth || null' #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf='data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData'>\n <div #pinContainer *ngIf='pinnedData.length > 0'\n [ngClass]=\"{\n 'igx-grid__tr--pinned-bottom': !isRowPinningToTop,\n 'igx-grid__tr--pinned-top': isRowPinningToTop\n }\"\n class='igx-grid__tr--pinned' [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData; let rowIndex = index\">\n <ng-container *ngTemplateOutlet=\"pinned_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger\n | gridGroupBy:groupingExpressions:groupingExpansionState:groupsExpanded:id:groupsRecords:pipeTrigger\n | gridPaging:paginator?.page:paginator?.perPage:id:pipeTrigger\n | gridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:id:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger\n | gridDetails:hasDetails:expansionStates:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight'\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxForTrackBy]='trackChanges'\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\">\n <ng-template\n [igxTemplateOutlet]='getRowTemplate(rowData)'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex)'\n (cachedViewLoaded)='cachedViewLoaded($event)'\n (viewCreated)='viewCreatedHandler($event)'\n (viewMoved)='viewMovedHandler($event)'>\n </ng-template>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData let-disabledRow=\"disabled\">\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\" [disabled]=\"disabledRow\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-grid-row>\n </ng-template>\n <ng-template #pinned_record_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\"#row #pinnedRow>\n </igx-grid-row>\n </ng-template>\n <ng-template #group_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-groupby-row [gridID]=\"id\" [index]=\"rowIndex\" [groupRow]=\"rowData\" [hideGroupRowSelectors]=\"hideRowSelectors\" [rowDraggable]=\"rowDraggable\" #row>\n </igx-grid-groupby-row>\n </ng-template>\n <ng-template #summary_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-summary-row role=\"row\" [gridID]=\"id\" [summaries]=\"rowData.summaries\" [index]=\"rowIndex\"\n class=\"igx-grid__summaries--body\" #summaryRow>\n </igx-grid-summary-row>\n </ng-template>\n <ng-template #detail_template_container let-rowIndex=\"index\" let-rowData>\n <div detail='true' style=\"overflow: auto; width: 100%;\" id=\"{{id}}_{{rowIndex}}\" (pointerdown)='detailsViewFocused(detailsContainer, rowIndex)' #detailsContainer [attr.data-rowindex]='rowIndex'\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr-container--active': isDetailActive(rowIndex)\n }\">\n <div class=\"igx-grid__hierarchical-indent\" style='display: flex;'>\n <ng-container *ngIf=\"this.groupingExpressions.length > 0\">\n <div class=\"igx-grid__row-indentation igx-grid__row-indentation--level-{{groupingExpressions.length}}\"></div>\n </ng-container>\n <ng-template\n [ngTemplateOutlet]='detailTemplate'\n [ngTemplateOutletContext]='getDetailsContext(rowData, rowIndex)'>\n </ng-template>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" (keydown)=\"navigation.summaryNav($event)\" [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='EMPTY_DATA' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-container *ngIf=\"totalRecords || pagingMode === 1\">\n <ng-content select=\"igx-paginator\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_less</igx-icon>\n</ng-template>\n\n <ng-template #defaultCollapsedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_more</igx-icon>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"rowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : rowEditText ? rowEditText : defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"rowEditActions ? rowEditActions : defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n"
69624
+ template: "<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar\"></ng-content>\n\n<!-- Group-by area -->\n<ng-container *ngIf=\"showGroupArea && (groupingExpressions.length > 0 || hasGroupableColumns)\">\n <igx-grid-group-by-area #groupArea [style.flex-basis.px]='outerWidth'\n [grid]=\"this\"\n [expressions]=\"groupingExpressions\"\n [sortingExpressions]=\"sortingExpressions\"\n [density]=\"displayDensity\"\n [dropAreaTemplate]=\"dropAreaTemplate\"\n [dropAreaMessage]=\"dropAreaMessage\"\n >\n </igx-grid-group-by-area>\n</ng-container>\n\n<!-- Grid table head row area -->\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [density]=\"displayDensity\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)='preventContainerScroll($event)'\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth || null' #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf='data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData'>\n <div #pinContainer *ngIf='pinnedData.length > 0'\n [ngClass]=\"{\n 'igx-grid__tr--pinned-bottom': !isRowPinningToTop,\n 'igx-grid__tr--pinned-top': isRowPinningToTop\n }\"\n class='igx-grid__tr--pinned' [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData; let rowIndex = index\">\n <ng-container *ngTemplateOutlet=\"pinned_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger\n | gridGroupBy:groupingExpressions:groupingExpansionState:groupStrategy:groupsExpanded:id:groupsRecords:pipeTrigger\n | gridPaging:paginator?.page:paginator?.perPage:id:pipeTrigger\n | gridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:id:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger\n | gridDetails:hasDetails:expansionStates:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight'\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxForTrackBy]='trackChanges'\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\">\n <ng-template\n [igxTemplateOutlet]='getRowTemplate(rowData)'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex)'\n (cachedViewLoaded)='cachedViewLoaded($event)'\n (viewCreated)='viewCreatedHandler($event)'\n (viewMoved)='viewMovedHandler($event)'>\n </ng-template>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData let-disabledRow=\"disabled\">\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\" [disabled]=\"disabledRow\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-grid-row>\n </ng-template>\n <ng-template #pinned_record_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\"#row #pinnedRow>\n </igx-grid-row>\n </ng-template>\n <ng-template #group_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-groupby-row [gridID]=\"id\" [index]=\"rowIndex\" [groupRow]=\"rowData\" [hideGroupRowSelectors]=\"hideRowSelectors\" [rowDraggable]=\"rowDraggable\" #row>\n </igx-grid-groupby-row>\n </ng-template>\n <ng-template #summary_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-summary-row role=\"row\" [gridID]=\"id\" [summaries]=\"rowData.summaries\" [index]=\"rowIndex\"\n class=\"igx-grid__summaries--body\" #summaryRow>\n </igx-grid-summary-row>\n </ng-template>\n <ng-template #detail_template_container let-rowIndex=\"index\" let-rowData>\n <div detail='true' style=\"overflow: auto; width: 100%;\" id=\"{{id}}_{{rowIndex}}\" (pointerdown)='detailsViewFocused(detailsContainer, rowIndex)' #detailsContainer [attr.data-rowindex]='rowIndex'\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr-container--active': isDetailActive(rowIndex)\n }\">\n <div class=\"igx-grid__hierarchical-indent\" style='display: flex;'>\n <ng-container *ngIf=\"this.groupingExpressions.length > 0\">\n <div class=\"igx-grid__row-indentation igx-grid__row-indentation--level-{{groupingExpressions.length}}\"></div>\n </ng-container>\n <ng-template\n [ngTemplateOutlet]='detailTemplate'\n [ngTemplateOutletContext]='getDetailsContext(rowData, rowIndex)'>\n </ng-template>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" (keydown)=\"navigation.summaryNav($event)\" [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='EMPTY_DATA' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-container *ngIf=\"totalRecords || pagingMode === 1\">\n <ng-content select=\"igx-paginator\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_less</igx-icon>\n</ng-template>\n\n <ng-template #defaultCollapsedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_more</igx-icon>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"rowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : rowEditText ? rowEditText : defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"rowEditActions ? rowEditActions : defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n"
69699
69625
  },] }
69700
69626
  ];
69701
69627
  IgxGridComponent.propDecorators = {
@@ -69721,12 +69647,10 @@
69721
69647
  groupingExpressions: [{ type: i0.Input }],
69722
69648
  groupingExpansionState: [{ type: i0.Input }],
69723
69649
  hideGroupedColumns: [{ type: i0.Input }],
69650
+ groupStrategy: [{ type: i0.Input }],
69724
69651
  dropAreaMessage: [{ type: i0.Input }],
69725
69652
  showGroupArea: [{ type: i0.Input }]
69726
69653
  };
69727
- __decorate([
69728
- DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
69729
- ], IgxGridComponent.prototype, "getCellByColumnVisibleIndex", null);
69730
69654
 
69731
69655
  var IgxGridStateDirective = /** @class */ (function () {
69732
69656
  /**
@@ -71459,7 +71383,7 @@
71459
71383
  function IgxGridGroupingPipe(gridAPI) {
71460
71384
  this.gridAPI = gridAPI;
71461
71385
  }
71462
- IgxGridGroupingPipe.prototype.transform = function (collection, expression, expansion, defaultExpanded, id, groupsRecords, _pipeTrigger) {
71386
+ IgxGridGroupingPipe.prototype.transform = function (collection, expression, expansion, groupingStrategy, defaultExpanded, id, groupsRecords, _pipeTrigger) {
71463
71387
  var state = { expressions: [], expansion: [], defaultExpanded: defaultExpanded };
71464
71388
  var grid = this.gridAPI.grid;
71465
71389
  state.expressions = grid.groupingExpressions;
@@ -71476,7 +71400,7 @@
71476
71400
  else {
71477
71401
  state.expansion = grid.groupingExpansionState;
71478
71402
  state.defaultExpanded = grid.groupsExpanded;
71479
- result = DataUtil.group(cloneArray(collection), state, grid, groupsRecords, fullResult);
71403
+ result = DataUtil.group(cloneArray(collection), state, groupingStrategy, grid, groupsRecords, fullResult);
71480
71404
  }
71481
71405
  grid.groupingFlatResult = result.data;
71482
71406
  grid.groupingResult = fullResult.data;
@@ -72902,7 +72826,8 @@
72902
72826
  configurable: true
72903
72827
  });
72904
72828
  /**
72905
- * @deprecated
72829
+ * @deprecated in version 12.1.0. Use `getCellByColumn` or `getCellByKey` instead
72830
+ *
72906
72831
  * Returns a `CellType` object that matches the conditions.
72907
72832
  *
72908
72833
  * @example
@@ -73614,9 +73539,6 @@
73614
73539
  expansionDepth: [{ type: i0.Input }],
73615
73540
  rowLoadingIndicatorTemplate: [{ type: i0.Input }]
73616
73541
  };
73617
- __decorate([
73618
- DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
73619
- ], IgxTreeGridComponent.prototype, "getCellByColumnVisibleIndex", null);
73620
73542
 
73621
73543
  var IgxTreeGridRowComponent = /** @class */ (function (_super) {
73622
73544
  __extends(IgxTreeGridRowComponent, _super);
@@ -74081,11 +74003,11 @@
74081
74003
  var childDataKey = grid.childDataKey;
74082
74004
  if (foreignKey) {
74083
74005
  var flatDataClone = cloneArray(collection);
74084
- return DataUtil.mergeTransactions(flatDataClone, aggregatedChanges, grid.primaryKey);
74006
+ return DataUtil.mergeTransactions(flatDataClone, aggregatedChanges, grid.primaryKey, grid.dataCloneStrategy);
74085
74007
  }
74086
74008
  else if (childDataKey) {
74087
74009
  var hierarchicalDataClone = cloneHierarchicalArray(collection, childDataKey);
74088
- return DataUtil.mergeHierarchicalTransactions(hierarchicalDataClone, aggregatedChanges, childDataKey, grid.primaryKey);
74010
+ return DataUtil.mergeHierarchicalTransactions(hierarchicalDataClone, aggregatedChanges, childDataKey, grid.primaryKey, grid.dataCloneStrategy);
74089
74011
  }
74090
74012
  }
74091
74013
  }
@@ -76114,7 +76036,8 @@
76114
76036
  configurable: true
76115
76037
  });
76116
76038
  /**
76117
- * @deprecated
76039
+ * @deprecated in version 12.1.0. Use `getCellByColumn` or `getCellByKey` instead
76040
+ *
76118
76041
  * Returns a `CellType` object that matches the conditions.
76119
76042
  *
76120
76043
  * @example
@@ -76810,9 +76733,6 @@
76810
76733
  data: [{ type: i0.Input }],
76811
76734
  expandChildren: [{ type: i0.Input }]
76812
76735
  };
76813
- __decorate([
76814
- DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
76815
- ], IgxHierarchicalGridComponent.prototype, "getCellByColumnVisibleIndex", null);
76816
76736
 
76817
76737
  var IgxHierarchicalGridCellComponent = /** @class */ (function (_super) {
76818
76738
  __extends(IgxHierarchicalGridCellComponent, _super);
@@ -81799,7 +81719,19 @@
81799
81719
  * @hidden
81800
81720
  */
81801
81721
  _this.isVisibleChange = new i0.EventEmitter();
81722
+ _this._position = 'bottom';
81723
+ _this._positionSettings = {
81724
+ horizontalDirection: exports.HorizontalAlignment.Center,
81725
+ verticalDirection: exports.VerticalAlignment.Bottom,
81726
+ openAnimation: i1.useAnimation(fadeIn),
81727
+ closeAnimation: i1.useAnimation(fadeOut),
81728
+ };
81729
+ return _this;
81730
+ }
81731
+ Object.defineProperty(IgxToastComponent.prototype, "position", {
81802
81732
  /**
81733
+ * @deprecated in version 12.2.3. We suggest using `positionSettings` property instead
81734
+ *
81803
81735
  * Sets/gets the position of the toast.
81804
81736
  * If not set, the `position` attribute will have value `IgxToastPosition.Bottom`.
81805
81737
  * ```html
@@ -81811,19 +81743,18 @@
81811
81743
  *
81812
81744
  * @memberof IgxToastComponent
81813
81745
  */
81814
- _this.position = 'bottom';
81815
- _this._positionSettings = {
81816
- horizontalDirection: exports.HorizontalAlignment.Center,
81817
- verticalDirection: _this.position === 'bottom'
81818
- ? exports.VerticalAlignment.Bottom
81819
- : _this.position === 'middle'
81820
- ? exports.VerticalAlignment.Middle
81821
- : exports.VerticalAlignment.Top,
81822
- openAnimation: i1.useAnimation(fadeIn),
81823
- closeAnimation: i1.useAnimation(fadeOut),
81824
- };
81825
- return _this;
81826
- }
81746
+ get: function () {
81747
+ return this._position;
81748
+ },
81749
+ set: function (position) {
81750
+ if (position) {
81751
+ this._position = position;
81752
+ this._positionSettings.verticalDirection = this.calculatePosition();
81753
+ }
81754
+ },
81755
+ enumerable: false,
81756
+ configurable: true
81757
+ });
81827
81758
  Object.defineProperty(IgxToastComponent.prototype, "positionSettings", {
81828
81759
  /**
81829
81760
  * Get the position and animation settings used by the toast.
@@ -81884,10 +81815,13 @@
81884
81815
  * this.toast.open();
81885
81816
  * ```
81886
81817
  */
81887
- IgxToastComponent.prototype.open = function (message) {
81818
+ IgxToastComponent.prototype.open = function (message, settings) {
81888
81819
  if (message !== undefined) {
81889
81820
  this.textMessage = message;
81890
81821
  }
81822
+ if (settings !== undefined) {
81823
+ this.positionSettings = settings;
81824
+ }
81891
81825
  this.strategy = new GlobalPositionStrategy(this.positionSettings);
81892
81826
  _super.prototype.open.call(this);
81893
81827
  };
@@ -81920,6 +81854,18 @@
81920
81854
  _this.isVisibleChange.emit(closedEventArgs);
81921
81855
  });
81922
81856
  };
81857
+ IgxToastComponent.prototype.ngOnChanges = function (changes) {
81858
+ if (changes['position'] && this._positionSettings) {
81859
+ this._positionSettings.verticalDirection = this.calculatePosition();
81860
+ }
81861
+ };
81862
+ IgxToastComponent.prototype.calculatePosition = function () {
81863
+ return this.position === 'bottom'
81864
+ ? exports.VerticalAlignment.Bottom
81865
+ : this.position === 'middle'
81866
+ ? exports.VerticalAlignment.Middle
81867
+ : exports.VerticalAlignment.Top;
81868
+ };
81923
81869
  return IgxToastComponent;
81924
81870
  }(IgxNotificationsDirective));
81925
81871
  IgxToastComponent.decorators = [
@@ -85697,6 +85643,7 @@
85697
85643
  exports.DEFAULT_OWNER = DEFAULT_OWNER;
85698
85644
  exports.DataUtil = DataUtil;
85699
85645
  exports.DateRangePickerFormatPipe = DateRangePickerFormatPipe;
85646
+ exports.DefaultDataCloneStrategy = DefaultDataCloneStrategy;
85700
85647
  exports.DefaultSortingStrategy = DefaultSortingStrategy;
85701
85648
  exports.DisplayDensity = DisplayDensity;
85702
85649
  exports.DisplayDensityBase = DisplayDensityBase;
@@ -86198,185 +86145,183 @@
86198
86145
  exports.ɵ2 = ɵ2;
86199
86146
  exports.ɵa = IgxActionStripMenuItemDirective;
86200
86147
  exports.ɵb = IGX_DROPDOWN_BASE;
86201
- exports.ɵba = IgxGridActionButtonComponent;
86202
- exports.ɵbb = ToggleAnimationPlayer;
86203
- exports.ɵbc = IgxExpansionPanelTitleDirective;
86204
- exports.ɵbd = IgxExpansionPanelDescriptionDirective;
86205
- exports.ɵbe = IgxExpansionPanelIconDirective;
86206
- exports.ɵbf = IgxBannerActionsDirective;
86207
- exports.ɵbg = IgxDaysViewNavigationService;
86208
- exports.ɵbh = IgxDayItemComponent;
86209
- exports.ɵbi = IgxMonthViewSlotsCalendar;
86210
- exports.ɵbj = IgxGetViewDateCalendar;
86211
- exports.ɵbk = IgxCarouselIndicatorDirective;
86212
- exports.ɵbl = IgxCarouselNextButtonDirective;
86213
- exports.ɵbm = IgxCarouselPrevButtonDirective;
86214
- exports.ɵbn = IgxComboAPIService;
86215
- exports.ɵbo = IGX_COMBO_COMPONENT;
86216
- exports.ɵbq = IgxComboDropDownComponent;
86217
- exports.ɵbr = IgxComboItemComponent;
86218
- exports.ɵbs = IgxComboHeaderDirective;
86219
- exports.ɵbt = IgxComboFooterDirective;
86220
- exports.ɵbu = IgxComboItemDirective;
86221
- exports.ɵbv = IgxComboEmptyDirective;
86222
- exports.ɵbw = IgxComboHeaderItemDirective;
86223
- exports.ɵbx = IgxComboAddItemDirective;
86224
- exports.ɵby = IgxComboToggleIconDirective;
86225
- exports.ɵbz = IgxComboClearIconDirective;
86226
- exports.ɵca = IgxComboFilteringPipe;
86227
- exports.ɵcb = IgxComboGroupingPipe;
86228
- exports.ɵcc = IgxComboAddItemComponent;
86229
- exports.ɵcd = PickerBaseDirective;
86230
- exports.ɵce = IgxCalendarContainerComponent;
86231
- exports.ɵcf = IgxCalendarContainerModule;
86232
- exports.ɵcg = IgxDialogTitleDirective;
86233
- exports.ɵch = IgxDialogActionsDirective;
86234
- exports.ɵci = IgxCellCrudState;
86235
- exports.ɵcj = IgxRowCrudState;
86236
- exports.ɵck = IgxRowAddCrudState;
86237
- exports.ɵcl = IgxGridCRUDService;
86238
- exports.ɵcm = IgxColumnMovingService;
86239
- exports.ɵcn = IgxExcelStyleCustomDialogComponent;
86240
- exports.ɵco = IgxExcelStyleDefaultExpressionComponent;
86241
- exports.ɵcp = IgxExcelStyleDateExpressionComponent;
86242
- exports.ɵcq = HammerGesturesManager;
86243
- exports.ɵcr = WatchChanges;
86244
- exports.ɵcs = WatchColumnChanges;
86245
- exports.ɵct = notifyChanges;
86246
- exports.ɵcu = IgxNotificationsDirective;
86247
- exports.ɵcv = IgxGridColumnResizerComponent;
86248
- exports.ɵcw = IgxColumnResizerDirective;
86249
- exports.ɵcx = IgxColumnResizingService;
86250
- exports.ɵcy = IgxRowSelectorDirective;
86251
- exports.ɵcz = IgxGroupByRowSelectorDirective;
86148
+ exports.ɵba = IgxExpansionPanelTitleDirective;
86149
+ exports.ɵbb = IgxExpansionPanelDescriptionDirective;
86150
+ exports.ɵbc = IgxExpansionPanelIconDirective;
86151
+ exports.ɵbd = IgxBannerActionsDirective;
86152
+ exports.ɵbe = IgxDaysViewNavigationService;
86153
+ exports.ɵbf = IgxDayItemComponent;
86154
+ exports.ɵbg = IgxMonthViewSlotsCalendar;
86155
+ exports.ɵbh = IgxGetViewDateCalendar;
86156
+ exports.ɵbi = IgxCarouselIndicatorDirective;
86157
+ exports.ɵbj = IgxCarouselNextButtonDirective;
86158
+ exports.ɵbk = IgxCarouselPrevButtonDirective;
86159
+ exports.ɵbl = IgxComboAPIService;
86160
+ exports.ɵbm = IGX_COMBO_COMPONENT;
86161
+ exports.ɵbo = IgxComboDropDownComponent;
86162
+ exports.ɵbp = IgxComboItemComponent;
86163
+ exports.ɵbq = IgxComboHeaderDirective;
86164
+ exports.ɵbr = IgxComboFooterDirective;
86165
+ exports.ɵbs = IgxComboItemDirective;
86166
+ exports.ɵbt = IgxComboEmptyDirective;
86167
+ exports.ɵbu = IgxComboHeaderItemDirective;
86168
+ exports.ɵbv = IgxComboAddItemDirective;
86169
+ exports.ɵbw = IgxComboToggleIconDirective;
86170
+ exports.ɵbx = IgxComboClearIconDirective;
86171
+ exports.ɵby = IgxComboFilteringPipe;
86172
+ exports.ɵbz = IgxComboGroupingPipe;
86173
+ exports.ɵca = IgxComboAddItemComponent;
86174
+ exports.ɵcb = PickerBaseDirective;
86175
+ exports.ɵcc = IgxCalendarContainerComponent;
86176
+ exports.ɵcd = IgxCalendarContainerModule;
86177
+ exports.ɵce = IgxDialogTitleDirective;
86178
+ exports.ɵcf = IgxDialogActionsDirective;
86179
+ exports.ɵcg = IgxCellCrudState;
86180
+ exports.ɵch = IgxRowCrudState;
86181
+ exports.ɵci = IgxRowAddCrudState;
86182
+ exports.ɵcj = IgxGridCRUDService;
86183
+ exports.ɵck = IgxColumnMovingService;
86184
+ exports.ɵcl = IgxExcelStyleCustomDialogComponent;
86185
+ exports.ɵcm = IgxExcelStyleDefaultExpressionComponent;
86186
+ exports.ɵcn = IgxExcelStyleDateExpressionComponent;
86187
+ exports.ɵco = HammerGesturesManager;
86188
+ exports.ɵcp = WatchChanges;
86189
+ exports.ɵcq = WatchColumnChanges;
86190
+ exports.ɵcr = notifyChanges;
86191
+ exports.ɵcs = IgxNotificationsDirective;
86192
+ exports.ɵct = IgxGridColumnResizerComponent;
86193
+ exports.ɵcu = IgxColumnResizerDirective;
86194
+ exports.ɵcv = IgxColumnResizingService;
86195
+ exports.ɵcw = IgxRowSelectorDirective;
86196
+ exports.ɵcx = IgxGroupByRowSelectorDirective;
86197
+ exports.ɵcy = IgxHeadSelectorDirective;
86198
+ exports.ɵcz = IgxRowDragDirective;
86252
86199
  exports.ɵd = IgxGridSelectionService;
86253
- exports.ɵda = IgxHeadSelectorDirective;
86254
- exports.ɵdb = IgxRowDragDirective;
86255
- exports.ɵdc = IgxDragIndicatorIconDirective;
86256
- exports.ɵdd = IgxRowDragGhostDirective;
86257
- exports.ɵde = IgxRowDragModule;
86258
- exports.ɵdf = IgxGridHeaderRowComponent;
86259
- exports.ɵdg = IgxGridHeaderGroupComponent;
86260
- exports.ɵdh = IgxGridHeaderComponent;
86261
- exports.ɵdi = IgxGridFilteringCellComponent;
86262
- exports.ɵdj = IgxFilteringService;
86263
- exports.ɵdk = IgxGridFilteringRowComponent;
86264
- exports.ɵdl = IgxGridGroupByAreaComponent;
86265
- exports.ɵdm = IgxGroupByAreaDirective;
86266
- exports.ɵdn = IgxGroupByMetaPipe;
86267
- exports.ɵdo = IgxTemplateOutletDirective;
86268
- exports.ɵdp = IgxTemplateOutletModule;
86269
- exports.ɵdq = IgxRowEditTemplateDirective;
86270
- exports.ɵdr = IgxRowEditTextDirective;
86271
- exports.ɵds = IgxRowAddTextDirective;
86272
- exports.ɵdt = IgxRowEditActionsDirective;
86273
- exports.ɵdu = IgxRowEditTabStopDirective;
86274
- exports.ɵdv = IgxSummaryRowComponent;
86275
- exports.ɵdw = IgxSummaryCellComponent;
86276
- exports.ɵdx = IgxRowDirective;
86277
- exports.ɵdy = IgxGridNavigationService;
86278
- exports.ɵdz = IgxGridSummaryService;
86279
- exports.ɵea = ConnectedPositioningStrategy;
86280
- exports.ɵeb = IgxGridGroupByRowComponent;
86281
- exports.ɵec = IgxTreeGridSelectionService;
86282
- exports.ɵed = IgxTreeGridGroupByAreaComponent;
86283
- exports.ɵee = IgxRowLoadingIndicatorTemplateDirective;
86284
- exports.ɵef = IgxHierarchicalGridNavigationService;
86285
- exports.ɵeg = IgxChildGridRowComponent;
86286
- exports.ɵeh = IgxGridCellComponent;
86287
- exports.ɵei = IgxGridFooterComponent;
86288
- exports.ɵej = IgxAdvancedFilteringDialogComponent;
86289
- exports.ɵek = IgxColumnHidingDirective;
86290
- exports.ɵel = IgxColumnPinningDirective;
86291
- exports.ɵem = IgxGridSharedModules;
86292
- exports.ɵen = IgxProcessBarTextTemplateDirective;
86293
- exports.ɵeo = IgxProgressBarGradientDirective;
86294
- exports.ɵep = DIR_DOCUMENT_FACTORY;
86295
- exports.ɵeq = DIR_DOCUMENT;
86296
- exports.ɵer = IgxDirectionality;
86297
- exports.ɵes = IgxSelectItemNavigationDirective;
86298
- exports.ɵet = IGX_TIME_PICKER_COMPONENT;
86299
- exports.ɵev = IgxItemListDirective;
86300
- exports.ɵew = IgxTimeItemDirective;
86301
- exports.ɵex = IgxTimePickerTemplateDirective;
86302
- exports.ɵey = IgxTimePickerActionsDirective;
86303
- exports.ɵez = TimeFormatPipe;
86200
+ exports.ɵda = IgxDragIndicatorIconDirective;
86201
+ exports.ɵdb = IgxRowDragGhostDirective;
86202
+ exports.ɵdc = IgxRowDragModule;
86203
+ exports.ɵdd = IgxGridHeaderRowComponent;
86204
+ exports.ɵde = IgxGridHeaderGroupComponent;
86205
+ exports.ɵdf = IgxGridHeaderComponent;
86206
+ exports.ɵdg = IgxGridFilteringCellComponent;
86207
+ exports.ɵdh = IgxFilteringService;
86208
+ exports.ɵdi = IgxGridFilteringRowComponent;
86209
+ exports.ɵdj = IgxGridGroupByAreaComponent;
86210
+ exports.ɵdk = IgxGroupByAreaDirective;
86211
+ exports.ɵdl = IgxGroupByMetaPipe;
86212
+ exports.ɵdm = IgxTemplateOutletDirective;
86213
+ exports.ɵdn = IgxTemplateOutletModule;
86214
+ exports.ɵdo = IgxRowEditTemplateDirective;
86215
+ exports.ɵdp = IgxRowEditTextDirective;
86216
+ exports.ɵdq = IgxRowAddTextDirective;
86217
+ exports.ɵdr = IgxRowEditActionsDirective;
86218
+ exports.ɵds = IgxRowEditTabStopDirective;
86219
+ exports.ɵdt = IgxSummaryRowComponent;
86220
+ exports.ɵdu = IgxSummaryCellComponent;
86221
+ exports.ɵdv = IgxRowDirective;
86222
+ exports.ɵdw = IgxGridNavigationService;
86223
+ exports.ɵdx = IgxGridSummaryService;
86224
+ exports.ɵdy = ConnectedPositioningStrategy;
86225
+ exports.ɵdz = IgxGridGroupByRowComponent;
86226
+ exports.ɵea = IgxTreeGridSelectionService;
86227
+ exports.ɵeb = IgxTreeGridGroupByAreaComponent;
86228
+ exports.ɵec = IgxRowLoadingIndicatorTemplateDirective;
86229
+ exports.ɵed = IgxHierarchicalGridNavigationService;
86230
+ exports.ɵee = IgxChildGridRowComponent;
86231
+ exports.ɵef = IgxGridCellComponent;
86232
+ exports.ɵeg = IgxGridFooterComponent;
86233
+ exports.ɵeh = IgxAdvancedFilteringDialogComponent;
86234
+ exports.ɵei = IgxColumnHidingDirective;
86235
+ exports.ɵej = IgxColumnPinningDirective;
86236
+ exports.ɵek = IgxGridSharedModules;
86237
+ exports.ɵel = IgxProcessBarTextTemplateDirective;
86238
+ exports.ɵem = IgxProgressBarGradientDirective;
86239
+ exports.ɵen = DIR_DOCUMENT_FACTORY;
86240
+ exports.ɵeo = DIR_DOCUMENT;
86241
+ exports.ɵep = IgxDirectionality;
86242
+ exports.ɵeq = IgxSelectItemNavigationDirective;
86243
+ exports.ɵer = IGX_TIME_PICKER_COMPONENT;
86244
+ exports.ɵet = IgxItemListDirective;
86245
+ exports.ɵeu = IgxTimeItemDirective;
86246
+ exports.ɵev = IgxTimePickerTemplateDirective;
86247
+ exports.ɵew = IgxTimePickerActionsDirective;
86248
+ exports.ɵex = TimeFormatPipe;
86249
+ exports.ɵey = TimeItemPipe;
86250
+ exports.ɵez = IgxGridPipesModule;
86304
86251
  exports.ɵf = IGX_EXPANSION_PANEL_COMPONENT;
86305
- exports.ɵfa = TimeItemPipe;
86306
- exports.ɵfb = IgxGridPipesModule;
86307
- exports.ɵfc = IgxGridCellStyleClassesPipe;
86308
- exports.ɵfd = IgxGridCellStylesPipe;
86309
- exports.ɵfe = IgxGridRowClassesPipe;
86310
- exports.ɵff = IgxGridRowStylesPipe;
86311
- exports.ɵfg = IgxGridNotGroupedPipe;
86312
- exports.ɵfh = IgxGridTopLevelColumns;
86313
- exports.ɵfi = IgxGridFilterConditionPipe;
86314
- exports.ɵfj = IgxGridTransactionPipe;
86315
- exports.ɵfk = IgxGridPaginatorOptionsPipe;
86316
- exports.ɵfl = IgxHasVisibleColumnsPipe;
86317
- exports.ɵfm = IgxGridRowPinningPipe;
86318
- exports.ɵfn = IgxColumnActionEnabledPipe;
86319
- exports.ɵfo = IgxFilterActionColumnsPipe;
86320
- exports.ɵfp = IgxSortActionColumnsPipe;
86321
- exports.ɵfq = IgxGridDataMapperPipe;
86322
- exports.ɵfr = IgxStringReplacePipe;
86323
- exports.ɵfs = IgxGridTransactionStatePipe;
86324
- exports.ɵft = IgxColumnFormatterPipe;
86325
- exports.ɵfu = IgxSummaryFormatterPipe;
86326
- exports.ɵfv = IgxGridAddRowPipe;
86327
- exports.ɵfw = IgxHeaderGroupWidthPipe;
86328
- exports.ɵfx = IgxHeaderGroupStylePipe;
86329
- exports.ɵfy = IgxGridColumnModule;
86330
- exports.ɵfz = IgxGridHeadersModule;
86252
+ exports.ɵfa = IgxGridCellStyleClassesPipe;
86253
+ exports.ɵfb = IgxGridCellStylesPipe;
86254
+ exports.ɵfc = IgxGridRowClassesPipe;
86255
+ exports.ɵfd = IgxGridRowStylesPipe;
86256
+ exports.ɵfe = IgxGridNotGroupedPipe;
86257
+ exports.ɵff = IgxGridTopLevelColumns;
86258
+ exports.ɵfg = IgxGridFilterConditionPipe;
86259
+ exports.ɵfh = IgxGridTransactionPipe;
86260
+ exports.ɵfi = IgxGridPaginatorOptionsPipe;
86261
+ exports.ɵfj = IgxHasVisibleColumnsPipe;
86262
+ exports.ɵfk = IgxGridRowPinningPipe;
86263
+ exports.ɵfl = IgxColumnActionEnabledPipe;
86264
+ exports.ɵfm = IgxFilterActionColumnsPipe;
86265
+ exports.ɵfn = IgxSortActionColumnsPipe;
86266
+ exports.ɵfo = IgxGridDataMapperPipe;
86267
+ exports.ɵfp = IgxStringReplacePipe;
86268
+ exports.ɵfq = IgxGridTransactionStatePipe;
86269
+ exports.ɵfr = IgxColumnFormatterPipe;
86270
+ exports.ɵfs = IgxSummaryFormatterPipe;
86271
+ exports.ɵft = IgxGridAddRowPipe;
86272
+ exports.ɵfu = IgxHeaderGroupWidthPipe;
86273
+ exports.ɵfv = IgxHeaderGroupStylePipe;
86274
+ exports.ɵfw = IgxGridColumnModule;
86275
+ exports.ɵfx = IgxGridHeadersModule;
86276
+ exports.ɵfy = SortingIndexPipe;
86277
+ exports.ɵfz = IgxGridFilteringModule;
86331
86278
  exports.ɵg = IGX_TREE_COMPONENT;
86332
- exports.ɵga = SortingIndexPipe;
86333
- exports.ɵgb = IgxGridFilteringModule;
86334
- exports.ɵgc = IgxColumnMovingModule;
86335
- exports.ɵgd = IgxColumnMovingDropDirective;
86336
- exports.ɵge = IgxColumnMovingDragDirective;
86337
- exports.ɵgf = IgxGridResizingModule;
86338
- exports.ɵgg = IgxResizeHandleDirective;
86339
- exports.ɵgh = IgxGridExcelStyleFilteringModule;
86340
- exports.ɵgi = IgxGridSelectionModule;
86341
- exports.ɵgj = IgxGridDragSelectDirective;
86342
- exports.ɵgk = IgxGridSummaryModule;
86343
- exports.ɵgl = IgxSummaryDataPipe;
86344
- exports.ɵgm = IgxGridToolbarModule;
86345
- exports.ɵgn = BaseToolbarDirective;
86346
- exports.ɵgo = BaseToolbarColumnActionsDirective;
86347
- exports.ɵgp = IgxGridRowComponent;
86348
- exports.ɵgq = IgxGridSortingPipe;
86349
- exports.ɵgr = IgxGridGroupingPipe;
86350
- exports.ɵgs = IgxGridPagingPipe;
86351
- exports.ɵgt = IgxGridFilteringPipe;
86352
- exports.ɵgu = IgxGridSummaryPipe;
86353
- exports.ɵgv = IgxGridDetailsPipe;
86354
- exports.ɵgw = IgxGridExpandableCellComponent;
86355
- exports.ɵgx = IgxTreeGridRowComponent;
86356
- exports.ɵgy = IgxTreeGridCellComponent;
86357
- exports.ɵgz = IgxTreeGridHierarchizingPipe;
86279
+ exports.ɵga = IgxColumnMovingModule;
86280
+ exports.ɵgb = IgxColumnMovingDropDirective;
86281
+ exports.ɵgc = IgxColumnMovingDragDirective;
86282
+ exports.ɵgd = IgxGridResizingModule;
86283
+ exports.ɵge = IgxResizeHandleDirective;
86284
+ exports.ɵgf = IgxGridExcelStyleFilteringModule;
86285
+ exports.ɵgg = IgxGridSelectionModule;
86286
+ exports.ɵgh = IgxGridDragSelectDirective;
86287
+ exports.ɵgi = IgxGridSummaryModule;
86288
+ exports.ɵgj = IgxSummaryDataPipe;
86289
+ exports.ɵgk = IgxGridToolbarModule;
86290
+ exports.ɵgl = BaseToolbarDirective;
86291
+ exports.ɵgm = BaseToolbarColumnActionsDirective;
86292
+ exports.ɵgn = IgxGridRowComponent;
86293
+ exports.ɵgo = IgxGridSortingPipe;
86294
+ exports.ɵgp = IgxGridGroupingPipe;
86295
+ exports.ɵgq = IgxGridPagingPipe;
86296
+ exports.ɵgr = IgxGridFilteringPipe;
86297
+ exports.ɵgs = IgxGridSummaryPipe;
86298
+ exports.ɵgt = IgxGridDetailsPipe;
86299
+ exports.ɵgu = IgxGridExpandableCellComponent;
86300
+ exports.ɵgv = IgxTreeGridRowComponent;
86301
+ exports.ɵgw = IgxTreeGridCellComponent;
86302
+ exports.ɵgx = IgxTreeGridHierarchizingPipe;
86303
+ exports.ɵgy = IgxTreeGridFlatteningPipe;
86304
+ exports.ɵgz = IgxTreeGridSortingPipe;
86358
86305
  exports.ɵh = IGX_TREE_NODE_COMPONENT;
86359
- exports.ɵha = IgxTreeGridFlatteningPipe;
86360
- exports.ɵhb = IgxTreeGridSortingPipe;
86361
- exports.ɵhc = IgxTreeGridPagingPipe;
86362
- exports.ɵhd = IgxTreeGridTransactionPipe;
86363
- exports.ɵhe = IgxTreeGridNormalizeRecordsPipe;
86364
- exports.ɵhf = IgxTreeGridAddRowPipe;
86365
- exports.ɵhg = IgxTreeGridFilteringPipe;
86366
- exports.ɵhh = IgxTreeGridSummaryPipe;
86367
- exports.ɵhi = IgxHierarchicalRowComponent;
86368
- exports.ɵhj = IgxHierarchicalGridCellComponent;
86369
- exports.ɵhk = IgxSliderThumbComponent;
86370
- exports.ɵhl = IgxThumbLabelComponent;
86371
- exports.ɵhm = IgxTicksComponent;
86372
- exports.ɵhn = IgxTickLabelsPipe;
86373
- exports.ɵho = IgxTabsBase;
86374
- exports.ɵhp = IgxTabHeaderBase;
86375
- exports.ɵhq = IgxTabContentBase;
86376
- exports.ɵhr = IgxSplitBarComponent;
86377
- exports.ɵhs = IgxTreeService;
86378
- exports.ɵht = IgxTreeSelectionService;
86379
- exports.ɵhu = IgxTreeNavigationService;
86306
+ exports.ɵha = IgxTreeGridPagingPipe;
86307
+ exports.ɵhb = IgxTreeGridTransactionPipe;
86308
+ exports.ɵhc = IgxTreeGridNormalizeRecordsPipe;
86309
+ exports.ɵhd = IgxTreeGridAddRowPipe;
86310
+ exports.ɵhe = IgxTreeGridFilteringPipe;
86311
+ exports.ɵhf = IgxTreeGridSummaryPipe;
86312
+ exports.ɵhg = IgxHierarchicalRowComponent;
86313
+ exports.ɵhh = IgxHierarchicalGridCellComponent;
86314
+ exports.ɵhi = IgxSliderThumbComponent;
86315
+ exports.ɵhj = IgxThumbLabelComponent;
86316
+ exports.ɵhk = IgxTicksComponent;
86317
+ exports.ɵhl = IgxTickLabelsPipe;
86318
+ exports.ɵhm = IgxTabsBase;
86319
+ exports.ɵhn = IgxTabHeaderBase;
86320
+ exports.ɵho = IgxTabContentBase;
86321
+ exports.ɵhp = IgxSplitBarComponent;
86322
+ exports.ɵhq = IgxTreeService;
86323
+ exports.ɵhr = IgxTreeSelectionService;
86324
+ exports.ɵhs = IgxTreeNavigationService;
86380
86325
  exports.ɵi = PlatformUtil;
86381
86326
  exports.ɵl = IgxInputGroupBase;
86382
86327
  exports.ɵm = IgxSelectionAPIService;
@@ -86389,10 +86334,10 @@
86389
86334
  exports.ɵt = VirtualHelperBaseDirective;
86390
86335
  exports.ɵu = HVirtualHelperComponent;
86391
86336
  exports.ɵv = MaskParsingService;
86392
- exports.ɵw = DeprecateMethod;
86393
- exports.ɵx = DeprecateProperty;
86394
- exports.ɵy = isHierarchyMatch;
86395
- exports.ɵz = getHierarchy;
86337
+ exports.ɵw = isHierarchyMatch;
86338
+ exports.ɵx = getHierarchy;
86339
+ exports.ɵy = IgxGridActionButtonComponent;
86340
+ exports.ɵz = ToggleAnimationPlayer;
86396
86341
 
86397
86342
  Object.defineProperty(exports, '__esModule', { value: true });
86398
86343