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
@@ -1,7 +1,7 @@
1
1
  import * as i1 from '@angular/animations';
2
2
  import { style, animate, animation, keyframes, AnimationBuilder, useAnimation, trigger, transition } from '@angular/animations';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, Directive, Input, HostListener, NgModule, Inject, PLATFORM_ID, SimpleChange, InjectionToken, EventEmitter, Optional, Output, ElementRef, Renderer2, NgZone, Component, ViewChild, HostBinding, forwardRef, ChangeDetectorRef, ViewContainerRef, TemplateRef, IterableDiffers, ComponentFactoryResolver, QueryList, ViewChildren, ChangeDetectionStrategy, ContentChild, ContentChildren, ApplicationRef, Injector, isDevMode, Self, SecurityContext, Pipe, LOCALE_ID, Host, NgModuleRef, inject, CUSTOM_ELEMENTS_SCHEMA, SkipSelf } from '@angular/core';
4
+ import { Injectable, Directive, Input, HostListener, NgModule, isDevMode, Inject, PLATFORM_ID, SimpleChange, InjectionToken, EventEmitter, Optional, Output, ElementRef, Renderer2, NgZone, Component, ViewChild, HostBinding, forwardRef, ChangeDetectorRef, ViewContainerRef, TemplateRef, IterableDiffers, ComponentFactoryResolver, QueryList, ViewChildren, ChangeDetectionStrategy, ContentChild, ContentChildren, ApplicationRef, Injector, Self, SecurityContext, Pipe, LOCALE_ID, Host, NgModuleRef, inject, CUSTOM_ELEMENTS_SCHEMA, SkipSelf } from '@angular/core';
5
5
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS, CheckboxRequiredValidator, NgModel, FormControlName, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';
6
6
  import * as i2 from '@angular/common';
7
7
  import { isPlatformBrowser, CommonModule, DOCUMENT, DatePipe, formatDate, FormatWidth, getLocaleDateFormat, getLocaleCurrencyCode, DecimalPipe, CurrencyPipe, PercentPipe, getLocaleNumberFormat, NumberFormatStyle, getCurrencySymbol } from '@angular/common';
@@ -892,7 +892,7 @@ const run = (id) => {
892
892
  fn();
893
893
  }
894
894
  };
895
- const ɵ0$5 = run;
895
+ const ɵ0$4 = run;
896
896
  const listener = (event) => run(event.data);
897
897
  const ɵ1$1 = listener;
898
898
  // Use function instead of arrow function to workaround an issue in codesandbox
@@ -920,6 +920,15 @@ function clearImmediate(id) {
920
920
  delete queue[id];
921
921
  }
922
922
 
923
+ /**
924
+ * @hidden
925
+ */
926
+ const showMessage = (message, isMessageShown) => {
927
+ if (!isMessageShown && isDevMode()) {
928
+ console.warn(message);
929
+ }
930
+ return true;
931
+ };
923
932
  const mkenum = (x) => x;
924
933
  /**
925
934
  * Returns the ResizeObserver type or the polyfilled version if not available.
@@ -960,6 +969,18 @@ const cloneHierarchicalArray = (array, childDataKey) => {
960
969
  }
961
970
  return result;
962
971
  };
972
+ /**
973
+ * Creates an object with prototype from provided source and copies
974
+ * all properties descriptors from provided source
975
+ *
976
+ * @param obj Source to copy prototype and descriptors from
977
+ * @returns New object with cloned prototype and property descriptors
978
+ */
979
+ const copyDescriptors = (obj) => {
980
+ if (obj) {
981
+ return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));
982
+ }
983
+ };
963
984
  /**
964
985
  * Deep clones all first level keys of Obj2 and merges them to Obj1
965
986
  *
@@ -1036,7 +1057,7 @@ const uniqueDates = (columnValues) => columnValues.reduce((a, c) => {
1036
1057
  * @returns true if provided variable is Object
1037
1058
  * @hidden
1038
1059
  */
1039
- const isObject = (value) => value && value.toString() === '[object Object]';
1060
+ const isObject = (value) => !!(value && value.toString() === '[object Object]');
1040
1061
  /**
1041
1062
  * Checks if provided variable is Date
1042
1063
  *
@@ -2020,6 +2041,12 @@ var TransactionEventOrigin;
2020
2041
  TransactionEventOrigin["END"] = "endPending";
2021
2042
  })(TransactionEventOrigin || (TransactionEventOrigin = {}));
2022
2043
 
2044
+ class DefaultDataCloneStrategy {
2045
+ clone(data) {
2046
+ return cloneValue(data);
2047
+ }
2048
+ }
2049
+
2023
2050
  /**
2024
2051
  * @hidden
2025
2052
  */
@@ -2064,8 +2091,7 @@ class DataUtil {
2064
2091
  };
2065
2092
  return rec;
2066
2093
  }
2067
- static group(data, state, grid = null, groupsRecords = [], fullResult = { data: [], metadata: [] }) {
2068
- const grouping = new IgxGrouping();
2094
+ static group(data, state, grouping = new IgxGrouping(), grid = null, groupsRecords = [], fullResult = { data: [], metadata: [] }) {
2069
2095
  groupsRecords.splice(0, groupsRecords.length);
2070
2096
  return grouping.groupBy(data, state, grid, groupsRecords, fullResult);
2071
2097
  }
@@ -2127,12 +2153,12 @@ class DataUtil {
2127
2153
  * @param deleteRows Should delete rows with DELETE transaction type from data
2128
2154
  * @returns Provided data collections updated with all provided transactions
2129
2155
  */
2130
- static mergeTransactions(data, transactions, primaryKey, deleteRows = false) {
2156
+ static mergeTransactions(data, transactions, primaryKey, cloneStrategy = new DefaultDataCloneStrategy(), deleteRows = false) {
2131
2157
  data.forEach((item, index) => {
2132
2158
  const rowId = primaryKey ? item[primaryKey] : item;
2133
2159
  const transaction = transactions.find(t => t.id === rowId);
2134
2160
  if (transaction && transaction.type === TransactionType.UPDATE) {
2135
- data[index] = transaction.newValue;
2161
+ data[index] = mergeObjects(cloneStrategy.clone(data[index]), transaction.newValue);
2136
2162
  }
2137
2163
  });
2138
2164
  if (deleteRows) {
@@ -2160,7 +2186,7 @@ class DataUtil {
2160
2186
  * @param deleteRows Should delete rows with DELETE transaction type from data
2161
2187
  * @returns Provided data collections updated with all provided transactions
2162
2188
  */
2163
- static mergeHierarchicalTransactions(data, transactions, childDataKey, primaryKey, deleteRows = false) {
2189
+ static mergeHierarchicalTransactions(data, transactions, childDataKey, primaryKey, cloneStrategy = new DefaultDataCloneStrategy(), deleteRows = false) {
2164
2190
  for (const transaction of transactions) {
2165
2191
  if (transaction.path) {
2166
2192
  const parent = this.findParentFromPath(data, primaryKey, childDataKey, transaction.path);
@@ -2176,7 +2202,7 @@ class DataUtil {
2176
2202
  case TransactionType.UPDATE:
2177
2203
  const updateIndex = collection.findIndex(x => x[primaryKey] === transaction.id);
2178
2204
  if (updateIndex !== -1) {
2179
- collection[updateIndex] = mergeObjects(cloneValue(collection[updateIndex]), transaction.newValue);
2205
+ collection[updateIndex] = mergeObjects(cloneStrategy.clone(collection[updateIndex]), transaction.newValue);
2180
2206
  }
2181
2207
  break;
2182
2208
  case TransactionType.DELETE:
@@ -6423,7 +6449,8 @@ class IgxRowCrudState extends IgxCellCrudState {
6423
6449
  const rowInEditMode = grid.gridAPI.crudService.row;
6424
6450
  row.newData = value !== null && value !== void 0 ? value : rowInEditMode.transactionState;
6425
6451
  if (rowInEditMode && row.id === rowInEditMode.id) {
6426
- row.data = Object.assign(Object.assign({}, row.data), rowInEditMode.transactionState);
6452
+ // do not use spread operator here as it will copy everything over an empty object with no descriptors
6453
+ row.data = Object.assign(copyDescriptors(row.data), row.data, rowInEditMode.transactionState);
6427
6454
  // TODO: Workaround for updating a row in edit mode through the API
6428
6455
  }
6429
6456
  else if (this.grid.transactions.enabled) {
@@ -6679,7 +6706,7 @@ class GridBaseAPIService {
6679
6706
  }
6680
6707
  if (!data) {
6681
6708
  if (grid.transactions.enabled) {
6682
- data = DataUtil.mergeTransactions(cloneArray(grid.data), grid.transactions.getAggregatedChanges(true), grid.primaryKey);
6709
+ data = DataUtil.mergeTransactions(cloneArray(grid.data), grid.transactions.getAggregatedChanges(true), grid.primaryKey, grid.dataCloneStrategy);
6683
6710
  const deletedRows = grid.transactions.getTransactionLog().filter(t => t.type === TransactionType.DELETE).map(t => t.id);
6684
6711
  deletedRows.forEach(rowID => {
6685
6712
  const tempData = grid.primaryKey ? data.map(rec => rec[grid.primaryKey]) : data;
@@ -7765,7 +7792,7 @@ class IgxRowDirective {
7765
7792
  */
7766
7793
  get rowData() {
7767
7794
  if (this.inEditMode) {
7768
- return mergeWith(cloneValue(this._rowData), this.grid.transactions.getAggregatedValue(this.rowID, false), (objValue, srcValue) => {
7795
+ return mergeWith(this.grid.dataCloneStrategy.clone(this._rowData), this.grid.transactions.getAggregatedValue(this.rowID, false), (objValue, srcValue) => {
7769
7796
  if (Array.isArray(srcValue)) {
7770
7797
  return objValue = srcValue;
7771
7798
  }
@@ -8199,7 +8226,7 @@ IgxRowDirective.propDecorators = {
8199
8226
  };
8200
8227
 
8201
8228
  const clear = (el) => el === 0 || Boolean(el);
8202
- const ɵ0$4 = clear;
8229
+ const ɵ0$3 = clear;
8203
8230
  const first = (arr) => arr[0];
8204
8231
  const ɵ1 = first;
8205
8232
  const last = (arr) => arr[arr.length - 1];
@@ -11752,7 +11779,7 @@ class IgxBaseExporter {
11752
11779
  }
11753
11780
  if (hasGrouping && !this.options.ignoreGrouping) {
11754
11781
  const groupsRecords = [];
11755
- DataUtil.group(cloneArray(gridData), groupedGridGroupingState, grid, groupsRecords);
11782
+ DataUtil.group(cloneArray(gridData), groupedGridGroupingState, grid.groupStrategy, grid, groupsRecords);
11756
11783
  gridData = groupsRecords;
11757
11784
  }
11758
11785
  if (hasGrouping && !this.options.ignoreGrouping) {
@@ -14535,6 +14562,7 @@ class IgxOverlayService {
14535
14562
  return null;
14536
14563
  }
14537
14564
  const hook = this._document.createElement('div');
14565
+ hook.style.display = 'none';
14538
14566
  element.parentElement.insertBefore(hook, element);
14539
14567
  return hook;
14540
14568
  }
@@ -15087,6 +15115,18 @@ class IgxBaseTransactionService {
15087
15115
  this._isPending = false;
15088
15116
  this._pendingTransactions = [];
15089
15117
  this._pendingStates = new Map();
15118
+ this._cloneStrategy = new DefaultDataCloneStrategy();
15119
+ }
15120
+ /**
15121
+ * @inheritdoc
15122
+ */
15123
+ get cloneStrategy() {
15124
+ return this._cloneStrategy;
15125
+ }
15126
+ set cloneStrategy(strategy) {
15127
+ if (strategy) {
15128
+ this._cloneStrategy = strategy;
15129
+ }
15090
15130
  }
15091
15131
  /**
15092
15132
  * @inheritdoc
@@ -15202,7 +15242,7 @@ class IgxBaseTransactionService {
15202
15242
  }
15203
15243
  }
15204
15244
  else {
15205
- state = { value: cloneValue(transaction.newValue), recordRef, type: transaction.type };
15245
+ state = { value: this.cloneStrategy.clone(transaction.newValue), recordRef, type: transaction.type };
15206
15246
  states.set(transaction.id, state);
15207
15247
  }
15208
15248
  }
@@ -15224,7 +15264,7 @@ class IgxBaseTransactionService {
15224
15264
  */
15225
15265
  mergeValues(first, second) {
15226
15266
  if (isObject(first) || isObject(second)) {
15227
- return mergeObjects(cloneValue(first), second);
15267
+ return mergeObjects(this.cloneStrategy.clone(first), second);
15228
15268
  }
15229
15269
  else {
15230
15270
  return second ? second : first;
@@ -15489,7 +15529,7 @@ class IgxTransactionService extends IgxBaseTransactionService {
15489
15529
  }
15490
15530
  }
15491
15531
  else {
15492
- state = { value: cloneValue(transaction.newValue), recordRef, type: transaction.type };
15532
+ state = { value: this.cloneStrategy.clone(transaction.newValue), recordRef, type: transaction.type };
15493
15533
  states.set(transaction.id, state);
15494
15534
  }
15495
15535
  // should not clean pending state. This will happen automatically on endPending call
@@ -15563,7 +15603,7 @@ class IgxHierarchicalTransactionService extends IgxTransactionService {
15563
15603
  getAggregatedChanges(mergeChanges) {
15564
15604
  const result = [];
15565
15605
  this._states.forEach((state, key) => {
15566
- const value = mergeChanges ? this.mergeValues(state.recordRef, state.value) : cloneValue(state.value);
15606
+ const value = mergeChanges ? this.mergeValues(state.recordRef, state.value) : this.cloneStrategy.clone(state.value);
15567
15607
  this.clearArraysFromObject(value);
15568
15608
  result.push({ id: key, path: state.path, newValue: value, type: state.type });
15569
15609
  });
@@ -15575,7 +15615,7 @@ class IgxHierarchicalTransactionService extends IgxTransactionService {
15575
15615
  if (id !== undefined) {
15576
15616
  transactions = transactions.filter(t => t.id === id);
15577
15617
  }
15578
- DataUtil.mergeHierarchicalTransactions(data, transactions, childDataKey, primaryKeyOrId, true);
15618
+ DataUtil.mergeHierarchicalTransactions(data, transactions, childDataKey, primaryKeyOrId, this.cloneStrategy, true);
15579
15619
  this.clear(id);
15580
15620
  }
15581
15621
  else {
@@ -15662,7 +15702,6 @@ class IgxHierarchicalTransactionFactory extends IgxFlatTransactionFactory {
15662
15702
  switch (type) {
15663
15703
  case ("Base" /* Base */):
15664
15704
  return new IgxHierarchicalTransactionService();
15665
- ;
15666
15705
  default:
15667
15706
  return new IgxBaseTransactionService();
15668
15707
  }
@@ -16383,105 +16422,6 @@ IgxSelectionAPIService.decorators = [
16383
16422
  },] }
16384
16423
  ];
16385
16424
 
16386
- /**
16387
- * @hidden
16388
- */
16389
- const DeprecateClass = (message) => {
16390
- let isMessageShown = false;
16391
- return (originalClass) => class extends originalClass {
16392
- constructor(...args) {
16393
- const target = originalClass;
16394
- const targetName = typeof target === 'function' ? target.name : target.constructor.name;
16395
- isMessageShown = showMessage(`${targetName}: ${message}`, isMessageShown);
16396
- super(...args);
16397
- }
16398
- };
16399
- };
16400
- /**
16401
- * @hidden
16402
- */
16403
- function DeprecateMethod(message) {
16404
- let isMessageShown = false;
16405
- return function (target, key, descriptor) {
16406
- if (descriptor && descriptor.value) {
16407
- const originalMethod = descriptor.value;
16408
- descriptor.value = function () {
16409
- const targetName = typeof target === 'function' ? target.name : target.constructor.name;
16410
- isMessageShown = showMessage(`${targetName}.${key}: ${message}`, isMessageShown);
16411
- const args = [];
16412
- for (const x of arguments) {
16413
- args.push(x);
16414
- }
16415
- return originalMethod.call(this, ...args);
16416
- };
16417
- return descriptor;
16418
- }
16419
- };
16420
- }
16421
- /**
16422
- * @hidden
16423
- */
16424
- function DeprecateProperty(message) {
16425
- return function (target, key) {
16426
- let isMessageShown = false;
16427
- const messageToDisplay = `${target.constructor.name}.${key}: ${message}`;
16428
- // if the target already has the property defined
16429
- const originalDescriptor = Object.getOwnPropertyDescriptor(target, key);
16430
- if (originalDescriptor) {
16431
- const getter = originalDescriptor.get;
16432
- const setter = originalDescriptor.set;
16433
- if (getter) {
16434
- originalDescriptor.get = function () {
16435
- isMessageShown = showMessage(messageToDisplay, isMessageShown);
16436
- return getter.call(this);
16437
- };
16438
- }
16439
- if (setter) {
16440
- originalDescriptor.set = function (value) {
16441
- isMessageShown = showMessage(messageToDisplay, isMessageShown);
16442
- setter.call(this, value);
16443
- };
16444
- }
16445
- return originalDescriptor;
16446
- }
16447
- // the target doesn't contain a descriptor for that property, so create one
16448
- // use backing field to set/get the value of the property to ensure there won't be infinite recursive calls
16449
- const newKey = generateUniqueKey(target, key);
16450
- Object.defineProperty(target, key, {
16451
- configurable: true,
16452
- enumerable: true,
16453
- set(value) {
16454
- isMessageShown = showMessage(messageToDisplay, isMessageShown);
16455
- this[newKey] = value;
16456
- },
16457
- get() {
16458
- isMessageShown = showMessage(messageToDisplay, isMessageShown);
16459
- return this[newKey];
16460
- }
16461
- });
16462
- };
16463
- }
16464
- /**
16465
- * @hidden
16466
- */
16467
- const generateUniqueKey = (target, key) => {
16468
- let newKey = '_' + key;
16469
- while (target.hasOwnProperty(newKey)) {
16470
- newKey = '_' + newKey;
16471
- }
16472
- return newKey;
16473
- };
16474
- const ɵ0$3 = generateUniqueKey;
16475
- /**
16476
- * @hidden
16477
- */
16478
- const showMessage = (message, isMessageShown) => {
16479
- if (!isMessageShown && isDevMode()) {
16480
- console.warn(message);
16481
- }
16482
- return true;
16483
- };
16484
-
16485
16425
  let NEXT_ID$t = 0;
16486
16426
  /**
16487
16427
  * The `<igx-drop-down-item>` is a container intended for row items in
@@ -16551,7 +16491,6 @@ IgxDropDownGroupComponent.propDecorators = {
16551
16491
  };
16552
16492
 
16553
16493
  let NEXT_ID$s = 0;
16554
- let warningShown = false;
16555
16494
  /**
16556
16495
  * An abstract class defining a drop-down item:
16557
16496
  * With properties / styles for selection, highlight, height
@@ -16616,8 +16555,6 @@ class IgxDropDownItemBaseDirective {
16616
16555
  */
16617
16556
  get index() {
16618
16557
  if (this._index === null) {
16619
- warningShown = showMessage('IgxDropDownItemBaseDirective: Automatic index is deprecated.' +
16620
- 'Bind in the template instead using `<igx-drop-down-item [index]="i"` instead.`', warningShown);
16621
16558
  return this.itemIndex;
16622
16559
  }
16623
16560
  return this._index;
@@ -19116,9 +19053,6 @@ IgxIconComponent.propDecorators = {
19116
19053
  getInactive: [{ type: HostBinding, args: ['class.igx-icon--inactive',] }],
19117
19054
  getColor: [{ type: HostBinding, args: ['style.color',] }]
19118
19055
  };
19119
- __decorate([
19120
- DeprecateProperty('`color` is deprecated.')
19121
- ], IgxIconComponent.prototype, "color", void 0);
19122
19056
 
19123
19057
  /**
19124
19058
  * @hidden
@@ -19394,6 +19328,10 @@ const TreeResourceStringsEN = {
19394
19328
  igx_collapse: 'Collapse',
19395
19329
  };
19396
19330
 
19331
+ const ActionStripResourceStringsEN = {
19332
+ igx_action_strip_button_more_title: 'More'
19333
+ };
19334
+
19397
19335
  /**
19398
19336
  * @hidden
19399
19337
  * IF YOU EDIT THIS OBJECT, DO NOT FORGET TO UPDATE
@@ -19417,7 +19355,8 @@ const CurrentResourceStrings = {
19417
19355
  CarouselResStrings: cloneValue(CarouselResourceStringsEN),
19418
19356
  ListResStrings: cloneValue(ListResourceStringsEN),
19419
19357
  InputResStrings: cloneValue(InputResourceStringsEN),
19420
- TreeResStrings: cloneValue(TreeResourceStringsEN)
19358
+ TreeResStrings: cloneValue(TreeResourceStringsEN),
19359
+ ActionStripResourceStrings: cloneValue(ActionStripResourceStringsEN)
19421
19360
  };
19422
19361
  const updateResourceStrings = (currentStrings, newStrings) => {
19423
19362
  for (const key of Object.keys(newStrings)) {
@@ -19440,7 +19379,7 @@ const changei18n = (resourceStrings) => {
19440
19379
  /**
19441
19380
  * Returns current resource strings for all components
19442
19381
  */
19443
- const getCurrentResourceStrings = () => (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));
19382
+ const getCurrentResourceStrings = () => (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));
19444
19383
 
19445
19384
  const IgxInputGroupTheme = mkenum({
19446
19385
  Material: 'material',
@@ -23284,10 +23223,10 @@ class IgxRadioGroupDirective {
23284
23223
  this._setRadioButtonsRequired();
23285
23224
  }
23286
23225
  /**
23287
- * An @Input property that allows you to disable the radio group. By default it's false.
23288
- *
23289
23226
  * @deprecated in version 12.2.0
23290
23227
  *
23228
+ * An input property that allows you to disable the radio group. By default it's false.
23229
+ *
23291
23230
  * @example
23292
23231
  * ```html
23293
23232
  * <igx-radio-group disabled></igx-radio-group>
@@ -23301,10 +23240,10 @@ class IgxRadioGroupDirective {
23301
23240
  this.setDisabledState(value);
23302
23241
  }
23303
23242
  /**
23304
- * Sets/gets the position of the `label` in the child radio buttons.
23305
- *
23306
23243
  * @deprecated in version 12.2.0
23307
23244
  *
23245
+ * Sets/gets the position of the `label` in the child radio buttons.
23246
+ *
23308
23247
  * @remarks
23309
23248
  * If not set, `labelPosition` will have value `"after"`.
23310
23249
  *
@@ -23554,12 +23493,6 @@ IgxRadioGroupDirective.propDecorators = {
23554
23493
  vertical: [{ type: HostBinding, args: ['class.igx-radio-group--vertical',] }],
23555
23494
  alignment: [{ type: Input }]
23556
23495
  };
23557
- __decorate([
23558
- DeprecateProperty('`disabled` is deprecated.')
23559
- ], IgxRadioGroupDirective.prototype, "disabled", null);
23560
- __decorate([
23561
- DeprecateProperty('`labelPosition` is deprecated.')
23562
- ], IgxRadioGroupDirective.prototype, "labelPosition", null);
23563
23496
  /**
23564
23497
  * @hidden
23565
23498
  */
@@ -25783,7 +25716,7 @@ class IgxGridActionButtonComponent {
25783
25716
  IgxGridActionButtonComponent.decorators = [
25784
25717
  { type: Component, args: [{
25785
25718
  selector: 'igx-grid-action-button',
25786
- 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>"
25719
+ 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>"
25787
25720
  },] }
25788
25721
  ];
25789
25722
  IgxGridActionButtonComponent.propDecorators = {
@@ -25995,8 +25928,8 @@ class IgxGridEditingActionsComponent extends IgxGridActionsBaseDirective {
25995
25928
  * @internal
25996
25929
  */
25997
25930
  registerIcons() {
25998
- this.iconService.addSvgIconFromText(addRow.name, addRow.value, 'imx-icons');
25999
- this.iconService.addSvgIconFromText(addChild.name, addChild.value, 'imx-icons');
25931
+ this.iconService.addSvgIconFromText(addRow.name, addRow.value, 'imx-icons', true);
25932
+ this.iconService.addSvgIconFromText(addChild.name, addChild.value, 'imx-icons', true);
26000
25933
  }
26001
25934
  }
26002
25935
  IgxGridEditingActionsComponent.decorators = [
@@ -26122,10 +26055,10 @@ class IgxGridPinningActionsComponent extends IgxGridActionsBaseDirective {
26122
26055
  const context = this.strip.context;
26123
26056
  const grid = context.grid;
26124
26057
  if (grid) {
26125
- this.iconService.addSvgIconFromText(pinLeft.name, pinLeft.value, 'imx-icons');
26126
- this.iconService.addSvgIconFromText(unpinLeft.name, unpinLeft.value, 'imx-icons');
26127
- this.iconService.addSvgIconFromText(jumpDown.name, jumpDown.value, 'imx-icons');
26128
- this.iconService.addSvgIconFromText(jumpUp.name, jumpDown.value, 'imx-icons');
26058
+ this.iconService.addSvgIconFromText(pinLeft.name, pinLeft.value, 'imx-icons', true);
26059
+ this.iconService.addSvgIconFromText(unpinLeft.name, unpinLeft.value, 'imx-icons', true);
26060
+ this.iconService.addSvgIconFromText(jumpDown.name, jumpDown.value, 'imx-icons', true);
26061
+ this.iconService.addSvgIconFromText(jumpUp.name, jumpDown.value, 'imx-icons', true);
26129
26062
  }
26130
26063
  }
26131
26064
  }
@@ -26205,6 +26138,21 @@ class IgxActionStripComponent extends DisplayDensityBase {
26205
26138
  get hidden() {
26206
26139
  return this._hidden;
26207
26140
  }
26141
+ /**
26142
+ * Gets/Sets the resource strings.
26143
+ *
26144
+ * @remarks
26145
+ * By default it uses EN resources.
26146
+ */
26147
+ set resourceStrings(value) {
26148
+ this._resourceStrings = Object.assign({}, this._resourceStrings, value);
26149
+ }
26150
+ get resourceStrings() {
26151
+ if (!this._resourceStrings) {
26152
+ this._resourceStrings = CurrentResourceStrings.ActionStripResourceStrings;
26153
+ }
26154
+ return this._resourceStrings;
26155
+ }
26208
26156
  /**
26209
26157
  * Getter for the 'display' property of the current `IgxActionStrip`
26210
26158
  *
@@ -26334,7 +26282,7 @@ class IgxActionStripComponent extends DisplayDensityBase {
26334
26282
  IgxActionStripComponent.decorators = [
26335
26283
  { type: Component, args: [{
26336
26284
  selector: 'igx-action-strip',
26337
- 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"
26285
+ 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"
26338
26286
  },] }
26339
26287
  ];
26340
26288
  IgxActionStripComponent.ctorParameters = () => [
@@ -26349,6 +26297,7 @@ IgxActionStripComponent.propDecorators = {
26349
26297
  actionButtons: [{ type: ContentChildren, args: [IgxGridActionsBaseDirective,] }],
26350
26298
  hidden: [{ type: Input }],
26351
26299
  hostClass: [{ type: Input, args: ['class',] }],
26300
+ resourceStrings: [{ type: Input }],
26352
26301
  menu: [{ type: ViewChild, args: ['dropdown',] }],
26353
26302
  display: [{ type: HostBinding, args: ['style.display',] }],
26354
26303
  hostClasses: [{ type: HostBinding, args: ['attr.class',] }]
@@ -43975,7 +43924,7 @@ class IgxGridSummaryService {
43975
43924
  const summaryIDs = [];
43976
43925
  let data = this.grid.data;
43977
43926
  if (this.grid.transactions.enabled) {
43978
- data = DataUtil.mergeTransactions(cloneArray(this.grid.data), this.grid.transactions.getAggregatedChanges(true), this.grid.primaryKey);
43927
+ data = DataUtil.mergeTransactions(cloneArray(this.grid.data), this.grid.transactions.getAggregatedChanges(true), this.grid.primaryKey, this.grid.dataCloneStrategy);
43979
43928
  }
43980
43929
  const rowData = this.grid.primaryKey ? data.find(rec => rec[this.grid.primaryKey] === rowID) : rowID;
43981
43930
  let id = '{ ';
@@ -48400,7 +48349,7 @@ IgxGridHeaderRowComponent.decorators = [
48400
48349
  { type: Component, args: [{
48401
48350
  changeDetection: ChangeDetectionStrategy.OnPush,
48402
48351
  selector: 'igx-grid-header-row',
48403
- 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"
48352
+ 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"
48404
48353
  },] }
48405
48354
  ];
48406
48355
  IgxGridHeaderRowComponent.ctorParameters = () => [
@@ -48580,9 +48529,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
48580
48529
  */
48581
48530
  this.gridScroll = new EventEmitter();
48582
48531
  /**
48532
+ * @deprecated in version 12.1.0. Use the corresponding output exposed by the `igx-paginator` component instead
48533
+ *
48583
48534
  * Emitted after the current page is changed.
48584
48535
  *
48585
- * @deprecated in version 12.1.0
48586
48536
  * @example
48587
48537
  * ```html
48588
48538
  * <igx-grid (pageChange)="onPageChange($event)"></igx-grid>
@@ -48595,10 +48545,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
48595
48545
  */
48596
48546
  this.pageChange = new EventEmitter();
48597
48547
  /**
48548
+ * @deprecated in version 12.1.0. Use the corresponding output exposed by the `igx-paginator` component instead
48549
+ *
48598
48550
  * Emitted when `perPage` property value of the grid is changed.
48599
48551
  *
48600
- * @deprecated in version 12.1.0
48601
- * @example
48602
48552
  * ```html
48603
48553
  * <igx-grid #grid (perPageChange)="onPerPageChange($event)" [autoGenerate]="true"></igx-grid>
48604
48554
  * ```
@@ -48615,6 +48565,8 @@ class IgxGridBaseDirective extends DisplayDensityBase {
48615
48565
  */
48616
48566
  this.class = '';
48617
48567
  /**
48568
+ * @deprecated in version 12.2.0. We suggest using `rowClasses` property instead
48569
+ *
48618
48570
  * Gets/Sets the styling classes applied to all even `IgxGridRowComponent`s in the grid.
48619
48571
  *
48620
48572
  * @example
@@ -48624,6 +48576,8 @@ class IgxGridBaseDirective extends DisplayDensityBase {
48624
48576
  */
48625
48577
  this.evenRowCSS = 'igx-grid__tr--even';
48626
48578
  /**
48579
+ * @deprecated in version 12.2.0. We suggest using `rowClasses` property instead
48580
+ *
48627
48581
  * Gets/Sets the styling classes applied to all odd `IgxGridRowComponent`s in the grid.
48628
48582
  *
48629
48583
  * @example
@@ -48878,9 +48832,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
48878
48832
  */
48879
48833
  this.filteringDone = new EventEmitter();
48880
48834
  /**
48835
+ * @deprecated in version 12.1.0. Use the corresponding output exposed by the `igx-paginator` component instead
48836
+ *
48881
48837
  * Emitted after paging is performed.
48882
48838
  *
48883
- * @deprecated in version 12.1.x
48884
48839
  * @remarks
48885
48840
  * Returns an object consisting of the previous and next pages.
48886
48841
  * @example
@@ -49363,6 +49318,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
49363
49318
  outlet: this.rowOutletDirective,
49364
49319
  positionStrategy: this.rowEditPositioningStrategy
49365
49320
  };
49321
+ this._dataCloneStrategy = new DefaultDataCloneStrategy();
49366
49322
  this.transactionChange$ = new Subject();
49367
49323
  this._rendered = false;
49368
49324
  this.DRAG_SCROLL_DELTA = 10;
@@ -49385,11 +49341,29 @@ class IgxGridBaseDirective extends DisplayDensityBase {
49385
49341
  this.currencyPipe = new CurrencyPipe(this.locale);
49386
49342
  this.percentPipe = new PercentPipe(this.locale);
49387
49343
  this._transactions = this.transactionFactory.create("None" /* None */);
49344
+ this._transactions.cloneStrategy = this.dataCloneStrategy;
49388
49345
  this.cdr.detach();
49389
49346
  }
49390
49347
  get headerGroups() {
49391
49348
  return this.theadRow.groups;
49392
49349
  }
49350
+ /**
49351
+ * Gets/Sets the data clone strategy of the grid when in edit mode.
49352
+ *
49353
+ * @example
49354
+ * ```html
49355
+ * <igx-grid #grid [data]="localData" [dataCloneStrategy]="customCloneStrategy"></igx-grid>
49356
+ * ```
49357
+ */
49358
+ get dataCloneStrategy() {
49359
+ return this._dataCloneStrategy;
49360
+ }
49361
+ set dataCloneStrategy(strategy) {
49362
+ if (strategy) {
49363
+ this._dataCloneStrategy = strategy;
49364
+ this._transactions.cloneStrategy = strategy;
49365
+ }
49366
+ }
49393
49367
  get headerContainer() {
49394
49368
  return this.theadRow.headerContainer;
49395
49369
  }
@@ -49533,9 +49507,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
49533
49507
  this.notifyChanges(true);
49534
49508
  }
49535
49509
  /**
49510
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
49511
+ *
49536
49512
  * Gets/Sets whether the paging feature is enabled.
49537
49513
  *
49538
- * @deprecated in version 12.1.x
49539
49514
  * @remarks
49540
49515
  * The default state is disabled (false).
49541
49516
  * @example
@@ -49553,9 +49528,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
49553
49528
  this.pipeTrigger++;
49554
49529
  }
49555
49530
  /**
49531
+ * @deprecated in version 12.1.0. Use `page` property form `paginator` component instead
49532
+ *
49556
49533
  * Gets/Sets the current page index.
49557
49534
  *
49558
- * @deprecated in version 12.1.x
49559
49535
  * @example
49560
49536
  * ```html
49561
49537
  * <igx-grid #grid [data]="Data" [autoGenerate]="true">
@@ -49575,9 +49551,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
49575
49551
  }
49576
49552
  }
49577
49553
  /**
49554
+ * @deprecated in version 12.1.0. Use `perPage` property from `paginator` component instead
49555
+ *
49578
49556
  * Gets/Sets the number of visible items per page.
49579
49557
  *
49580
- * @deprecated in version 12.1.x
49581
49558
  * @remarks
49582
49559
  * The default is 15.
49583
49560
  * @example
@@ -49598,9 +49575,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
49598
49575
  }
49599
49576
  }
49600
49577
  /**
49578
+ * @deprecated in version 10.1.0
49579
+ *
49601
49580
  * Gets/Sets whether the column hiding UI is enabled.
49602
49581
  *
49603
- * @deprecated
49604
49582
  * @remarks
49605
49583
  * 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.
49606
49584
  * @example
@@ -49798,9 +49776,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
49798
49776
  return this._emptyFilteredGridMessage || this.resourceStrings.igx_grid_emptyFilteredGrid_message;
49799
49777
  }
49800
49778
  /**
49801
- * Gets/Sets the title to be displayed in the built-in column hiding UI.
49779
+ * @deprecated in version 10.1.0
49802
49780
  *
49803
- * @deprecated
49781
+ * Gets/Sets the title to be displayed in the built-in column hiding UI.
49804
49782
  *
49805
49783
  * @example
49806
49784
  * ```html
@@ -49838,9 +49816,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
49838
49816
  this._pinning = value;
49839
49817
  }
49840
49818
  /**
49841
- * Gets/Sets if the built-in column pinning UI should be shown in the toolbar.
49819
+ * @deprecated in version 10.1.0
49842
49820
  *
49843
- * @deprecated
49821
+ * Gets/Sets if the built-in column pinning UI should be shown in the toolbar.
49844
49822
  *
49845
49823
  * @example
49846
49824
  * ```html
@@ -49855,9 +49833,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
49855
49833
  this.notifyChanges();
49856
49834
  }
49857
49835
  /**
49858
- * Gets/Sets the title to be displayed in the UI of the column pinning.
49836
+ * @deprecated in version 10.1.0
49859
49837
  *
49860
- * @deprecated
49838
+ * Gets/Sets the title to be displayed in the UI of the column pinning.
49861
49839
  *
49862
49840
  * @example
49863
49841
  * ```html
@@ -50304,9 +50282,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
50304
50282
  return this.pinnedColumns.filter(col => !col.columnLayout).length;
50305
50283
  }
50306
50284
  /**
50307
- * Gets/Sets the text to be displayed inside the toggle button.
50285
+ * @deprecated in version 10.1.0
50308
50286
  *
50309
- * @deprecated
50287
+ * Gets/Sets the text to be displayed inside the toggle button.
50310
50288
  *
50311
50289
  * @remarks
50312
50290
  * Used for the built-in column hiding UI of the`IgxColumnComponent`.
@@ -50315,7 +50293,6 @@ class IgxGridBaseDirective extends DisplayDensityBase {
50315
50293
  * <igx-grid [columnHiding]="true" [showToolbar]="true" [hiddenColumnsText]="'Hidden Columns'"></igx-grid>
50316
50294
  * ```
50317
50295
  */
50318
- // @DeprecateProperty('`hiddenColumnsText` is deprecated')
50319
50296
  get hiddenColumnsText() {
50320
50297
  return this._hiddenColumnsText;
50321
50298
  }
@@ -50324,9 +50301,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
50324
50301
  this.notifyChanges();
50325
50302
  }
50326
50303
  /**
50327
- * Gets/Sets the text to be displayed inside the toggle button.
50304
+ * @deprecated in version 10.1.0
50328
50305
  *
50329
- * @deprecated
50306
+ * Gets/Sets the text to be displayed inside the toggle button.
50330
50307
  *
50331
50308
  * @remarks
50332
50309
  * Used for the built-in column pinning UI of the`IgxColumnComponent`.
@@ -50396,9 +50373,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
50396
50373
  return this._currencyPositionLeft = i < 1;
50397
50374
  }
50398
50375
  /**
50399
- * Gets/Sets whether the toolbar is shown.
50376
+ * @deprecated in version 11.0.0
50400
50377
  *
50401
- * @deprecated
50378
+ * Gets/Sets whether the toolbar is shown.
50402
50379
  *
50403
50380
  * @example
50404
50381
  * ```html
@@ -50412,9 +50389,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
50412
50389
  this._showToolbar = newValue;
50413
50390
  }
50414
50391
  /**
50415
- * Gets/Sets the toolbar's title.
50392
+ * @deprecated in version 11.0.0
50416
50393
  *
50417
- * @deprecated
50394
+ * Gets/Sets the toolbar's title.
50418
50395
  *
50419
50396
  * @example
50420
50397
  * ```html
@@ -50429,9 +50406,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
50429
50406
  this.notifyChanges();
50430
50407
  }
50431
50408
  /**
50432
- * Gets/Sets whether exporting to MS Excel is enabled or disabled.
50409
+ * @deprecated `exportExcel` is deprecated
50433
50410
  *
50434
- * @deprecated
50411
+ * Gets/Sets whether exporting to MS Excel is enabled or disabled.
50435
50412
  *
50436
50413
  * @example
50437
50414
  * ```html
@@ -50446,9 +50423,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
50446
50423
  this.notifyChanges();
50447
50424
  }
50448
50425
  /**
50449
- * Gets/Sets whether the option for exporting to CSV is enabled or disabled.
50426
+ * @deprecated `exportCsv` is deprecated
50450
50427
  *
50451
- * @deprecated
50428
+ * Gets/Sets whether the option for exporting to CSV is enabled or disabled.
50452
50429
  *
50453
50430
  * ```html
50454
50431
  * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" [exportCsv]="true"></igx-grid>
@@ -50462,9 +50439,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
50462
50439
  this.notifyChanges();
50463
50440
  }
50464
50441
  /**
50465
- * Gets/Sets the textual content for the main export button.
50442
+ * @deprecated `exportText` is deprecated
50466
50443
  *
50467
- * @deprecated
50444
+ * Gets/Sets the textual content for the main export button.
50468
50445
  *
50469
50446
  * @example
50470
50447
  * ```html
@@ -50479,9 +50456,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
50479
50456
  this.notifyChanges();
50480
50457
  }
50481
50458
  /**
50482
- * Gets/Sets the textual content for the MS Excel export button.
50459
+ * @deprecated `exportExcelText` is deprecated
50483
50460
  *
50484
- * @deprecated
50461
+ * Gets/Sets the textual content for the MS Excel export button.
50485
50462
  *
50486
50463
  * ```html
50487
50464
  * <igx-grid [exportExcelText]="'My Excel Exporter" [showToolbar]="true" [exportText]="'My Exporter'" [exportCsv]="true"></igx-grid>
@@ -50495,9 +50472,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
50495
50472
  this.notifyChanges();
50496
50473
  }
50497
50474
  /**
50498
- * Gets/Sets the textual content for the CSV export button.
50475
+ * @deprecated `exportCsvText` is deprecated
50499
50476
  *
50500
- * @deprecated
50477
+ * Gets/Sets the textual content for the CSV export button.
50501
50478
  *
50502
50479
  * @example
50503
50480
  * ```html
@@ -51591,9 +51568,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
51591
51568
  return this._visibleColumns;
51592
51569
  }
51593
51570
  /**
51571
+ * @deprecated in version 12.1.0. Use the corresponding property exposed by the `igx-paginator`
51572
+ *
51594
51573
  * Gets the total number of pages.
51595
51574
  *
51596
- * @deprecated in version 12.1.0
51597
51575
  * @example
51598
51576
  * ```typescript
51599
51577
  * const totalPages = this.grid.totalPages;
@@ -51604,9 +51582,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
51604
51582
  return (_a = this.paginator) === null || _a === void 0 ? void 0 : _a.totalPages;
51605
51583
  }
51606
51584
  /**
51585
+ * @deprecated in version 12.1.0. Use the corresponding property exposed by the `igx-paginator`
51586
+ *
51607
51587
  * Gets if the current page is the first page.
51608
51588
  *
51609
- * @deprecated in version 12.1.0
51610
51589
  * @example
51611
51590
  * ```typescript
51612
51591
  * const firstPage = this.grid.isFirstPage;
@@ -51616,9 +51595,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
51616
51595
  return this.paginator.isLastPage;
51617
51596
  }
51618
51597
  /**
51598
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
51599
+ *
51619
51600
  * Goes to the next page, if the grid is not already at the last page.
51620
51601
  *
51621
- * @deprecated in version 12.1.0
51622
51602
  * @example
51623
51603
  * ```typescript
51624
51604
  * this.grid1.nextPage();
@@ -51630,9 +51610,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
51630
51610
  (_a = this.paginator) === null || _a === void 0 ? void 0 : _a.nextPage();
51631
51611
  }
51632
51612
  /**
51613
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
51614
+ *
51633
51615
  * Goes to the previous page, if the grid is not already at the first page.
51634
51616
  *
51635
- * @deprecated in version 12.1.0
51636
51617
  * @example
51637
51618
  * ```typescript
51638
51619
  * this.grid1.previousPage();
@@ -51668,9 +51649,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
51668
51649
  }
51669
51650
  }
51670
51651
  /**
51652
+ * @deprecated in version 12.1.0. Use the corresponding property exposed by the `igx-paginator`
51653
+ *
51671
51654
  * Returns if the current page is the last page.
51672
51655
  *
51673
- * @deprecated in version 12.1.0
51674
51656
  * @example
51675
51657
  * ```typescript
51676
51658
  * const lastPage = this.grid.isLastPage;
@@ -51767,6 +51749,8 @@ class IgxGridBaseDirective extends DisplayDensityBase {
51767
51749
  this._columnsReordered(column);
51768
51750
  }
51769
51751
  /**
51752
+ * @deprecated in version 12.1.0. Use the corresponding method exposed by the `igx-paginator`
51753
+ *
51770
51754
  * Goes to the desired page index.
51771
51755
  *
51772
51756
  * @example
@@ -52956,6 +52940,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
52956
52940
  if (!this.clipboardOptions.copyHeaders) {
52957
52941
  result = result.substring(result.indexOf('\n') + 1);
52958
52942
  }
52943
+ if (Object.values(data[0]).length === 1) {
52944
+ result = result.slice(0, -2);
52945
+ }
52959
52946
  event.preventDefault();
52960
52947
  /* Necessary for the hiearachical case but will probably have to
52961
52948
  change how getSelectedData is propagated in the hiearachical grid
@@ -53363,6 +53350,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
53363
53350
  else {
53364
53351
  this._transactions = this.transactionFactory.create("None" /* None */);
53365
53352
  }
53353
+ if (this.dataCloneStrategy) {
53354
+ this._transactions.cloneStrategy = this.dataCloneStrategy;
53355
+ }
53366
53356
  }
53367
53357
  subscribeToTransactions() {
53368
53358
  this.transactionChange$.next();
@@ -54624,6 +54614,7 @@ IgxGridBaseDirective.propDecorators = {
54624
54614
  primaryKey: [{ type: Input }],
54625
54615
  uniqueColumnValuesStrategy: [{ type: Input }],
54626
54616
  excelStyleFilteringComponents: [{ type: ContentChildren, args: [IgxGridExcelStyleFilteringComponent, { read: IgxGridExcelStyleFilteringComponent, descendants: false },] }],
54617
+ dataCloneStrategy: [{ type: Input }],
54627
54618
  cellClick: [{ type: Output }],
54628
54619
  selected: [{ type: Output }],
54629
54620
  rowSelected: [{ type: Output }],
@@ -54778,24 +54769,9 @@ IgxGridBaseDirective.propDecorators = {
54778
54769
  totalRecords: [{ type: Input }],
54779
54770
  selectRowOnClick: [{ type: Input }]
54780
54771
  };
54781
- __decorate([
54782
- DeprecateProperty('`pageChange` is deprecated. Use the corresponding output exposed by the `igx-paginator` component instead.')
54783
- ], IgxGridBaseDirective.prototype, "pageChange", void 0);
54784
- __decorate([
54785
- DeprecateProperty('`perPageChange` is deprecated. Use the corresponding output exposed by the `igx-paginator` component instead.')
54786
- ], IgxGridBaseDirective.prototype, "perPageChange", void 0);
54787
- __decorate([
54788
- DeprecateProperty('`evenRowCSS` is deprecated. We suggest using `rowClasses` property instead.')
54789
- ], IgxGridBaseDirective.prototype, "evenRowCSS", void 0);
54790
- __decorate([
54791
- DeprecateProperty('`oddRowCSS` is deprecated. We suggest using `rowClasses` property instead.')
54792
- ], IgxGridBaseDirective.prototype, "oddRowCSS", void 0);
54793
54772
  __decorate([
54794
54773
  WatchChanges()
54795
54774
  ], IgxGridBaseDirective.prototype, "primaryKey", void 0);
54796
- __decorate([
54797
- DeprecateProperty('`pagingDone` is deprecated. Use the corresponding output exposed by the `igx-paginator` component instead.')
54798
- ], IgxGridBaseDirective.prototype, "pagingDone", void 0);
54799
54775
  __decorate([
54800
54776
  WatchChanges()
54801
54777
  ], IgxGridBaseDirective.prototype, "filteringLogic", null);
@@ -54805,18 +54781,6 @@ __decorate([
54805
54781
  __decorate([
54806
54782
  WatchChanges()
54807
54783
  ], IgxGridBaseDirective.prototype, "advancedFilteringExpressionsTree", null);
54808
- __decorate([
54809
- DeprecateProperty('`paging` is deprecated')
54810
- ], IgxGridBaseDirective.prototype, "paging", null);
54811
- __decorate([
54812
- DeprecateProperty('`page` is deprecated. Use `page` property form `paginator` component instead.')
54813
- ], IgxGridBaseDirective.prototype, "page", null);
54814
- __decorate([
54815
- DeprecateProperty('`perPage` is deprecated. Use `perPage` property from `paginator` component instead.')
54816
- ], IgxGridBaseDirective.prototype, "perPage", null);
54817
- __decorate([
54818
- DeprecateProperty('`columnHiding` is deprecated.')
54819
- ], IgxGridBaseDirective.prototype, "columnHiding", null);
54820
54784
  __decorate([
54821
54785
  WatchChanges()
54822
54786
  ], IgxGridBaseDirective.prototype, "hideRowSelectors", null);
@@ -54838,42 +54802,9 @@ __decorate([
54838
54802
  __decorate([
54839
54803
  WatchChanges()
54840
54804
  ], IgxGridBaseDirective.prototype, "isLoading", null);
54841
- __decorate([
54842
- DeprecateProperty('`columnHidingTitle` is deprecated')
54843
- ], IgxGridBaseDirective.prototype, "columnHidingTitle", null);
54844
- __decorate([
54845
- DeprecateProperty('`columnPinning` is deprecated')
54846
- ], IgxGridBaseDirective.prototype, "columnPinning", null);
54847
- __decorate([
54848
- DeprecateProperty('`columnPinningTitle` is deprecated')
54849
- ], IgxGridBaseDirective.prototype, "columnPinningTitle", null);
54850
54805
  __decorate([
54851
54806
  WatchChanges()
54852
54807
  ], IgxGridBaseDirective.prototype, "sortingExpressions", null);
54853
- __decorate([
54854
- DeprecateProperty('`pinnedColumnsText` is deprecated')
54855
- ], IgxGridBaseDirective.prototype, "pinnedColumnsText", null);
54856
- __decorate([
54857
- DeprecateProperty('`showToolbar` is deprecated')
54858
- ], IgxGridBaseDirective.prototype, "showToolbar", null);
54859
- __decorate([
54860
- DeprecateProperty('`toolbarTitle` is deprecated')
54861
- ], IgxGridBaseDirective.prototype, "toolbarTitle", null);
54862
- __decorate([
54863
- DeprecateProperty('`exportExcel` is deprecated')
54864
- ], IgxGridBaseDirective.prototype, "exportExcel", null);
54865
- __decorate([
54866
- DeprecateProperty('`exportCsv` is deprecated')
54867
- ], IgxGridBaseDirective.prototype, "exportCsv", null);
54868
- __decorate([
54869
- DeprecateProperty('`exportText` is deprecated')
54870
- ], IgxGridBaseDirective.prototype, "exportText", null);
54871
- __decorate([
54872
- DeprecateProperty('`exportExcelText` is deprecated')
54873
- ], IgxGridBaseDirective.prototype, "exportExcelText", null);
54874
- __decorate([
54875
- DeprecateProperty('`exportCsvText` is deprecated')
54876
- ], IgxGridBaseDirective.prototype, "exportCsvText", null);
54877
54808
  __decorate([
54878
54809
  WatchChanges()
54879
54810
  ], IgxGridBaseDirective.prototype, "cellSelection", null);
@@ -54883,24 +54814,6 @@ __decorate([
54883
54814
  __decorate([
54884
54815
  WatchChanges()
54885
54816
  ], IgxGridBaseDirective.prototype, "columnSelection", null);
54886
- __decorate([
54887
- DeprecateProperty('`totalPages` is deprecated. Use the corresponding property exposed by the `igx-paginator`.')
54888
- ], IgxGridBaseDirective.prototype, "totalPages", null);
54889
- __decorate([
54890
- DeprecateProperty('`isFirstPage` is deprecated. Use the corresponding property exposed by the `igx-paginator`.')
54891
- ], IgxGridBaseDirective.prototype, "isFirstPage", null);
54892
- __decorate([
54893
- DeprecateMethod('Use the corresponding method exposed by the `igx-paginator`.')
54894
- ], IgxGridBaseDirective.prototype, "nextPage", null);
54895
- __decorate([
54896
- DeprecateMethod('Use the corresponding method exposed by the `igx-paginator`.')
54897
- ], IgxGridBaseDirective.prototype, "previousPage", null);
54898
- __decorate([
54899
- DeprecateProperty('`isLastPage` is deprecated. Use the corresponding property exposed by the `igx-paginator`.')
54900
- ], IgxGridBaseDirective.prototype, "isLastPage", null);
54901
- __decorate([
54902
- DeprecateMethod('Use the corresponding method exposed by the `igx-paginator`.')
54903
- ], IgxGridBaseDirective.prototype, "paginate", null);
54904
54817
  __decorate([
54905
54818
  WatchChanges()
54906
54819
  ], IgxGridBaseDirective.prototype, "selectRowOnClick", null);
@@ -54929,6 +54842,18 @@ class BaseRow {
54929
54842
  const primaryKey = this.grid.primaryKey;
54930
54843
  return primaryKey ? data[primaryKey] : data;
54931
54844
  }
54845
+ /**
54846
+ * Gets if this represents add row UI
54847
+ *
54848
+ * ```typescript
54849
+ * let isAddRow = row.addRowUI;
54850
+ * ```
54851
+ */
54852
+ get addRowUI() {
54853
+ return !!this.grid.crudService.row &&
54854
+ this.grid.crudService.row.getClassName() === IgxAddRow.name &&
54855
+ this.grid.crudService.row.id === this.key;
54856
+ }
54932
54857
  /**
54933
54858
  * The data record that populates the row.
54934
54859
  *
@@ -54939,7 +54864,7 @@ class BaseRow {
54939
54864
  get data() {
54940
54865
  var _a, _b;
54941
54866
  if (this.inEditMode) {
54942
- return mergeWith(cloneValue((_a = this._data) !== null && _a !== void 0 ? _a : this.grid.dataView[this.index]), this.grid.transactions.getAggregatedValue(this.key, false), (objValue, srcValue) => {
54867
+ return mergeWith(this.grid.dataCloneStrategy.clone((_a = this._data) !== null && _a !== void 0 ? _a : this.grid.dataView[this.index]), this.grid.transactions.getAggregatedValue(this.key, false), (objValue, srcValue) => {
54943
54868
  if (Array.isArray(srcValue)) {
54944
54869
  return objValue = srcValue;
54945
54870
  }
@@ -54948,7 +54873,7 @@ class BaseRow {
54948
54873
  return (_b = this._data) !== null && _b !== void 0 ? _b : this.grid.dataView[this.index];
54949
54874
  }
54950
54875
  /**
54951
- * @deprecated Use 'data' instead.
54876
+ * @deprecated Use 'data' instead
54952
54877
  *
54953
54878
  * The data record that populates the row
54954
54879
  */
@@ -54956,8 +54881,7 @@ class BaseRow {
54956
54881
  return this.data;
54957
54882
  }
54958
54883
  /**
54959
- * @deprecated Use 'key' instead.
54960
- *
54884
+ * @deprecated Use 'key' instead
54961
54885
  */
54962
54886
  get rowID() {
54963
54887
  return this.key;
@@ -55126,12 +55050,6 @@ class BaseRow {
55126
55050
  this.grid.deleteRowById(this.key);
55127
55051
  }
55128
55052
  }
55129
- __decorate([
55130
- DeprecateProperty(`'rowData' property is deprecated. Use 'data' instead.`)
55131
- ], BaseRow.prototype, "rowData", null);
55132
- __decorate([
55133
- DeprecateProperty(`'rowID' property is deprecated. Use 'key' instead.`)
55134
- ], BaseRow.prototype, "rowID", null);
55135
55053
  class IgxGridRow extends BaseRow {
55136
55054
  /**
55137
55055
  * @hidden
@@ -55242,7 +55160,7 @@ class IgxTreeGridRow extends BaseRow {
55242
55160
  get data() {
55243
55161
  var _a;
55244
55162
  if (this.inEditMode) {
55245
- return mergeWith(cloneValue((_a = this._data) !== null && _a !== void 0 ? _a : this.grid.dataView[this.index]), this.grid.transactions.getAggregatedValue(this.key, false), (objValue, srcValue) => {
55163
+ return mergeWith(this.grid.dataCloneStrategy.clone((_a = this._data) !== null && _a !== void 0 ? _a : this.grid.dataView[this.index]), this.grid.transactions.getAggregatedValue(this.key, false), (objValue, srcValue) => {
55246
55164
  if (Array.isArray(srcValue)) {
55247
55165
  return objValue = srcValue;
55248
55166
  }
@@ -56128,17 +56046,6 @@ class IgxGridCellComponent {
56128
56046
  get currencyCodeSymbol() {
56129
56047
  return getCurrencySymbol(this.currencyCode, 'wide', this.grid.locale);
56130
56048
  }
56131
- /**
56132
- * @deprecated
56133
- * Gets whether the cell is selected.
56134
- * ```typescript
56135
- * let isCellSelected = thid.cell.isCellSelected();
56136
- * ```
56137
- * @memberof IgxGridCellComponent
56138
- */
56139
- isCellSelected() {
56140
- return this.selectionService.selected(this.selectionNode);
56141
- }
56142
56049
  /**
56143
56050
  * @hidden
56144
56051
  * @internal
@@ -56443,9 +56350,6 @@ IgxGridCellComponent.propDecorators = {
56443
56350
  onClick: [{ type: HostListener, args: ['click', ['$event'],] }],
56444
56351
  onContextMenu: [{ type: HostListener, args: ['contextmenu', ['$event'],] }]
56445
56352
  };
56446
- __decorate([
56447
- DeprecateMethod(`'isCellSelected' is deprecated. Use 'selected' property instead.`)
56448
- ], IgxGridCellComponent.prototype, "isCellSelected", null);
56449
56353
 
56450
56354
  class IgxGridFooterComponent {
56451
56355
  }
@@ -56824,9 +56728,10 @@ class IgxColumnActionsComponent {
56824
56728
  this._differ = this.differs.find([]).create(this.trackChanges);
56825
56729
  }
56826
56730
  /**
56731
+ * @deprecated Use grid input instead.
56732
+ *
56827
56733
  * Gets the grid columns to provide an action for.
56828
56734
  *
56829
- * @deprecated
56830
56735
  * @example
56831
56736
  * ```typescript
56832
56737
  * let gridColumns = this.columnActions.columns;
@@ -57066,9 +56971,6 @@ IgxColumnActionsComponent.propDecorators = {
57066
56971
  checkAllText: [{ type: Input }],
57067
56972
  id: [{ type: HostBinding, args: ['attr.id',] }, { type: Input }]
57068
56973
  };
57069
- __decorate([
57070
- DeprecateProperty(`Deprecated. Use 'grid' input instead.`)
57071
- ], IgxColumnActionsComponent.prototype, "columns", null);
57072
56974
 
57073
56975
  /**
57074
56976
  * @hidden
@@ -57243,7 +57145,7 @@ class IgxGridTransactionPipe {
57243
57145
  transform(collection, _id, _pipeTrigger) {
57244
57146
  const grid = this.gridAPI.grid;
57245
57147
  if (grid.transactions.enabled) {
57246
- const result = DataUtil.mergeTransactions(cloneArray(collection), grid.transactions.getAggregatedChanges(true), grid.primaryKey);
57148
+ const result = DataUtil.mergeTransactions(cloneArray(collection), grid.transactions.getAggregatedChanges(true), grid.primaryKey, grid.dataCloneStrategy);
57247
57149
  return result;
57248
57150
  }
57249
57151
  return collection;
@@ -61325,6 +61227,22 @@ class IgxGridComponent extends IgxGridBaseDirective {
61325
61227
  }
61326
61228
  this._hideGroupedColumns = value;
61327
61229
  }
61230
+ /**
61231
+ * Gets/Sets the grouping strategy of the grid.
61232
+ *
61233
+ * @remarks The default IgxGrouping extends from IgxSorting and a custom one can be used as a `sortStrategy` as well.
61234
+ *
61235
+ * @example
61236
+ * ```html
61237
+ * <igx-grid #grid [data]="localData" [groupStrategy]="groupStrategy"></igx-grid>
61238
+ * ```
61239
+ */
61240
+ get groupStrategy() {
61241
+ return this._groupStrategy;
61242
+ }
61243
+ set groupStrategy(value) {
61244
+ this._groupStrategy = value;
61245
+ }
61328
61246
  /**
61329
61247
  * Gets/Sets the message displayed inside the GroupBy drop area where columns can be dragged on.
61330
61248
  *
@@ -61345,7 +61263,8 @@ class IgxGridComponent extends IgxGridBaseDirective {
61345
61263
  return this._dropAreaMessage || this.resourceStrings.igx_grid_groupByArea_message;
61346
61264
  }
61347
61265
  /**
61348
- * @deprecated
61266
+ * @deprecated in version 12.1.0. Use `getCellByColumn` or `getCellByKey` instead
61267
+ *
61349
61268
  * Returns a `CellType` object that matches the conditions.
61350
61269
  *
61351
61270
  * @example
@@ -62077,7 +61996,7 @@ IgxGridComponent.decorators = [
62077
61996
  IgxForOfScrollSyncService
62078
61997
  ],
62079
61998
  selector: 'igx-grid',
62080
- template: "<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar\"></ng-content>\n\n<!-- Group-by area -->\n<ng-container *ngIf=\"showGroupArea && (groupingExpressions.length > 0 || hasGroupableColumns)\">\n <igx-grid-group-by-area #groupArea [style.flex-basis.px]='outerWidth'\n [grid]=\"this\"\n [expressions]=\"groupingExpressions\"\n [sortingExpressions]=\"sortingExpressions\"\n [density]=\"displayDensity\"\n [dropAreaTemplate]=\"dropAreaTemplate\"\n [dropAreaMessage]=\"dropAreaMessage\"\n >\n </igx-grid-group-by-area>\n</ng-container>\n\n<!-- Grid table head row area -->\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [density]=\"displayDensity\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)='preventContainerScroll($event)'\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth || null' #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf='data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData'>\n <div #pinContainer *ngIf='pinnedData.length > 0'\n [ngClass]=\"{\n 'igx-grid__tr--pinned-bottom': !isRowPinningToTop,\n 'igx-grid__tr--pinned-top': isRowPinningToTop\n }\"\n class='igx-grid__tr--pinned' [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData; let rowIndex = index\">\n <ng-container *ngTemplateOutlet=\"pinned_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger\n | gridGroupBy:groupingExpressions:groupingExpansionState:groupsExpanded:id:groupsRecords:pipeTrigger\n | gridPaging:paginator?.page:paginator?.perPage:id:pipeTrigger\n | gridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:id:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger\n | gridDetails:hasDetails:expansionStates:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight'\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxForTrackBy]='trackChanges'\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\">\n <ng-template\n [igxTemplateOutlet]='getRowTemplate(rowData)'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex)'\n (cachedViewLoaded)='cachedViewLoaded($event)'\n (viewCreated)='viewCreatedHandler($event)'\n (viewMoved)='viewMovedHandler($event)'>\n </ng-template>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData let-disabledRow=\"disabled\">\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\" [disabled]=\"disabledRow\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-grid-row>\n </ng-template>\n <ng-template #pinned_record_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\"#row #pinnedRow>\n </igx-grid-row>\n </ng-template>\n <ng-template #group_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-groupby-row [gridID]=\"id\" [index]=\"rowIndex\" [groupRow]=\"rowData\" [hideGroupRowSelectors]=\"hideRowSelectors\" [rowDraggable]=\"rowDraggable\" #row>\n </igx-grid-groupby-row>\n </ng-template>\n <ng-template #summary_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-summary-row role=\"row\" [gridID]=\"id\" [summaries]=\"rowData.summaries\" [index]=\"rowIndex\"\n class=\"igx-grid__summaries--body\" #summaryRow>\n </igx-grid-summary-row>\n </ng-template>\n <ng-template #detail_template_container let-rowIndex=\"index\" let-rowData>\n <div detail='true' style=\"overflow: auto; width: 100%;\" id=\"{{id}}_{{rowIndex}}\" (pointerdown)='detailsViewFocused(detailsContainer, rowIndex)' #detailsContainer [attr.data-rowindex]='rowIndex'\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr-container--active': isDetailActive(rowIndex)\n }\">\n <div class=\"igx-grid__hierarchical-indent\" style='display: flex;'>\n <ng-container *ngIf=\"this.groupingExpressions.length > 0\">\n <div class=\"igx-grid__row-indentation igx-grid__row-indentation--level-{{groupingExpressions.length}}\"></div>\n </ng-container>\n <ng-template\n [ngTemplateOutlet]='detailTemplate'\n [ngTemplateOutletContext]='getDetailsContext(rowData, rowIndex)'>\n </ng-template>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" (keydown)=\"navigation.summaryNav($event)\" [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='EMPTY_DATA' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-container *ngIf=\"totalRecords || pagingMode === 1\">\n <ng-content select=\"igx-paginator\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_less</igx-icon>\n</ng-template>\n\n <ng-template #defaultCollapsedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_more</igx-icon>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"rowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : rowEditText ? rowEditText : defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"rowEditActions ? rowEditActions : defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n"
61999
+ template: "<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar\"></ng-content>\n\n<!-- Group-by area -->\n<ng-container *ngIf=\"showGroupArea && (groupingExpressions.length > 0 || hasGroupableColumns)\">\n <igx-grid-group-by-area #groupArea [style.flex-basis.px]='outerWidth'\n [grid]=\"this\"\n [expressions]=\"groupingExpressions\"\n [sortingExpressions]=\"sortingExpressions\"\n [density]=\"displayDensity\"\n [dropAreaTemplate]=\"dropAreaTemplate\"\n [dropAreaMessage]=\"dropAreaMessage\"\n >\n </igx-grid-group-by-area>\n</ng-container>\n\n<!-- Grid table head row area -->\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [density]=\"displayDensity\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)='preventContainerScroll($event)'\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth || null' #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf='data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData'>\n <div #pinContainer *ngIf='pinnedData.length > 0'\n [ngClass]=\"{\n 'igx-grid__tr--pinned-bottom': !isRowPinningToTop,\n 'igx-grid__tr--pinned-top': isRowPinningToTop\n }\"\n class='igx-grid__tr--pinned' [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData; let rowIndex = index\">\n <ng-container *ngTemplateOutlet=\"pinned_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger\n | gridGroupBy:groupingExpressions:groupingExpansionState:groupStrategy:groupsExpanded:id:groupsRecords:pipeTrigger\n | gridPaging:paginator?.page:paginator?.perPage:id:pipeTrigger\n | gridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:id:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger\n | gridDetails:hasDetails:expansionStates:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight'\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxForTrackBy]='trackChanges'\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\">\n <ng-template\n [igxTemplateOutlet]='getRowTemplate(rowData)'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex)'\n (cachedViewLoaded)='cachedViewLoaded($event)'\n (viewCreated)='viewCreatedHandler($event)'\n (viewMoved)='viewMovedHandler($event)'>\n </ng-template>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData let-disabledRow=\"disabled\">\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\" [disabled]=\"disabledRow\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-grid-row>\n </ng-template>\n <ng-template #pinned_record_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\"#row #pinnedRow>\n </igx-grid-row>\n </ng-template>\n <ng-template #group_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-groupby-row [gridID]=\"id\" [index]=\"rowIndex\" [groupRow]=\"rowData\" [hideGroupRowSelectors]=\"hideRowSelectors\" [rowDraggable]=\"rowDraggable\" #row>\n </igx-grid-groupby-row>\n </ng-template>\n <ng-template #summary_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-summary-row role=\"row\" [gridID]=\"id\" [summaries]=\"rowData.summaries\" [index]=\"rowIndex\"\n class=\"igx-grid__summaries--body\" #summaryRow>\n </igx-grid-summary-row>\n </ng-template>\n <ng-template #detail_template_container let-rowIndex=\"index\" let-rowData>\n <div detail='true' style=\"overflow: auto; width: 100%;\" id=\"{{id}}_{{rowIndex}}\" (pointerdown)='detailsViewFocused(detailsContainer, rowIndex)' #detailsContainer [attr.data-rowindex]='rowIndex'\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr-container--active': isDetailActive(rowIndex)\n }\">\n <div class=\"igx-grid__hierarchical-indent\" style='display: flex;'>\n <ng-container *ngIf=\"this.groupingExpressions.length > 0\">\n <div class=\"igx-grid__row-indentation igx-grid__row-indentation--level-{{groupingExpressions.length}}\"></div>\n </ng-container>\n <ng-template\n [ngTemplateOutlet]='detailTemplate'\n [ngTemplateOutletContext]='getDetailsContext(rowData, rowIndex)'>\n </ng-template>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" (keydown)=\"navigation.summaryNav($event)\" [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='EMPTY_DATA' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-container *ngIf=\"totalRecords || pagingMode === 1\">\n <ng-content select=\"igx-paginator\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_less</igx-icon>\n</ng-template>\n\n <ng-template #defaultCollapsedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_more</igx-icon>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"rowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : rowEditText ? rowEditText : defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"rowEditActions ? rowEditActions : defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n"
62081
62000
  },] }
62082
62001
  ];
62083
62002
  IgxGridComponent.propDecorators = {
@@ -62103,12 +62022,10 @@ IgxGridComponent.propDecorators = {
62103
62022
  groupingExpressions: [{ type: Input }],
62104
62023
  groupingExpansionState: [{ type: Input }],
62105
62024
  hideGroupedColumns: [{ type: Input }],
62025
+ groupStrategy: [{ type: Input }],
62106
62026
  dropAreaMessage: [{ type: Input }],
62107
62027
  showGroupArea: [{ type: Input }]
62108
62028
  };
62109
- __decorate([
62110
- DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
62111
- ], IgxGridComponent.prototype, "getCellByColumnVisibleIndex", null);
62112
62029
 
62113
62030
  class IgxGridStateDirective {
62114
62031
  /**
@@ -63625,7 +63542,7 @@ class IgxGridGroupingPipe {
63625
63542
  constructor(gridAPI) {
63626
63543
  this.gridAPI = gridAPI;
63627
63544
  }
63628
- transform(collection, expression, expansion, defaultExpanded, id, groupsRecords, _pipeTrigger) {
63545
+ transform(collection, expression, expansion, groupingStrategy, defaultExpanded, id, groupsRecords, _pipeTrigger) {
63629
63546
  const state = { expressions: [], expansion: [], defaultExpanded };
63630
63547
  const grid = this.gridAPI.grid;
63631
63548
  state.expressions = grid.groupingExpressions;
@@ -63642,7 +63559,7 @@ class IgxGridGroupingPipe {
63642
63559
  else {
63643
63560
  state.expansion = grid.groupingExpansionState;
63644
63561
  state.defaultExpanded = grid.groupsExpanded;
63645
- result = DataUtil.group(cloneArray(collection), state, grid, groupsRecords, fullResult);
63562
+ result = DataUtil.group(cloneArray(collection), state, groupingStrategy, grid, groupsRecords, fullResult);
63646
63563
  }
63647
63564
  grid.groupingFlatResult = result.data;
63648
63565
  grid.groupingResult = fullResult.data;
@@ -64911,7 +64828,8 @@ class IgxTreeGridComponent extends IgxGridBaseDirective {
64911
64828
  return this.gridAPI;
64912
64829
  }
64913
64830
  /**
64914
- * @deprecated
64831
+ * @deprecated in version 12.1.0. Use `getCellByColumn` or `getCellByKey` instead
64832
+ *
64915
64833
  * Returns a `CellType` object that matches the conditions.
64916
64834
  *
64917
64835
  * @example
@@ -65571,9 +65489,6 @@ IgxTreeGridComponent.propDecorators = {
65571
65489
  expansionDepth: [{ type: Input }],
65572
65490
  rowLoadingIndicatorTemplate: [{ type: Input }]
65573
65491
  };
65574
- __decorate([
65575
- DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
65576
- ], IgxTreeGridComponent.prototype, "getCellByColumnVisibleIndex", null);
65577
65492
 
65578
65493
  class IgxTreeGridRowComponent extends IgxRowDirective {
65579
65494
  /**
@@ -65948,11 +65863,11 @@ class IgxTreeGridTransactionPipe {
65948
65863
  const childDataKey = grid.childDataKey;
65949
65864
  if (foreignKey) {
65950
65865
  const flatDataClone = cloneArray(collection);
65951
- return DataUtil.mergeTransactions(flatDataClone, aggregatedChanges, grid.primaryKey);
65866
+ return DataUtil.mergeTransactions(flatDataClone, aggregatedChanges, grid.primaryKey, grid.dataCloneStrategy);
65952
65867
  }
65953
65868
  else if (childDataKey) {
65954
65869
  const hierarchicalDataClone = cloneHierarchicalArray(collection, childDataKey);
65955
- return DataUtil.mergeHierarchicalTransactions(hierarchicalDataClone, aggregatedChanges, childDataKey, grid.primaryKey);
65870
+ return DataUtil.mergeHierarchicalTransactions(hierarchicalDataClone, aggregatedChanges, childDataKey, grid.primaryKey, grid.dataCloneStrategy);
65956
65871
  }
65957
65872
  }
65958
65873
  }
@@ -67774,7 +67689,8 @@ class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective {
67774
67689
  return this._defaultExpandState;
67775
67690
  }
67776
67691
  /**
67777
- * @deprecated
67692
+ * @deprecated in version 12.1.0. Use `getCellByColumn` or `getCellByKey` instead
67693
+ *
67778
67694
  * Returns a `CellType` object that matches the conditions.
67779
67695
  *
67780
67696
  * @example
@@ -68419,9 +68335,6 @@ IgxHierarchicalGridComponent.propDecorators = {
68419
68335
  data: [{ type: Input }],
68420
68336
  expandChildren: [{ type: Input }]
68421
68337
  };
68422
- __decorate([
68423
- DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
68424
- ], IgxHierarchicalGridComponent.prototype, "getCellByColumnVisibleIndex", null);
68425
68338
 
68426
68339
  class IgxHierarchicalGridCellComponent extends IgxGridCellComponent {
68427
68340
  constructor(selectionService, gridAPI, cdr, helement, zone, touchManager, platformUtil) {
@@ -72849,30 +72762,37 @@ class IgxToastComponent extends IgxNotificationsDirective {
72849
72762
  * @hidden
72850
72763
  */
72851
72764
  this.isVisibleChange = new EventEmitter();
72852
- /**
72853
- * Sets/gets the position of the toast.
72854
- * If not set, the `position` attribute will have value `IgxToastPosition.Bottom`.
72855
- * ```html
72856
- * <igx-toast [position]="top"></igx-toast>
72857
- * ```
72858
- * ```typescript
72859
- * let toastPosition = this.toast.position;
72860
- * ```
72861
- *
72862
- * @memberof IgxToastComponent
72863
- */
72864
- this.position = 'bottom';
72765
+ this._position = 'bottom';
72865
72766
  this._positionSettings = {
72866
72767
  horizontalDirection: HorizontalAlignment.Center,
72867
- verticalDirection: this.position === 'bottom'
72868
- ? VerticalAlignment.Bottom
72869
- : this.position === 'middle'
72870
- ? VerticalAlignment.Middle
72871
- : VerticalAlignment.Top,
72768
+ verticalDirection: VerticalAlignment.Bottom,
72872
72769
  openAnimation: useAnimation(fadeIn),
72873
72770
  closeAnimation: useAnimation(fadeOut),
72874
72771
  };
72875
72772
  }
72773
+ /**
72774
+ * @deprecated in version 12.2.3. We suggest using `positionSettings` property instead
72775
+ *
72776
+ * Sets/gets the position of the toast.
72777
+ * If not set, the `position` attribute will have value `IgxToastPosition.Bottom`.
72778
+ * ```html
72779
+ * <igx-toast [position]="top"></igx-toast>
72780
+ * ```
72781
+ * ```typescript
72782
+ * let toastPosition = this.toast.position;
72783
+ * ```
72784
+ *
72785
+ * @memberof IgxToastComponent
72786
+ */
72787
+ get position() {
72788
+ return this._position;
72789
+ }
72790
+ set position(position) {
72791
+ if (position) {
72792
+ this._position = position;
72793
+ this._positionSettings.verticalDirection = this.calculatePosition();
72794
+ }
72795
+ }
72876
72796
  /**
72877
72797
  * Get the position and animation settings used by the toast.
72878
72798
  * ```typescript
@@ -72925,10 +72845,13 @@ class IgxToastComponent extends IgxNotificationsDirective {
72925
72845
  * this.toast.open();
72926
72846
  * ```
72927
72847
  */
72928
- open(message) {
72848
+ open(message, settings) {
72929
72849
  if (message !== undefined) {
72930
72850
  this.textMessage = message;
72931
72851
  }
72852
+ if (settings !== undefined) {
72853
+ this.positionSettings = settings;
72854
+ }
72932
72855
  this.strategy = new GlobalPositionStrategy(this.positionSettings);
72933
72856
  super.open();
72934
72857
  }
@@ -72960,6 +72883,18 @@ class IgxToastComponent extends IgxNotificationsDirective {
72960
72883
  this.isVisibleChange.emit(closedEventArgs);
72961
72884
  });
72962
72885
  }
72886
+ ngOnChanges(changes) {
72887
+ if (changes['position'] && this._positionSettings) {
72888
+ this._positionSettings.verticalDirection = this.calculatePosition();
72889
+ }
72890
+ }
72891
+ calculatePosition() {
72892
+ return this.position === 'bottom'
72893
+ ? VerticalAlignment.Bottom
72894
+ : this.position === 'middle'
72895
+ ? VerticalAlignment.Middle
72896
+ : VerticalAlignment.Top;
72897
+ }
72963
72898
  }
72964
72899
  IgxToastComponent.decorators = [
72965
72900
  { type: Component, args: [{
@@ -76374,5 +76309,5 @@ IgxTreeModule.decorators = [
76374
76309
  * Generated bundle index. Do not edit.
76375
76310
  */
76376
76311
 
76377
- export { AbsolutePosition, AbsoluteScrollStrategy, AutoPositionStrategy, BaseFilteringStrategy, BaseProgressDirective, BlockScrollStrategy, ButtonGroupAlignment, Calendar, CalendarHammerConfig, CalendarSelection, CalendarView, CarouselAnimationType, CarouselHammerConfig, CarouselIndicatorsOrientation, CloseScrollStrategy, ColumnDisplayOrder, ColumnPinningPosition, ConnectedPositioningStrategy, ContainerPositionStrategy, CsvFileTypes, DEFAULT_OWNER, DataUtil, DatePart, DateRangePickerFormatPipe, DateRangeType, DefaultSortingStrategy, Direction, DisplayDensity, DisplayDensityBase, DisplayDensityToken, DragDirection, ElasticPositionStrategy, ExpansionPanelHeaderIconPosition, ExportRecordType, FilterListItem, FilterMode, FilteringExpressionsTree, FilteringExpressionsTreeType, FilteringLogic, FilteringStrategy, FormattedValuesFilteringStrategy, GlobalPositionStrategy, GridBaseAPIService, GridColumnDataType, GridInstanceType, GridPagingMode, GridSelectionMode, GridSummaryCalculationMode, GridSummaryPosition, GroupedRecords, HeaderType, HorizontalAlignment, IGX_CHECKBOX_REQUIRED_VALIDATOR, IGX_INPUT_GROUP_TYPE, IGX_SWITCH_REQUIRED_VALIDATOR, ITreeGridAggregation, IgxAccordionComponent, IgxAccordionModule, IgxActionStripComponent, IgxActionStripModule, IgxAppendDropStrategy, IgxAutocompleteDirective, IgxAutocompleteModule, IgxAvatarComponent, IgxAvatarModule, IgxAvatarSize, IgxAvatarType, IgxBadgeComponent, IgxBadgeModule, IgxBadgeType, IgxBannerComponent, IgxBannerModule, IgxBaseExporter, IgxBaseTransactionService, IgxBooleanFilteringOperand, IgxBottomNavComponent, IgxBottomNavContentComponent, IgxBottomNavHeaderComponent, IgxBottomNavHeaderIconDirective, IgxBottomNavHeaderLabelDirective, IgxBottomNavItemComponent, IgxBottomNavModule, IgxButtonDirective, IgxButtonGroupComponent, IgxButtonGroupModule, IgxButtonModule, IgxCSVTextDirective, IgxCalendarBaseDirective, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarModule, IgxCalendarMonthDirective, IgxCalendarScrollMonthDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarView, IgxCalendarYearDirective, IgxCardActionsComponent, IgxCardActionsLayout, IgxCardComponent, IgxCardContentDirective, IgxCardFooterDirective, IgxCardHeaderComponent, IgxCardHeaderSubtitleDirective, IgxCardHeaderTitleDirective, IgxCardMediaDirective, IgxCardModule, IgxCardThumbnailDirective, IgxCardType, IgxCarouselComponent, IgxCarouselComponentBase, IgxCarouselModule, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCheckboxComponent, IgxCheckboxModule, IgxCheckboxRequiredDirective, IgxChipComponent, IgxChipsAreaComponent, IgxChipsModule, IgxCircularProgressBarComponent, IgxCollapsibleIndicatorTemplateDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnActionsModule, IgxColumnComponent, IgxColumnGroupComponent, IgxColumnLayoutComponent, IgxComboComponent, IgxComboModule, IgxComboState, IgxCsvExporterOptions, IgxCsvExporterService, IgxDataLoadingTemplateDirective, IgxDataRecordSorting, IgxDateFilteringOperand, IgxDatePickerComponent, IgxDatePickerModule, IgxDateRangeEndComponent, IgxDateRangeInputsBaseComponent, IgxDateRangePickerComponent, IgxDateRangePickerModule, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent, IgxDateSummaryOperand, IgxDateTimeEditorDirective, IgxDateTimeEditorModule, IgxDateTimeFilteringOperand, IgxDaysViewComponent, IgxDefaultDropStrategy, IgxDialogComponent, IgxDialogModule, IgxDisplayDensityModule, IgxDividerDirective, IgxDividerModule, IgxDividerType, IgxDragDirective, IgxDragDropModule, IgxDragHandleDirective, IgxDragIgnoreDirective, IgxDragLocation, IgxDropDirective, IgxDropDownBaseDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemBaseDirective, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, IgxEmptyListTemplateDirective, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxExpansionPanelModule, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilterDirective, IgxFilterModule, IgxFilterOptions, IgxFilterPipe, IgxFilteringOperand, IgxFlatTransactionFactory, IgxFlexDirective, IgxFocusDirective, IgxFocusModule, IgxForOfContext, IgxForOfDirective, IgxForOfModule, IgxGridAPIService, IgxGridActionsBaseDirective, IgxGridBaseDirective, IgxGridBodyDirective, IgxGridCell, IgxGridCommonModule, IgxGridComponent, IgxGridDetailTemplateDirective, IgxGridEditingActionsComponent, IgxGridExcelStyleFilteringComponent, IgxGridForOfDirective, IgxGridHierarchicalPagingPipe, IgxGridHierarchicalPipe, IgxGridModule, IgxGridPinningActionsComponent, IgxGridRow, IgxGridStateDirective, IgxGridStateModule, IgxGridToolbarActionsDirective, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleDirective, IgxGridTransaction, IgxGroupAreaDropDirective, IgxGroupByRow, IgxGroupByRowTemplateDirective, IgxGroupedTreeGridSorting, IgxGrouping, IgxHeaderCollapseIndicatorDirective, IgxHeaderExpandIndicatorDirective, IgxHierarchicalGridAPIService, IgxHierarchicalGridBaseDirective, IgxHierarchicalGridComponent, IgxHierarchicalGridModule, IgxHierarchicalGridRow, IgxHierarchicalTransactionFactory, IgxHierarchicalTransactionService, IgxHierarchicalTransactionServiceFactory, IgxHintDirective, IgxIconComponent, IgxIconModule, IgxIconService, IgxInputDirective, IgxInputGroupComponent, IgxInputGroupModule, IgxInputState, IgxInsertDropStrategy, IgxLabelDirective, IgxLayoutDirective, IgxLayoutModule, IgxLinearProgressBarComponent, IgxListActionDirective, IgxListBaseDirective, IgxListComponent, IgxListItemComponent, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListModule, IgxListPanState, IgxListThumbnailDirective, IgxMaskDirective, IgxMaskModule, IgxMonthPickerBaseDirective, IgxMonthPickerComponent, IgxMonthsViewComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavbarActionDirective, IgxNavbarComponent, IgxNavbarModule, IgxNavbarTitleDirective, IgxNavigationCloseDirective, IgxNavigationDrawerComponent, IgxNavigationDrawerModule, IgxNavigationModule, IgxNavigationService, IgxNavigationToggleDirective, IgxNumberFilteringOperand, IgxNumberSummaryOperand, IgxOverlayOutletDirective, IgxOverlayService, IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorComponent, IgxPaginatorDirective, IgxPaginatorModule, IgxPaginatorTemplateDirective, IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IgxPickersCommonModule, IgxPrefixDirective, IgxPrefixModule, IgxPrependDropStrategy, IgxProgressBarModule, IgxProgressType, IgxRadioComponent, IgxRadioGroupDirective, IgxRadioModule, IgxRippleDirective, IgxRippleModule, IgxRowCollapsedIndicatorDirective, IgxRowExpandedIndicatorDirective, IgxRowIslandAPIService, IgxRowIslandComponent, IgxSelectComponent, IgxSelectFooterDirective, IgxSelectGroupComponent, IgxSelectHeaderDirective, IgxSelectItemComponent, IgxSelectModule, IgxSelectToggleIconDirective, IgxSlideComponent, IgxSliderComponent, IgxSliderModule, IgxSliderType, IgxSnackbarComponent, IgxSnackbarModule, IgxSorting, IgxSplitterComponent, IgxSplitterModule, IgxSplitterPaneComponent, IgxStringFilteringOperand, IgxSuffixDirective, IgxSuffixModule, IgxSummaryOperand, IgxSummaryRow, IgxSwitchComponent, IgxSwitchModule, IgxSwitchRequiredDirective, IgxTabContentComponent, IgxTabContentDirective, IgxTabHeaderComponent, IgxTabHeaderDirective, IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective, IgxTabItemComponent, IgxTabItemDirective, IgxTabsAlignment, IgxTabsComponent, IgxTabsDirective, IgxTabsModule, IgxTextAlign, IgxTextHighlightDirective, IgxTextHighlightModule, IgxTextSelectionDirective, IgxTextSelectionModule, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IgxTimeFilteringOperand, IgxTimePickerComponent, IgxTimePickerModule, IgxTimeSummaryOperand, IgxToastComponent, IgxToastModule, IgxToastPosition, IgxToggleActionDirective, IgxToggleDirective, IgxToggleModule, IgxTooltipDirective, IgxTooltipModule, IgxTooltipTargetDirective, IgxTransactionService, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeGridAPIService, IgxTreeGridComponent, IgxTreeGridGroupingPipe, IgxTreeGridModule, IgxTreeGridRow, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectMarkerDirective, IgxTreeSelectionType, IgxYearsViewComponent, LabelPosition, NoOpScrollStrategy, NoopFilteringStrategy, NoopSortingStrategy, PagingError, PickerInteractionMode, Point, RadioGroupAlignment, RadioLabelPosition, RelativePosition, RelativePositionStrategy, RowEditPositionStrategy, RowPinningPosition, ScrollMonth, ScrollStrategy, SliderHandle, SortingDirection, SplitterType, SwitchLabelPosition, TickLabelsOrientation, TicksOrientation, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy, TreeGridFormattedValuesFilteringStrategy, TreeGridMatchingRecordsOnlyFilteringStrategy, VerticalAlignment, WEEKDAYS, blink, changei18n, fadeIn, fadeOut, filteringStateDefaults, flipBottom, flipHorBck, flipHorFwd, flipLeft, flipRight, flipTop, flipVerBck, flipVerFwd, getCurrentResourceStrings, getTypeNameForDebugging, growVerIn, growVerOut, heartbeat, hierarchicalTransactionServiceFactory, isDateInRanges, isLeap, monthRange, pulsateBck, pulsateFwd, range, rotateInBl, rotateInBottom, rotateInBr, rotateInCenter, rotateInDiagonal1, rotateInDiagonal2, rotateInHor, rotateInLeft, rotateInRight, rotateInTl, rotateInTop, rotateInTr, rotateInVer, rotateOutBl, rotateOutBottom, rotateOutBr, rotateOutCenter, rotateOutDiagonal1, rotateOutDiagonal2, rotateOutHor, rotateOutLeft, rotateOutRight, rotateOutTl, rotateOutTop, rotateOutTr, rotateOutVer, scaleInBl, scaleInBottom, scaleInBr, scaleInCenter, scaleInHorCenter, scaleInHorLeft, scaleInHorRight, scaleInLeft, scaleInRight, scaleInTl, scaleInTop, scaleInTr, scaleInVerBottom, scaleInVerCenter, scaleInVerTop, scaleOutBl, scaleOutBottom, scaleOutBr, scaleOutCenter, scaleOutHorCenter, scaleOutHorLeft, scaleOutHorRight, scaleOutLeft, scaleOutRight, scaleOutTl, scaleOutTop, scaleOutTr, scaleOutVerBottom, scaleOutVerCenter, scaleOutVerTop, shakeBl, shakeBottom, shakeBr, shakeCenter, shakeHor, shakeLeft, shakeRight, shakeTl, shakeTop, shakeTr, shakeVer, slideInBl, slideInBottom, slideInBr, slideInLeft, slideInRight, slideInTl, slideInTop, slideInTr, slideOutBl, slideOutBottom, slideOutBr, slideOutLeft, slideOutRight, slideOutTl, slideOutTop, slideOutTr, swingInBottomBck, swingInBottomFwd, swingInLeftBck, swingInLeftFwd, swingInRightBck, swingInRightFwd, swingInTopBck, swingInTopFwd, swingOutBottomBck, swingOutBottomFwd, swingOutLeftBck, swingOutLefttFwd, swingOutRightBck, swingOutRightFwd, swingOutTopBck, swingOutTopFwd, toPercent, valueInRange, weekDay, ɵ1, ɵ2, IgxActionStripMenuItemDirective as ɵa, IGX_DROPDOWN_BASE as ɵb, IgxGridActionButtonComponent as ɵba, ToggleAnimationPlayer as ɵbb, IgxExpansionPanelTitleDirective as ɵbc, IgxExpansionPanelDescriptionDirective as ɵbd, IgxExpansionPanelIconDirective as ɵbe, IgxBannerActionsDirective as ɵbf, IgxDaysViewNavigationService as ɵbg, IgxDayItemComponent as ɵbh, IgxMonthViewSlotsCalendar as ɵbi, IgxGetViewDateCalendar as ɵbj, IgxCarouselIndicatorDirective as ɵbk, IgxCarouselNextButtonDirective as ɵbl, IgxCarouselPrevButtonDirective as ɵbm, IgxComboAPIService as ɵbn, IGX_COMBO_COMPONENT as ɵbo, IgxComboDropDownComponent as ɵbq, IgxComboItemComponent as ɵbr, IgxComboHeaderDirective as ɵbs, IgxComboFooterDirective as ɵbt, IgxComboItemDirective as ɵbu, IgxComboEmptyDirective as ɵbv, IgxComboHeaderItemDirective as ɵbw, IgxComboAddItemDirective as ɵbx, IgxComboToggleIconDirective as ɵby, IgxComboClearIconDirective as ɵbz, IgxComboFilteringPipe as ɵca, IgxComboGroupingPipe as ɵcb, IgxComboAddItemComponent as ɵcc, PickerBaseDirective as ɵcd, IgxCalendarContainerComponent as ɵce, IgxCalendarContainerModule as ɵcf, IgxDialogTitleDirective as ɵcg, IgxDialogActionsDirective as ɵch, IgxCellCrudState as ɵci, IgxRowCrudState as ɵcj, IgxRowAddCrudState as ɵck, IgxGridCRUDService as ɵcl, IgxColumnMovingService as ɵcm, IgxExcelStyleCustomDialogComponent as ɵcn, IgxExcelStyleDefaultExpressionComponent as ɵco, IgxExcelStyleDateExpressionComponent as ɵcp, HammerGesturesManager as ɵcq, WatchChanges as ɵcr, WatchColumnChanges as ɵcs, notifyChanges as ɵct, IgxNotificationsDirective as ɵcu, IgxGridColumnResizerComponent as ɵcv, IgxColumnResizerDirective as ɵcw, IgxColumnResizingService as ɵcx, IgxRowSelectorDirective as ɵcy, IgxGroupByRowSelectorDirective as ɵcz, IgxGridSelectionService as ɵd, IgxHeadSelectorDirective as ɵda, IgxRowDragDirective as ɵdb, IgxDragIndicatorIconDirective as ɵdc, IgxRowDragGhostDirective as ɵdd, IgxRowDragModule as ɵde, IgxGridHeaderRowComponent as ɵdf, IgxGridHeaderGroupComponent as ɵdg, IgxGridHeaderComponent as ɵdh, IgxGridFilteringCellComponent as ɵdi, IgxFilteringService as ɵdj, IgxGridFilteringRowComponent as ɵdk, IgxGridGroupByAreaComponent as ɵdl, IgxGroupByAreaDirective as ɵdm, IgxGroupByMetaPipe as ɵdn, IgxTemplateOutletDirective as ɵdo, IgxTemplateOutletModule as ɵdp, IgxRowEditTemplateDirective as ɵdq, IgxRowEditTextDirective as ɵdr, IgxRowAddTextDirective as ɵds, IgxRowEditActionsDirective as ɵdt, IgxRowEditTabStopDirective as ɵdu, IgxSummaryRowComponent as ɵdv, IgxSummaryCellComponent as ɵdw, IgxRowDirective as ɵdx, IgxGridNavigationService as ɵdy, IgxGridSummaryService as ɵdz, ConnectedPositioningStrategy as ɵea, IgxGridGroupByRowComponent as ɵeb, IgxTreeGridSelectionService as ɵec, IgxTreeGridGroupByAreaComponent as ɵed, IgxRowLoadingIndicatorTemplateDirective as ɵee, IgxHierarchicalGridNavigationService as ɵef, IgxChildGridRowComponent as ɵeg, IgxGridCellComponent as ɵeh, IgxGridFooterComponent as ɵei, IgxAdvancedFilteringDialogComponent as ɵej, IgxColumnHidingDirective as ɵek, IgxColumnPinningDirective as ɵel, IgxGridSharedModules as ɵem, IgxProcessBarTextTemplateDirective as ɵen, IgxProgressBarGradientDirective as ɵeo, DIR_DOCUMENT_FACTORY as ɵep, DIR_DOCUMENT as ɵeq, IgxDirectionality as ɵer, IgxSelectItemNavigationDirective as ɵes, IGX_TIME_PICKER_COMPONENT as ɵet, IgxItemListDirective as ɵev, IgxTimeItemDirective as ɵew, IgxTimePickerTemplateDirective as ɵex, IgxTimePickerActionsDirective as ɵey, TimeFormatPipe as ɵez, IGX_EXPANSION_PANEL_COMPONENT as ɵf, TimeItemPipe as ɵfa, IgxGridPipesModule as ɵfb, IgxGridCellStyleClassesPipe as ɵfc, IgxGridCellStylesPipe as ɵfd, IgxGridRowClassesPipe as ɵfe, IgxGridRowStylesPipe as ɵff, IgxGridNotGroupedPipe as ɵfg, IgxGridTopLevelColumns as ɵfh, IgxGridFilterConditionPipe as ɵfi, IgxGridTransactionPipe as ɵfj, IgxGridPaginatorOptionsPipe as ɵfk, IgxHasVisibleColumnsPipe as ɵfl, IgxGridRowPinningPipe as ɵfm, IgxColumnActionEnabledPipe as ɵfn, IgxFilterActionColumnsPipe as ɵfo, IgxSortActionColumnsPipe as ɵfp, IgxGridDataMapperPipe as ɵfq, IgxStringReplacePipe as ɵfr, IgxGridTransactionStatePipe as ɵfs, IgxColumnFormatterPipe as ɵft, IgxSummaryFormatterPipe as ɵfu, IgxGridAddRowPipe as ɵfv, IgxHeaderGroupWidthPipe as ɵfw, IgxHeaderGroupStylePipe as ɵfx, IgxGridColumnModule as ɵfy, IgxGridHeadersModule as ɵfz, IGX_TREE_COMPONENT as ɵg, SortingIndexPipe as ɵga, IgxGridFilteringModule as ɵgb, IgxColumnMovingModule as ɵgc, IgxColumnMovingDropDirective as ɵgd, IgxColumnMovingDragDirective as ɵge, IgxGridResizingModule as ɵgf, IgxResizeHandleDirective as ɵgg, IgxGridExcelStyleFilteringModule as ɵgh, IgxGridSelectionModule as ɵgi, IgxGridDragSelectDirective as ɵgj, IgxGridSummaryModule as ɵgk, IgxSummaryDataPipe as ɵgl, IgxGridToolbarModule as ɵgm, BaseToolbarDirective as ɵgn, BaseToolbarColumnActionsDirective as ɵgo, IgxGridRowComponent as ɵgp, IgxGridSortingPipe as ɵgq, IgxGridGroupingPipe as ɵgr, IgxGridPagingPipe as ɵgs, IgxGridFilteringPipe as ɵgt, IgxGridSummaryPipe as ɵgu, IgxGridDetailsPipe as ɵgv, IgxGridExpandableCellComponent as ɵgw, IgxTreeGridRowComponent as ɵgx, IgxTreeGridCellComponent as ɵgy, IgxTreeGridHierarchizingPipe as ɵgz, IGX_TREE_NODE_COMPONENT as ɵh, IgxTreeGridFlatteningPipe as ɵha, IgxTreeGridSortingPipe as ɵhb, IgxTreeGridPagingPipe as ɵhc, IgxTreeGridTransactionPipe as ɵhd, IgxTreeGridNormalizeRecordsPipe as ɵhe, IgxTreeGridAddRowPipe as ɵhf, IgxTreeGridFilteringPipe as ɵhg, IgxTreeGridSummaryPipe as ɵhh, IgxHierarchicalRowComponent as ɵhi, IgxHierarchicalGridCellComponent as ɵhj, IgxSliderThumbComponent as ɵhk, IgxThumbLabelComponent as ɵhl, IgxTicksComponent as ɵhm, IgxTickLabelsPipe as ɵhn, IgxTabsBase as ɵho, IgxTabHeaderBase as ɵhp, IgxTabContentBase as ɵhq, IgxSplitBarComponent as ɵhr, IgxTreeService as ɵhs, IgxTreeSelectionService as ɵht, IgxTreeNavigationService as ɵhu, PlatformUtil as ɵi, EaseIn as ɵj, EaseOut as ɵk, IgxInputGroupBase as ɵl, IgxSelectionAPIService as ɵm, IgxForOfSyncService as ɵn, IgxForOfScrollSyncService as ɵo, DisplayContainerComponent as ɵp, IgxScrollInertiaDirective as ɵq, IgxScrollInertiaModule as ɵr, VirtualHelperComponent as ɵs, VirtualHelperBaseDirective as ɵt, HVirtualHelperComponent as ɵu, MaskParsingService as ɵv, DeprecateMethod as ɵw, DeprecateProperty as ɵx, isHierarchyMatch as ɵy, getHierarchy as ɵz };
76312
+ export { AbsolutePosition, AbsoluteScrollStrategy, AutoPositionStrategy, BaseFilteringStrategy, BaseProgressDirective, BlockScrollStrategy, ButtonGroupAlignment, Calendar, CalendarHammerConfig, CalendarSelection, CalendarView, CarouselAnimationType, CarouselHammerConfig, CarouselIndicatorsOrientation, CloseScrollStrategy, ColumnDisplayOrder, ColumnPinningPosition, ConnectedPositioningStrategy, ContainerPositionStrategy, CsvFileTypes, DEFAULT_OWNER, DataUtil, DatePart, DateRangePickerFormatPipe, DateRangeType, DefaultDataCloneStrategy, DefaultSortingStrategy, Direction, DisplayDensity, DisplayDensityBase, DisplayDensityToken, DragDirection, ElasticPositionStrategy, ExpansionPanelHeaderIconPosition, ExportRecordType, FilterListItem, FilterMode, FilteringExpressionsTree, FilteringExpressionsTreeType, FilteringLogic, FilteringStrategy, FormattedValuesFilteringStrategy, GlobalPositionStrategy, GridBaseAPIService, GridColumnDataType, GridInstanceType, GridPagingMode, GridSelectionMode, GridSummaryCalculationMode, GridSummaryPosition, GroupedRecords, HeaderType, HorizontalAlignment, IGX_CHECKBOX_REQUIRED_VALIDATOR, IGX_INPUT_GROUP_TYPE, IGX_SWITCH_REQUIRED_VALIDATOR, ITreeGridAggregation, IgxAccordionComponent, IgxAccordionModule, IgxActionStripComponent, IgxActionStripModule, IgxAppendDropStrategy, IgxAutocompleteDirective, IgxAutocompleteModule, IgxAvatarComponent, IgxAvatarModule, IgxAvatarSize, IgxAvatarType, IgxBadgeComponent, IgxBadgeModule, IgxBadgeType, IgxBannerComponent, IgxBannerModule, IgxBaseExporter, IgxBaseTransactionService, IgxBooleanFilteringOperand, IgxBottomNavComponent, IgxBottomNavContentComponent, IgxBottomNavHeaderComponent, IgxBottomNavHeaderIconDirective, IgxBottomNavHeaderLabelDirective, IgxBottomNavItemComponent, IgxBottomNavModule, IgxButtonDirective, IgxButtonGroupComponent, IgxButtonGroupModule, IgxButtonModule, IgxCSVTextDirective, IgxCalendarBaseDirective, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarModule, IgxCalendarMonthDirective, IgxCalendarScrollMonthDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarView, IgxCalendarYearDirective, IgxCardActionsComponent, IgxCardActionsLayout, IgxCardComponent, IgxCardContentDirective, IgxCardFooterDirective, IgxCardHeaderComponent, IgxCardHeaderSubtitleDirective, IgxCardHeaderTitleDirective, IgxCardMediaDirective, IgxCardModule, IgxCardThumbnailDirective, IgxCardType, IgxCarouselComponent, IgxCarouselComponentBase, IgxCarouselModule, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCheckboxComponent, IgxCheckboxModule, IgxCheckboxRequiredDirective, IgxChipComponent, IgxChipsAreaComponent, IgxChipsModule, IgxCircularProgressBarComponent, IgxCollapsibleIndicatorTemplateDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnActionsModule, IgxColumnComponent, IgxColumnGroupComponent, IgxColumnLayoutComponent, IgxComboComponent, IgxComboModule, IgxComboState, IgxCsvExporterOptions, IgxCsvExporterService, IgxDataLoadingTemplateDirective, IgxDataRecordSorting, IgxDateFilteringOperand, IgxDatePickerComponent, IgxDatePickerModule, IgxDateRangeEndComponent, IgxDateRangeInputsBaseComponent, IgxDateRangePickerComponent, IgxDateRangePickerModule, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent, IgxDateSummaryOperand, IgxDateTimeEditorDirective, IgxDateTimeEditorModule, IgxDateTimeFilteringOperand, IgxDaysViewComponent, IgxDefaultDropStrategy, IgxDialogComponent, IgxDialogModule, IgxDisplayDensityModule, IgxDividerDirective, IgxDividerModule, IgxDividerType, IgxDragDirective, IgxDragDropModule, IgxDragHandleDirective, IgxDragIgnoreDirective, IgxDragLocation, IgxDropDirective, IgxDropDownBaseDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemBaseDirective, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, IgxEmptyListTemplateDirective, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxExpansionPanelModule, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilterDirective, IgxFilterModule, IgxFilterOptions, IgxFilterPipe, IgxFilteringOperand, IgxFlatTransactionFactory, IgxFlexDirective, IgxFocusDirective, IgxFocusModule, IgxForOfContext, IgxForOfDirective, IgxForOfModule, IgxGridAPIService, IgxGridActionsBaseDirective, IgxGridBaseDirective, IgxGridBodyDirective, IgxGridCell, IgxGridCommonModule, IgxGridComponent, IgxGridDetailTemplateDirective, IgxGridEditingActionsComponent, IgxGridExcelStyleFilteringComponent, IgxGridForOfDirective, IgxGridHierarchicalPagingPipe, IgxGridHierarchicalPipe, IgxGridModule, IgxGridPinningActionsComponent, IgxGridRow, IgxGridStateDirective, IgxGridStateModule, IgxGridToolbarActionsDirective, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleDirective, IgxGridTransaction, IgxGroupAreaDropDirective, IgxGroupByRow, IgxGroupByRowTemplateDirective, IgxGroupedTreeGridSorting, IgxGrouping, IgxHeaderCollapseIndicatorDirective, IgxHeaderExpandIndicatorDirective, IgxHierarchicalGridAPIService, IgxHierarchicalGridBaseDirective, IgxHierarchicalGridComponent, IgxHierarchicalGridModule, IgxHierarchicalGridRow, IgxHierarchicalTransactionFactory, IgxHierarchicalTransactionService, IgxHierarchicalTransactionServiceFactory, IgxHintDirective, IgxIconComponent, IgxIconModule, IgxIconService, IgxInputDirective, IgxInputGroupComponent, IgxInputGroupModule, IgxInputState, IgxInsertDropStrategy, IgxLabelDirective, IgxLayoutDirective, IgxLayoutModule, IgxLinearProgressBarComponent, IgxListActionDirective, IgxListBaseDirective, IgxListComponent, IgxListItemComponent, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListModule, IgxListPanState, IgxListThumbnailDirective, IgxMaskDirective, IgxMaskModule, IgxMonthPickerBaseDirective, IgxMonthPickerComponent, IgxMonthsViewComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavbarActionDirective, IgxNavbarComponent, IgxNavbarModule, IgxNavbarTitleDirective, IgxNavigationCloseDirective, IgxNavigationDrawerComponent, IgxNavigationDrawerModule, IgxNavigationModule, IgxNavigationService, IgxNavigationToggleDirective, IgxNumberFilteringOperand, IgxNumberSummaryOperand, IgxOverlayOutletDirective, IgxOverlayService, IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorComponent, IgxPaginatorDirective, IgxPaginatorModule, IgxPaginatorTemplateDirective, IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IgxPickersCommonModule, IgxPrefixDirective, IgxPrefixModule, IgxPrependDropStrategy, IgxProgressBarModule, IgxProgressType, IgxRadioComponent, IgxRadioGroupDirective, IgxRadioModule, IgxRippleDirective, IgxRippleModule, IgxRowCollapsedIndicatorDirective, IgxRowExpandedIndicatorDirective, IgxRowIslandAPIService, IgxRowIslandComponent, IgxSelectComponent, IgxSelectFooterDirective, IgxSelectGroupComponent, IgxSelectHeaderDirective, IgxSelectItemComponent, IgxSelectModule, IgxSelectToggleIconDirective, IgxSlideComponent, IgxSliderComponent, IgxSliderModule, IgxSliderType, IgxSnackbarComponent, IgxSnackbarModule, IgxSorting, IgxSplitterComponent, IgxSplitterModule, IgxSplitterPaneComponent, IgxStringFilteringOperand, IgxSuffixDirective, IgxSuffixModule, IgxSummaryOperand, IgxSummaryRow, IgxSwitchComponent, IgxSwitchModule, IgxSwitchRequiredDirective, IgxTabContentComponent, IgxTabContentDirective, IgxTabHeaderComponent, IgxTabHeaderDirective, IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective, IgxTabItemComponent, IgxTabItemDirective, IgxTabsAlignment, IgxTabsComponent, IgxTabsDirective, IgxTabsModule, IgxTextAlign, IgxTextHighlightDirective, IgxTextHighlightModule, IgxTextSelectionDirective, IgxTextSelectionModule, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IgxTimeFilteringOperand, IgxTimePickerComponent, IgxTimePickerModule, IgxTimeSummaryOperand, IgxToastComponent, IgxToastModule, IgxToastPosition, IgxToggleActionDirective, IgxToggleDirective, IgxToggleModule, IgxTooltipDirective, IgxTooltipModule, IgxTooltipTargetDirective, IgxTransactionService, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeGridAPIService, IgxTreeGridComponent, IgxTreeGridGroupingPipe, IgxTreeGridModule, IgxTreeGridRow, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectMarkerDirective, IgxTreeSelectionType, IgxYearsViewComponent, LabelPosition, NoOpScrollStrategy, NoopFilteringStrategy, NoopSortingStrategy, PagingError, PickerInteractionMode, Point, RadioGroupAlignment, RadioLabelPosition, RelativePosition, RelativePositionStrategy, RowEditPositionStrategy, RowPinningPosition, ScrollMonth, ScrollStrategy, SliderHandle, SortingDirection, SplitterType, SwitchLabelPosition, TickLabelsOrientation, TicksOrientation, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy, TreeGridFormattedValuesFilteringStrategy, TreeGridMatchingRecordsOnlyFilteringStrategy, VerticalAlignment, WEEKDAYS, blink, changei18n, fadeIn, fadeOut, filteringStateDefaults, flipBottom, flipHorBck, flipHorFwd, flipLeft, flipRight, flipTop, flipVerBck, flipVerFwd, getCurrentResourceStrings, getTypeNameForDebugging, growVerIn, growVerOut, heartbeat, hierarchicalTransactionServiceFactory, isDateInRanges, isLeap, monthRange, pulsateBck, pulsateFwd, range, rotateInBl, rotateInBottom, rotateInBr, rotateInCenter, rotateInDiagonal1, rotateInDiagonal2, rotateInHor, rotateInLeft, rotateInRight, rotateInTl, rotateInTop, rotateInTr, rotateInVer, rotateOutBl, rotateOutBottom, rotateOutBr, rotateOutCenter, rotateOutDiagonal1, rotateOutDiagonal2, rotateOutHor, rotateOutLeft, rotateOutRight, rotateOutTl, rotateOutTop, rotateOutTr, rotateOutVer, scaleInBl, scaleInBottom, scaleInBr, scaleInCenter, scaleInHorCenter, scaleInHorLeft, scaleInHorRight, scaleInLeft, scaleInRight, scaleInTl, scaleInTop, scaleInTr, scaleInVerBottom, scaleInVerCenter, scaleInVerTop, scaleOutBl, scaleOutBottom, scaleOutBr, scaleOutCenter, scaleOutHorCenter, scaleOutHorLeft, scaleOutHorRight, scaleOutLeft, scaleOutRight, scaleOutTl, scaleOutTop, scaleOutTr, scaleOutVerBottom, scaleOutVerCenter, scaleOutVerTop, shakeBl, shakeBottom, shakeBr, shakeCenter, shakeHor, shakeLeft, shakeRight, shakeTl, shakeTop, shakeTr, shakeVer, slideInBl, slideInBottom, slideInBr, slideInLeft, slideInRight, slideInTl, slideInTop, slideInTr, slideOutBl, slideOutBottom, slideOutBr, slideOutLeft, slideOutRight, slideOutTl, slideOutTop, slideOutTr, swingInBottomBck, swingInBottomFwd, swingInLeftBck, swingInLeftFwd, swingInRightBck, swingInRightFwd, swingInTopBck, swingInTopFwd, swingOutBottomBck, swingOutBottomFwd, swingOutLeftBck, swingOutLefttFwd, swingOutRightBck, swingOutRightFwd, swingOutTopBck, swingOutTopFwd, toPercent, valueInRange, weekDay, ɵ1, ɵ2, IgxActionStripMenuItemDirective as ɵa, IGX_DROPDOWN_BASE as ɵb, IgxExpansionPanelTitleDirective as ɵba, IgxExpansionPanelDescriptionDirective as ɵbb, IgxExpansionPanelIconDirective as ɵbc, IgxBannerActionsDirective as ɵbd, IgxDaysViewNavigationService as ɵbe, IgxDayItemComponent as ɵbf, IgxMonthViewSlotsCalendar as ɵbg, IgxGetViewDateCalendar as ɵbh, IgxCarouselIndicatorDirective as ɵbi, IgxCarouselNextButtonDirective as ɵbj, IgxCarouselPrevButtonDirective as ɵbk, IgxComboAPIService as ɵbl, IGX_COMBO_COMPONENT as ɵbm, IgxComboDropDownComponent as ɵbo, IgxComboItemComponent as ɵbp, IgxComboHeaderDirective as ɵbq, IgxComboFooterDirective as ɵbr, IgxComboItemDirective as ɵbs, IgxComboEmptyDirective as ɵbt, IgxComboHeaderItemDirective as ɵbu, IgxComboAddItemDirective as ɵbv, IgxComboToggleIconDirective as ɵbw, IgxComboClearIconDirective as ɵbx, IgxComboFilteringPipe as ɵby, IgxComboGroupingPipe as ɵbz, IgxComboAddItemComponent as ɵca, PickerBaseDirective as ɵcb, IgxCalendarContainerComponent as ɵcc, IgxCalendarContainerModule as ɵcd, IgxDialogTitleDirective as ɵce, IgxDialogActionsDirective as ɵcf, IgxCellCrudState as ɵcg, IgxRowCrudState as ɵch, IgxRowAddCrudState as ɵci, IgxGridCRUDService as ɵcj, IgxColumnMovingService as ɵck, IgxExcelStyleCustomDialogComponent as ɵcl, IgxExcelStyleDefaultExpressionComponent as ɵcm, IgxExcelStyleDateExpressionComponent as ɵcn, HammerGesturesManager as ɵco, WatchChanges as ɵcp, WatchColumnChanges as ɵcq, notifyChanges as ɵcr, IgxNotificationsDirective as ɵcs, IgxGridColumnResizerComponent as ɵct, IgxColumnResizerDirective as ɵcu, IgxColumnResizingService as ɵcv, IgxRowSelectorDirective as ɵcw, IgxGroupByRowSelectorDirective as ɵcx, IgxHeadSelectorDirective as ɵcy, IgxRowDragDirective as ɵcz, IgxGridSelectionService as ɵd, IgxDragIndicatorIconDirective as ɵda, IgxRowDragGhostDirective as ɵdb, IgxRowDragModule as ɵdc, IgxGridHeaderRowComponent as ɵdd, IgxGridHeaderGroupComponent as ɵde, IgxGridHeaderComponent as ɵdf, IgxGridFilteringCellComponent as ɵdg, IgxFilteringService as ɵdh, IgxGridFilteringRowComponent as ɵdi, IgxGridGroupByAreaComponent as ɵdj, IgxGroupByAreaDirective as ɵdk, IgxGroupByMetaPipe as ɵdl, IgxTemplateOutletDirective as ɵdm, IgxTemplateOutletModule as ɵdn, IgxRowEditTemplateDirective as ɵdo, IgxRowEditTextDirective as ɵdp, IgxRowAddTextDirective as ɵdq, IgxRowEditActionsDirective as ɵdr, IgxRowEditTabStopDirective as ɵds, IgxSummaryRowComponent as ɵdt, IgxSummaryCellComponent as ɵdu, IgxRowDirective as ɵdv, IgxGridNavigationService as ɵdw, IgxGridSummaryService as ɵdx, ConnectedPositioningStrategy as ɵdy, IgxGridGroupByRowComponent as ɵdz, IgxTreeGridSelectionService as ɵea, IgxTreeGridGroupByAreaComponent as ɵeb, IgxRowLoadingIndicatorTemplateDirective as ɵec, IgxHierarchicalGridNavigationService as ɵed, IgxChildGridRowComponent as ɵee, IgxGridCellComponent as ɵef, IgxGridFooterComponent as ɵeg, IgxAdvancedFilteringDialogComponent as ɵeh, IgxColumnHidingDirective as ɵei, IgxColumnPinningDirective as ɵej, IgxGridSharedModules as ɵek, IgxProcessBarTextTemplateDirective as ɵel, IgxProgressBarGradientDirective as ɵem, DIR_DOCUMENT_FACTORY as ɵen, DIR_DOCUMENT as ɵeo, IgxDirectionality as ɵep, IgxSelectItemNavigationDirective as ɵeq, IGX_TIME_PICKER_COMPONENT as ɵer, IgxItemListDirective as ɵet, IgxTimeItemDirective as ɵeu, IgxTimePickerTemplateDirective as ɵev, IgxTimePickerActionsDirective as ɵew, TimeFormatPipe as ɵex, TimeItemPipe as ɵey, IgxGridPipesModule as ɵez, IGX_EXPANSION_PANEL_COMPONENT as ɵf, IgxGridCellStyleClassesPipe as ɵfa, IgxGridCellStylesPipe as ɵfb, IgxGridRowClassesPipe as ɵfc, IgxGridRowStylesPipe as ɵfd, IgxGridNotGroupedPipe as ɵfe, IgxGridTopLevelColumns as ɵff, IgxGridFilterConditionPipe as ɵfg, IgxGridTransactionPipe as ɵfh, IgxGridPaginatorOptionsPipe as ɵfi, IgxHasVisibleColumnsPipe as ɵfj, IgxGridRowPinningPipe as ɵfk, IgxColumnActionEnabledPipe as ɵfl, IgxFilterActionColumnsPipe as ɵfm, IgxSortActionColumnsPipe as ɵfn, IgxGridDataMapperPipe as ɵfo, IgxStringReplacePipe as ɵfp, IgxGridTransactionStatePipe as ɵfq, IgxColumnFormatterPipe as ɵfr, IgxSummaryFormatterPipe as ɵfs, IgxGridAddRowPipe as ɵft, IgxHeaderGroupWidthPipe as ɵfu, IgxHeaderGroupStylePipe as ɵfv, IgxGridColumnModule as ɵfw, IgxGridHeadersModule as ɵfx, SortingIndexPipe as ɵfy, IgxGridFilteringModule as ɵfz, IGX_TREE_COMPONENT as ɵg, IgxColumnMovingModule as ɵga, IgxColumnMovingDropDirective as ɵgb, IgxColumnMovingDragDirective as ɵgc, IgxGridResizingModule as ɵgd, IgxResizeHandleDirective as ɵge, IgxGridExcelStyleFilteringModule as ɵgf, IgxGridSelectionModule as ɵgg, IgxGridDragSelectDirective as ɵgh, IgxGridSummaryModule as ɵgi, IgxSummaryDataPipe as ɵgj, IgxGridToolbarModule as ɵgk, BaseToolbarDirective as ɵgl, BaseToolbarColumnActionsDirective as ɵgm, IgxGridRowComponent as ɵgn, IgxGridSortingPipe as ɵgo, IgxGridGroupingPipe as ɵgp, IgxGridPagingPipe as ɵgq, IgxGridFilteringPipe as ɵgr, IgxGridSummaryPipe as ɵgs, IgxGridDetailsPipe as ɵgt, IgxGridExpandableCellComponent as ɵgu, IgxTreeGridRowComponent as ɵgv, IgxTreeGridCellComponent as ɵgw, IgxTreeGridHierarchizingPipe as ɵgx, IgxTreeGridFlatteningPipe as ɵgy, IgxTreeGridSortingPipe as ɵgz, IGX_TREE_NODE_COMPONENT as ɵh, IgxTreeGridPagingPipe as ɵha, IgxTreeGridTransactionPipe as ɵhb, IgxTreeGridNormalizeRecordsPipe as ɵhc, IgxTreeGridAddRowPipe as ɵhd, IgxTreeGridFilteringPipe as ɵhe, IgxTreeGridSummaryPipe as ɵhf, IgxHierarchicalRowComponent as ɵhg, IgxHierarchicalGridCellComponent as ɵhh, IgxSliderThumbComponent as ɵhi, IgxThumbLabelComponent as ɵhj, IgxTicksComponent as ɵhk, IgxTickLabelsPipe as ɵhl, IgxTabsBase as ɵhm, IgxTabHeaderBase as ɵhn, IgxTabContentBase as ɵho, IgxSplitBarComponent as ɵhp, IgxTreeService as ɵhq, IgxTreeSelectionService as ɵhr, IgxTreeNavigationService as ɵhs, PlatformUtil as ɵi, EaseIn as ɵj, EaseOut as ɵk, IgxInputGroupBase as ɵl, IgxSelectionAPIService as ɵm, IgxForOfSyncService as ɵn, IgxForOfScrollSyncService as ɵo, DisplayContainerComponent as ɵp, IgxScrollInertiaDirective as ɵq, IgxScrollInertiaModule as ɵr, VirtualHelperComponent as ɵs, VirtualHelperBaseDirective as ɵt, HVirtualHelperComponent as ɵu, MaskParsingService as ɵv, isHierarchyMatch as ɵw, getHierarchy as ɵx, IgxGridActionButtonComponent as ɵy, ToggleAnimationPlayer as ɵz };
76378
76313
  //# sourceMappingURL=igniteui-angular.js.map