igniteui-angular 13.2.2 → 13.2.5

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 (41) hide show
  1. package/esm2020/lib/directives/for-of/for_of.directive.mjs +2 -2
  2. package/esm2020/lib/grids/api.service.mjs +3 -4
  3. package/esm2020/lib/grids/columns/column-layout.component.mjs +3 -3
  4. package/esm2020/lib/grids/columns/column.component.mjs +4 -4
  5. package/esm2020/lib/grids/common/crud.service.mjs +3 -3
  6. package/esm2020/lib/grids/common/events.mjs +1 -1
  7. package/esm2020/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +2 -2
  8. package/esm2020/lib/grids/filtering/grid-filtering.service.mjs +7 -7
  9. package/esm2020/lib/grids/grid/grid.component.mjs +11 -11
  10. package/esm2020/lib/grids/grid-base.directive.mjs +84 -68
  11. package/esm2020/lib/grids/grid-mrl-navigation.service.mjs +2 -2
  12. package/esm2020/lib/grids/grid-public-row.mjs +3 -3
  13. package/esm2020/lib/grids/grouping/group-by-area.directive.mjs +2 -2
  14. package/esm2020/lib/grids/grouping/tree-grid-group-by-area.component.mjs +6 -6
  15. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +4 -5
  16. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +26 -14
  17. package/esm2020/lib/grids/hierarchical-grid/row-island.component.mjs +7 -11
  18. package/esm2020/lib/grids/pivot-grid/pivot-grid.component.mjs +22 -9
  19. package/esm2020/lib/grids/state.directive.mjs +9 -9
  20. package/esm2020/lib/grids/summaries/grid-summary.service.mjs +5 -5
  21. package/esm2020/lib/grids/tree-grid/tree-grid.component.mjs +27 -9
  22. package/esm2020/lib/services/exporter-common/base-export-service.mjs +3 -3
  23. package/esm2020/lib/splitter/splitter-pane/splitter-pane.component.mjs +61 -11
  24. package/esm2020/lib/splitter/splitter.component.mjs +20 -3
  25. package/fesm2015/igniteui-angular.mjs +294 -173
  26. package/fesm2015/igniteui-angular.mjs.map +1 -1
  27. package/fesm2020/igniteui-angular.mjs +292 -173
  28. package/fesm2020/igniteui-angular.mjs.map +1 -1
  29. package/lib/core/styles/themes/schemas/dark/_stepper.scss +6 -1
  30. package/lib/grids/common/events.d.ts +1 -0
  31. package/lib/grids/grid-base.directive.d.ts +7 -1
  32. package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +2 -1
  33. package/lib/grids/hierarchical-grid/row-island.component.d.ts +1 -0
  34. package/lib/grids/pivot-grid/pivot-grid.component.d.ts +4 -0
  35. package/lib/grids/tree-grid/tree-grid.component.d.ts +2 -2
  36. package/lib/splitter/splitter-pane/splitter-pane.component.d.ts +19 -5
  37. package/migrations/update-13_0_0/changes/inputs.json +416 -1
  38. package/migrations/update-13_0_0/index.js +208 -0
  39. package/package.json +1 -1
  40. package/styles/igniteui-indigo-dark.css +1 -1
  41. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
@@ -7,7 +7,7 @@ import { NgModel, FormControlName, NG_VALUE_ACCESSOR, NG_VALIDATORS, CheckboxReq
7
7
  import * as i4 from '@angular/common';
8
8
  import { isPlatformBrowser, formatDate as formatDate$1, CurrencyPipe, formatPercent, formatNumber, getLocaleCurrencyCode, DatePipe, DOCUMENT, CommonModule, FormatWidth, getLocaleDateFormat, getLocaleNumberFormat, NumberFormatStyle, getCurrencySymbol } from '@angular/common';
9
9
  import { Observable, Subject, fromEvent, interval, animationFrameScheduler, noop, merge, Subscription, timer, pipe } from 'rxjs';
10
- import { takeUntil, filter, first as first$1, throttleTime, take, throttle, debounce, tap, switchMap, skipLast, map, debounceTime, shareReplay, takeWhile, delay, pluck } from 'rxjs/operators';
10
+ import { takeUntil, filter, first as first$1, throttleTime, take, throttle, debounce, tap, switchMap, skipLast, map, debounceTime, shareReplay, takeWhile, pluck } from 'rxjs/operators';
11
11
  import mergeWith from 'lodash.mergewith';
12
12
  import * as JSZip from 'jszip';
13
13
  import * as i1$1 from '@angular/platform-browser';
@@ -3094,7 +3094,7 @@ class IgxBaseExporter {
3094
3094
  throw Error('No options provided!');
3095
3095
  }
3096
3096
  this.options = options;
3097
- let columns = grid.columnList.toArray();
3097
+ let columns = grid.columns;
3098
3098
  if (this.options.ignoreMultiColumnHeaders) {
3099
3099
  columns = columns.filter(col => col.children === undefined);
3100
3100
  }
@@ -3725,7 +3725,7 @@ class IgxBaseExporter {
3725
3725
  columnList = this.getAutoGeneratedColumns(islandData);
3726
3726
  }
3727
3727
  else {
3728
- const islandColumnList = island.childColumns.toArray();
3728
+ const islandColumnList = island.columns;
3729
3729
  columnList = this.getColumns(islandColumnList);
3730
3730
  }
3731
3731
  this._ownersMap.set(island, columnList);
@@ -11158,7 +11158,7 @@ class IgxGridForOfDirective extends IgxForOfDirective {
11158
11158
  this.igxForContainerSize = args.containerSize;
11159
11159
  const sizeDiff = this._updateSizeCache(changes);
11160
11160
  this._applyChanges();
11161
- if (sizeDiff) {
11161
+ if (sizeDiff && this.igxForScrollOrientation === 'vertical') {
11162
11162
  this._adjustScrollPositionAfterSizeChange(sizeDiff);
11163
11163
  }
11164
11164
  this._updateScrollOffset();
@@ -24016,8 +24016,8 @@ class IgxRowAddCrudState extends IgxRowCrudState {
24016
24016
  if (isAddRow) {
24017
24017
  this.endAddRow();
24018
24018
  if (commit) {
24019
- this.grid.rowAddedNotifier.next({ data: args.newValue });
24020
- this.grid.rowAdded.emit({ data: args.newValue });
24019
+ this.grid.rowAddedNotifier.next({ data: args.newValue, owner: this.grid });
24020
+ this.grid.rowAdded.emit({ data: args.newValue, owner: this.grid });
24021
24021
  }
24022
24022
  }
24023
24023
  return args;
@@ -48131,7 +48131,7 @@ class GridBaseAPIService {
48131
48131
  this.destroyMap = new Map();
48132
48132
  }
48133
48133
  get_column_by_name(name) {
48134
- return this.grid.columnList.find((col) => col.field === name);
48134
+ return this.grid.columns.find((col) => col.field === name);
48135
48135
  }
48136
48136
  get_summary_data() {
48137
48137
  const grid = this.grid;
@@ -48408,8 +48408,7 @@ class GridBaseAPIService {
48408
48408
  return;
48409
48409
  }
48410
48410
  const record = data[index];
48411
- // // TODO: should we emit this when cascadeOnDelete is true for each row?!?!
48412
- grid.rowDeletedNotifier.next({ data: data[index] });
48411
+ grid.rowDeletedNotifier.next({ data: data[index], owner: grid });
48413
48412
  this.deleteRowFromData(rowId, index);
48414
48413
  if (grid.selectionService.isRowSelected(rowId)) {
48415
48414
  grid.selectionService.deselectRow(rowId);
@@ -50565,7 +50564,7 @@ class IgxColumnComponent {
50565
50564
  grid.resetCaches();
50566
50565
  grid.notifyChanges();
50567
50566
  if (this.columnLayoutChild) {
50568
- this.grid.columnList.filter(x => x.columnLayout).forEach(x => x.populateVisibleIndexes());
50567
+ this.grid.columns.filter(x => x.columnLayout).forEach(x => x.populateVisibleIndexes());
50569
50568
  }
50570
50569
  this.grid.filteringService.refreshExpressions();
50571
50570
  const eventArgs = { column: this, insertAtIndex: index, isPinned: true };
@@ -50632,7 +50631,7 @@ class IgxColumnComponent {
50632
50631
  grid.resetCaches();
50633
50632
  grid.notifyChanges();
50634
50633
  if (this.columnLayoutChild) {
50635
- this.grid.columnList.filter(x => x.columnLayout).forEach(x => x.populateVisibleIndexes());
50634
+ this.grid.columns.filter(x => x.columnLayout).forEach(x => x.populateVisibleIndexes());
50636
50635
  }
50637
50636
  this.grid.filteringService.refreshExpressions();
50638
50637
  this.grid.columnPinned.emit({ column: this, insertAtIndex: index, isPinned: false });
@@ -50651,7 +50650,7 @@ class IgxColumnComponent {
50651
50650
  */
50652
50651
  move(index) {
50653
50652
  let target;
50654
- let columns = this.grid.columnList.filter(c => c.visibleIndex > -1);
50653
+ let columns = this.grid.columns.filter(c => c.visibleIndex > -1);
50655
50654
  // grid last visible index
50656
50655
  const li = columns.map(c => c.visibleIndex).reduce((a, b) => Math.max(a, b));
50657
50656
  const parent = this.parent;
@@ -52213,7 +52212,7 @@ class BaseRow {
52213
52212
  */
52214
52213
  get cells() {
52215
52214
  const res = [];
52216
- this.grid.columnList.forEach(col => {
52215
+ this.grid.columns.forEach(col => {
52217
52216
  const cell = new IgxGridCell(this.grid, this.index, col.field);
52218
52217
  res.push(cell);
52219
52218
  });
@@ -52520,7 +52519,7 @@ class IgxHierarchicalGridRow extends BaseRow {
52520
52519
  */
52521
52520
  get cells() {
52522
52521
  const res = [];
52523
- this.grid.columnList.forEach(col => {
52522
+ this.grid.columns.forEach(col => {
52524
52523
  const cell = new IgxGridCell(this.grid, this.index, col.field);
52525
52524
  res.push(cell);
52526
52525
  });
@@ -53821,7 +53820,7 @@ class IgxGroupByAreaDirective {
53821
53820
  const drag = event.detail.owner;
53822
53821
  if (drag instanceof IgxColumnMovingDragDirective) {
53823
53822
  const column = drag.column;
53824
- if (!this.grid.columnList.find(c => c === column)) {
53823
+ if (!this.grid.columns.find(c => c === column)) {
53825
53824
  return;
53826
53825
  }
53827
53826
  const isGrouped = this.expressions.findIndex((item) => item.fieldName === column.field) !== -1;
@@ -54322,7 +54321,7 @@ class IgxAdvancedFilteringDialogComponent {
54322
54321
  * @hidden @internal
54323
54322
  */
54324
54323
  get filterableColumns() {
54325
- return this.grid.columnList.filter((col) => !col.columnGroup && col.filterable);
54324
+ return this.grid.columns.filter((col) => !col.columnGroup && col.filterable);
54326
54325
  }
54327
54326
  /**
54328
54327
  * @hidden @internal
@@ -56157,7 +56156,7 @@ class IgxFilteringService {
56157
56156
  grid.paginator.page = 0;
56158
56157
  }
56159
56158
  filteringTree.filteringOperands = [];
56160
- for (const column of grid.columnList) {
56159
+ for (const column of grid.columns) {
56161
56160
  this.prepare_filtering_expression(filteringTree, column.field, term, condition, ignoreCase || column.filteringIgnoreCase);
56162
56161
  }
56163
56162
  grid.filteringExpressionsTree = filteringTree;
@@ -56191,7 +56190,7 @@ class IgxFilteringService {
56191
56190
  expressions.length = 0;
56192
56191
  }
56193
56192
  else {
56194
- this.grid.columnList.forEach(c => {
56193
+ this.grid.columns.forEach(c => {
56195
56194
  const expressions = this.getExpressions(c.field);
56196
56195
  expressions.length = 0;
56197
56196
  });
@@ -56221,7 +56220,7 @@ class IgxFilteringService {
56221
56220
  const grid = this.grid;
56222
56221
  const filteringTree = grid.filteringExpressionsTree;
56223
56222
  const newFilteringTree = new FilteringExpressionsTree(filteringTree.operator, filteringTree.fieldName);
56224
- for (const column of grid.columnList) {
56223
+ for (const column of grid.columns) {
56225
56224
  this.prepare_filtering_expression(newFilteringTree, column.field, value, condition, ignoreCase || column.filteringIgnoreCase);
56226
56225
  }
56227
56226
  const eventArgs = { owner: grid, filteringExpressions: newFilteringTree, cancel: false };
@@ -56251,7 +56250,7 @@ class IgxFilteringService {
56251
56250
  */
56252
56251
  getExpressions(columnId) {
56253
56252
  if (!this.columnToExpressionsMap.has(columnId)) {
56254
- const column = this.grid.columnList.find((col) => col.field === columnId);
56253
+ const column = this.grid.columns.find((col) => col.field === columnId);
56255
56254
  const expressionUIs = new Array();
56256
56255
  if (column) {
56257
56256
  this.generateExpressionsList(column.filteringExpressionsTree, this.grid.filteringExpressionsTree.operator, expressionUIs);
@@ -56268,7 +56267,7 @@ class IgxFilteringService {
56268
56267
  if (!this.isFiltering) {
56269
56268
  this.columnsWithComplexFilter.clear();
56270
56269
  this.columnToExpressionsMap.forEach((value, key) => {
56271
- const column = this.grid.columnList.find((col) => col.field === key);
56270
+ const column = this.grid.columns.find((col) => col.field === key);
56272
56271
  if (column) {
56273
56272
  value.length = 0;
56274
56273
  this.generateExpressionsList(column.filteringExpressionsTree, this.grid.filteringExpressionsTree.operator, value);
@@ -56341,7 +56340,7 @@ class IgxFilteringService {
56341
56340
  if (this.columnsWithComplexFilter.has(columnId)) {
56342
56341
  return true;
56343
56342
  }
56344
- const column = this.grid.columnList.find((col) => col.field === columnId);
56343
+ const column = this.grid.columns.find((col) => col.field === columnId);
56345
56344
  const isComplex = column && this.isFilteringTreeComplex(column.filteringExpressionsTree);
56346
56345
  if (isComplex) {
56347
56346
  this.columnsWithComplexFilter.add(columnId);
@@ -59241,7 +59240,7 @@ class IgxGridSummaryService {
59241
59240
  this.removeSummaries(rowID);
59242
59241
  }
59243
59242
  if (args.rowID !== undefined && args.rowID !== null) {
59244
- let columnName = args.cellID ? this.grid.columnList.find(col => col.index === args.cellID.columnID).field : undefined;
59243
+ let columnName = args.cellID ? this.grid.columns.find(col => col.index === args.cellID.columnID).field : undefined;
59245
59244
  if (columnName && this.grid.rowEditable) {
59246
59245
  return;
59247
59246
  }
@@ -59298,7 +59297,7 @@ class IgxGridSummaryService {
59298
59297
  return this.summaryHeight = 0;
59299
59298
  }
59300
59299
  let maxSummaryLength = 0;
59301
- this.grid.columnList.filter((col) => col.hasSummary && !col.hidden).forEach((column) => {
59300
+ this.grid.columns.filter((col) => col.hasSummary && !col.hidden).forEach((column) => {
59302
59301
  const getCurrentSummaryColumn = column.summaries.operate([], [], column.field).length;
59303
59302
  if (getCurrentSummaryColumn) {
59304
59303
  if (maxSummaryLength < getCurrentSummaryColumn) {
@@ -59319,7 +59318,7 @@ class IgxGridSummaryService {
59319
59318
  if (!this.hasSummarizedColumns || !data) {
59320
59319
  return rowSummaries;
59321
59320
  }
59322
- this.grid.columnList.filter(col => col.hasSummary).forEach((column) => {
59321
+ this.grid.columns.filter(col => col.hasSummary).forEach((column) => {
59323
59322
  if (!rowSummaries.get(column.field)) {
59324
59323
  const summaryResult = column.summaries.operate(data.map(r => resolveNestedPath(r, column.field)), data, column.field, this.grid.locale, column.pipeArgs);
59325
59324
  rowSummaries.set(column.field, summaryResult);
@@ -59352,7 +59351,7 @@ class IgxGridSummaryService {
59352
59351
  this.groupingExpressions = groupingArgs.expressions.map(record => record.fieldName);
59353
59352
  }
59354
59353
  get hasSummarizedColumns() {
59355
- const summarizedColumns = this.grid.columnList.filter(col => col.hasSummary && !col.hidden);
59354
+ const summarizedColumns = this.grid.columns.filter(col => col.hasSummary && !col.hidden);
59356
59355
  return summarizedColumns.length > 0;
59357
59356
  }
59358
59357
  deleteSummaryCache(id, columnName) {
@@ -60390,6 +60389,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
60390
60389
  this._rendered = false;
60391
60390
  this.DRAG_SCROLL_DELTA = 10;
60392
60391
  this._dataCloneStrategy = new DefaultDataCloneStrategy();
60392
+ this._autoSize = false;
60393
60393
  /**
60394
60394
  * @hidden @internal
60395
60395
  */
@@ -61286,8 +61286,8 @@ class IgxGridBaseDirective extends DisplayDensityBase {
61286
61286
  get maxLevelHeaderDepth() {
61287
61287
  if (this._maxLevelHeaderDepth === null) {
61288
61288
  this._maxLevelHeaderDepth = this.hasColumnLayouts ?
61289
- this.columnList.reduce((acc, col) => Math.max(acc, col.rowStart), 0) :
61290
- this.columnList.reduce((acc, col) => Math.max(acc, col.level), 0);
61289
+ this._columns.reduce((acc, col) => Math.max(acc, col.rowStart), 0) :
61290
+ this._columns.reduce((acc, col) => Math.max(acc, col.level), 0);
61291
61291
  }
61292
61292
  return this._maxLevelHeaderDepth;
61293
61293
  }
@@ -61300,7 +61300,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
61300
61300
  * ``
61301
61301
  */
61302
61302
  get hiddenColumnsCount() {
61303
- return this.columnList.filter((col) => col.columnGroup === false && col.hidden === true).length;
61303
+ return this._columns.filter((col) => col.columnGroup === false && col.hidden === true).length;
61304
61304
  }
61305
61305
  /**
61306
61306
  * Gets the number of pinned columns.
@@ -61430,6 +61430,12 @@ class IgxGridBaseDirective extends DisplayDensityBase {
61430
61430
  get scrollSize() {
61431
61431
  return this.verticalScrollContainer.getScrollNativeSize();
61432
61432
  }
61433
+ /**
61434
+ * @hidden @internal
61435
+ */
61436
+ get minColumnWidth() {
61437
+ return MINIMUM_COLUMN_WIDTH$2;
61438
+ }
61433
61439
  /**
61434
61440
  * Returns an array containing the filtered sorted data.
61435
61441
  *
@@ -61786,10 +61792,11 @@ class IgxGridBaseDirective extends DisplayDensityBase {
61786
61792
  this.notifyChanges(true);
61787
61793
  this.cdr.detectChanges();
61788
61794
  });
61789
- this.verticalScrollContainer.contentSizeChange.pipe(filter(() => !this._init), destructor).subscribe(() => {
61790
- this.notifyChanges();
61795
+ this.verticalScrollContainer.contentSizeChange.pipe(filter(() => !this._init), throttleTime(30), destructor).subscribe(() => {
61796
+ this.notifyChanges(true);
61791
61797
  });
61792
61798
  this.onDensityChanged.pipe(destructor).subscribe(() => {
61799
+ this._autoSize = this.isPercentHeight && this.calcHeight !== this.getDataBasedBodyHeight();
61793
61800
  this.crudService.endEdit(false);
61794
61801
  if (this._summaryRowHeight === 0) {
61795
61802
  this.summaryService.summaryHeight = 0;
@@ -61815,13 +61822,13 @@ class IgxGridBaseDirective extends DisplayDensityBase {
61815
61822
  * @internal
61816
61823
  */
61817
61824
  resetColumnsCaches() {
61818
- this.columnList.forEach(column => column.resetCaches());
61825
+ this._columns.forEach(column => column.resetCaches());
61819
61826
  }
61820
61827
  /**
61821
61828
  * @hidden @internal
61822
61829
  */
61823
61830
  generateRowID() {
61824
- const primaryColumn = this.columnList.find(col => col.field === this.primaryKey);
61831
+ const primaryColumn = this._columns.find(col => col.field === this.primaryKey);
61825
61832
  const idType = this.data.length ?
61826
61833
  this.resolveDataTypes(this.data[0][this.primaryKey]) : primaryColumn ? primaryColumn.dataType : 'string';
61827
61834
  return idType === 'string' ? v4() : FAKE_ROW_ID--;
@@ -61888,7 +61895,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
61888
61895
  this.resetColumnCollections();
61889
61896
  this.resetCachedWidths();
61890
61897
  this.hasVisibleColumns = undefined;
61891
- this._columnGroups = this.columnList.some(col => col.columnGroup);
61898
+ this._columnGroups = this._columns.some(col => col.columnGroup);
61892
61899
  }
61893
61900
  /**
61894
61901
  * @hidden
@@ -62151,7 +62158,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62151
62158
  * ```
62152
62159
  */
62153
62160
  toggleColumnVisibility(args) {
62154
- const col = args.column ? this.columnList.find((c) => c === args.column) : undefined;
62161
+ const col = args.column ? this._columns.find((c) => c === args.column) : undefined;
62155
62162
  if (!col) {
62156
62163
  return;
62157
62164
  }
@@ -62411,7 +62418,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62411
62418
  * ```
62412
62419
  */
62413
62420
  get columns() {
62414
- return this._rendered ? this._columns : [];
62421
+ return this._columns || [];
62415
62422
  }
62416
62423
  /**
62417
62424
  * Gets an array of the pinned `IgxColumnComponent`s.
@@ -62472,7 +62479,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62472
62479
  * @param name
62473
62480
  */
62474
62481
  getColumnByName(name) {
62475
- return this.columnList.find((col) => col.field === name);
62482
+ return this._columns.find((col) => col.field === name);
62476
62483
  }
62477
62484
  getColumnByVisibleIndex(index) {
62478
62485
  return this.visibleColumns.find((col) => !col.columnGroup && !col.columnLayout &&
@@ -62490,7 +62497,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62490
62497
  if (this._visibleColumns.length) {
62491
62498
  return this._visibleColumns;
62492
62499
  }
62493
- this._visibleColumns = this.columnList.filter(c => !c.hidden);
62500
+ this._visibleColumns = this._columns.filter(c => !c.hidden);
62494
62501
  return this._visibleColumns;
62495
62502
  }
62496
62503
  /**
@@ -62619,14 +62626,14 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62619
62626
  * @internal
62620
62627
  */
62621
62628
  get showAddButton() {
62622
- return this.rowEditable && this.dataView.length === 0 && this.columnList.length > 0;
62629
+ return this.rowEditable && this.dataView.length === 0 && this._columns.length > 0;
62623
62630
  }
62624
62631
  /**
62625
62632
  * @hidden
62626
62633
  * @internal
62627
62634
  */
62628
62635
  get showDragIcons() {
62629
- return this.rowDraggable && this.columnList.length > this.hiddenColumnsCount;
62636
+ return this.rowDraggable && this._columns.length > this.hiddenColumnsCount;
62630
62637
  }
62631
62638
  /**
62632
62639
  * @hidden
@@ -62688,12 +62695,12 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62688
62695
  const index = pos === DropPosition.AfterDropTarget ? unpinnedIndex + 1 : unpinnedIndex;
62689
62696
  columnPinStateChanged = column.unpin(index);
62690
62697
  }
62691
- if (target.pinned && column.pinned && !columnPinStateChanged) {
62692
- this._reorderColumns(column, target, pos, this._pinnedColumns);
62693
- }
62694
- if (!target.pinned && !column.pinned && !columnPinStateChanged) {
62695
- this._reorderColumns(column, target, pos, this._unpinnedColumns);
62696
- }
62698
+ // if (target.pinned && column.pinned && !columnPinStateChanged) {
62699
+ // this._reorderColumns(column, target, pos, this._pinnedColumns);
62700
+ // }
62701
+ // if (!target.pinned && !column.pinned && !columnPinStateChanged) {
62702
+ // this._reorderColumns(column, target, pos, this._unpinnedColumns);
62703
+ // }
62697
62704
  this._moveColumns(column, target, pos);
62698
62705
  this._columnsReordered(column);
62699
62706
  }
@@ -62756,7 +62763,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62756
62763
  // commit pending states prior to adding a row
62757
62764
  this.crudService.endEdit(true);
62758
62765
  this.gridAPI.addRowToData(data);
62759
- this.rowAddedNotifier.next({ data });
62766
+ this.rowAddedNotifier.next({ data: data, owner: this });
62760
62767
  this.pipeTrigger++;
62761
62768
  this.notifyChanges();
62762
62769
  }
@@ -62783,7 +62790,8 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62783
62790
  rowID: rowId,
62784
62791
  cancel: false,
62785
62792
  rowData: this.getRowData(rowId),
62786
- oldValue: null
62793
+ oldValue: null,
62794
+ owner: this
62787
62795
  };
62788
62796
  this.rowDelete.emit(args);
62789
62797
  if (args.cancel) {
@@ -62791,8 +62799,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62791
62799
  }
62792
62800
  const record = this.gridAPI.deleteRowById(rowId);
62793
62801
  if (record !== null && record !== undefined) {
62794
- // TODO: should we emit this when cascadeOnDelete is true for each row?!?!
62795
- this.rowDeleted.emit({ data: record });
62802
+ this.rowDeleted.emit({ data: record, owner: this });
62796
62803
  }
62797
62804
  return record;
62798
62805
  }
@@ -62811,7 +62818,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62811
62818
  */
62812
62819
  updateCell(value, rowSelector, column) {
62813
62820
  if (this.isDefined(this.primaryKey)) {
62814
- const col = this.columnList.toArray().find(c => c.field === column);
62821
+ const col = this._columns.find(c => c.field === column);
62815
62822
  if (col) {
62816
62823
  // Simplify
62817
62824
  const rowData = this.gridAPI.getRowData(rowSelector);
@@ -62902,7 +62909,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
62902
62909
  }
62903
62910
  else {
62904
62911
  if (this._sortingOptions.mode === 'single') {
62905
- this.columns.forEach((col) => {
62912
+ this._columns.forEach((col) => {
62906
62913
  if (!(col.field === expression.fieldName)) {
62907
62914
  this.clearSort(col.field);
62908
62915
  }
@@ -63264,7 +63271,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63264
63271
  * ```
63265
63272
  */
63266
63273
  get hasSortableColumns() {
63267
- return this.columnList.some((col) => col.sortable);
63274
+ return this._columns.some((col) => col.sortable);
63268
63275
  }
63269
63276
  /**
63270
63277
  * Returns if the `IgxGridComponent` has editable columns.
@@ -63275,7 +63282,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63275
63282
  * ```
63276
63283
  */
63277
63284
  get hasEditableColumns() {
63278
- return this.columnList.some((col) => col.editable);
63285
+ return this._columns.some((col) => col.editable);
63279
63286
  }
63280
63287
  /**
63281
63288
  * Returns if the `IgxGridComponent` has filterable columns.
@@ -63286,7 +63293,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63286
63293
  * ```
63287
63294
  */
63288
63295
  get hasFilterableColumns() {
63289
- return this.columnList.some((col) => col.filterable);
63296
+ return this._columns.some((col) => col.filterable);
63290
63297
  }
63291
63298
  /**
63292
63299
  * Returns if the `IgxGridComponent` has summarized columns.
@@ -63297,7 +63304,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63297
63304
  * ```
63298
63305
  */
63299
63306
  get hasSummarizedColumns() {
63300
- const summarizedColumns = this.columnList.filter(col => col.hasSummary && !col.hidden);
63307
+ const summarizedColumns = this._columns.filter(col => col.hasSummary && !col.hidden);
63301
63308
  return summarizedColumns.length > 0;
63302
63309
  }
63303
63310
  /**
@@ -63311,7 +63318,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63311
63318
  */
63312
63319
  get hasVisibleColumns() {
63313
63320
  if (this._hasVisibleColumns === undefined) {
63314
- return this.columnList ? this.columnList.some(c => !c.hidden) : false;
63321
+ return this._columns ? this._columns.some(c => !c.hidden) : false;
63315
63322
  }
63316
63323
  return this._hasVisibleColumns;
63317
63324
  }
@@ -63352,7 +63359,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63352
63359
  * ```
63353
63360
  */
63354
63361
  get hasColumnLayouts() {
63355
- return !!this.columnList.some(col => col.columnLayout);
63362
+ return !!this._columns.some(col => col.columnLayout);
63356
63363
  }
63357
63364
  /**
63358
63365
  * @hidden @internal
@@ -63450,8 +63457,8 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63450
63457
  return '0px';
63451
63458
  }
63452
63459
  const columnWidth = Math.floor(!Number.isFinite(sumExistingWidths) ?
63453
- Math.max(computedWidth / columnsToSize, MINIMUM_COLUMN_WIDTH$2) :
63454
- Math.max((computedWidth - sumExistingWidths) / columnsToSize, MINIMUM_COLUMN_WIDTH$2));
63460
+ Math.max(computedWidth / columnsToSize, this.minColumnWidth) :
63461
+ Math.max((computedWidth - sumExistingWidths) / columnsToSize, this.minColumnWidth));
63455
63462
  return columnWidth + 'px';
63456
63463
  }
63457
63464
  /**
@@ -63807,7 +63814,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63807
63814
  * ```
63808
63815
  */
63809
63816
  selectAllColumns() {
63810
- this.selectColumns(this.columnList.filter(c => !c.columnGroup));
63817
+ this.selectColumns(this._columns.filter(c => !c.columnGroup));
63811
63818
  }
63812
63819
  /**
63813
63820
  *
@@ -63916,7 +63923,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63916
63923
  navigateTo(rowIndex, visibleColIndex = -1, cb = null) {
63917
63924
  const totalItems = this.totalItemCount ?? this.dataView.length - 1;
63918
63925
  if (rowIndex < 0 || rowIndex > totalItems || (visibleColIndex !== -1
63919
- && this.columnList.map(col => col.visibleIndex).indexOf(visibleColIndex) === -1)) {
63926
+ && this._columns.map(col => col.visibleIndex).indexOf(visibleColIndex) === -1)) {
63920
63927
  return;
63921
63928
  }
63922
63929
  if (this.dataView.slice(rowIndex, rowIndex + 1).find(rec => rec.expression || rec.childGridsData)) {
@@ -63962,7 +63969,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63962
63969
  * ```
63963
63970
  */
63964
63971
  getNextCell(currRowIndex, curVisibleColIndex, callback = null) {
63965
- const columns = this.columnList.filter(col => !col.columnGroup && col.visibleIndex >= 0);
63972
+ const columns = this._columns.filter(col => !col.columnGroup && col.visibleIndex >= 0);
63966
63973
  const dataViewIndex = this._getDataViewIndex(currRowIndex);
63967
63974
  if (!this.isValidPosition(dataViewIndex, curVisibleColIndex)) {
63968
63975
  return { rowIndex: currRowIndex, visibleColumnIndex: curVisibleColIndex };
@@ -63997,7 +64004,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
63997
64004
  * ```
63998
64005
  */
63999
64006
  getPreviousCell(currRowIndex, curVisibleColIndex, callback = null) {
64000
- const columns = this.columnList.filter(col => !col.columnGroup && col.visibleIndex >= 0);
64007
+ const columns = this._columns.filter(col => !col.columnGroup && col.visibleIndex >= 0);
64001
64008
  const dataViewIndex = this._getDataViewIndex(currRowIndex);
64002
64009
  if (!this.isValidPosition(dataViewIndex, curVisibleColIndex)) {
64003
64010
  return { rowIndex: currRowIndex, visibleColumnIndex: curVisibleColIndex };
@@ -64417,9 +64424,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64417
64424
  */
64418
64425
  _derivePossibleWidth() {
64419
64426
  if (!this.columnWidthSetByUser) {
64420
- this._columnWidth = this.width !== null ? this.getPossibleColumnWidth() : MINIMUM_COLUMN_WIDTH$2 + 'px';
64427
+ this._columnWidth = this.width !== null ? this.getPossibleColumnWidth() : this.minColumnWidth + 'px';
64421
64428
  }
64422
- this.columnList.forEach((column) => {
64429
+ this._columns.forEach((column) => {
64423
64430
  if (this.hasColumnLayouts && parseInt(this._columnWidth, 10)) {
64424
64431
  const columnWidthCombined = parseInt(this._columnWidth, 10) * (column.colEnd ? column.colEnd - column.colStart : 1);
64425
64432
  column.defaultWidth = columnWidthCombined + 'px';
@@ -64472,7 +64479,8 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64472
64479
  * @hidden
64473
64480
  */
64474
64481
  _moveColumns(from, to, pos) {
64475
- const list = this.columnList.toArray();
64482
+ const orderedList = this._pinnedColumns.concat(this._unpinnedColumns);
64483
+ const list = orderedList;
64476
64484
  this._reorderColumns(from, to, pos, list);
64477
64485
  const newList = this._resetColumnList(list);
64478
64486
  this.updateColumns(newList);
@@ -64484,18 +64492,17 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64484
64492
  updateColumns(newColumns) {
64485
64493
  // update internal collections to retain order.
64486
64494
  this._pinnedColumns = newColumns
64487
- .filter((c) => c.pinned).sort((a, b) => this._pinnedColumns.indexOf(a) - this._pinnedColumns.indexOf(b));
64495
+ .filter((c) => c.pinned);
64488
64496
  this._unpinnedColumns = newColumns.filter((c) => !c.pinned);
64489
- this.columnList.reset(newColumns);
64490
- this.columnList.notifyOnChanges();
64491
- this._columns = this.columnList.toArray();
64497
+ this._columns = newColumns;
64498
+ this.resetCaches();
64492
64499
  }
64493
64500
  /**
64494
64501
  * @hidden
64495
64502
  */
64496
64503
  _resetColumnList(list) {
64497
64504
  if (!list) {
64498
- list = this.columnList.toArray();
64505
+ list = this._columns;
64499
64506
  }
64500
64507
  let newList = [];
64501
64508
  list.filter(c => c.level === 0).forEach(p => {
@@ -64543,7 +64550,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64543
64550
  if (this.autoGenerate) {
64544
64551
  this.autogenerateColumns();
64545
64552
  }
64546
- this.initColumns(this.columnList, (col) => this.columnInit.emit(col));
64553
+ else {
64554
+ this._columns = this.getColumnList();
64555
+ }
64556
+ this.initColumns(this._columns, (col) => this.columnInit.emit(col));
64547
64557
  this.columnListDiffer.diff(this.columnList);
64548
64558
  this.columnList.changes
64549
64559
  .pipe(takeUntil(this.destroy$))
@@ -64551,6 +64561,9 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64551
64561
  this.onColumnsChanged(change);
64552
64562
  });
64553
64563
  }
64564
+ getColumnList() {
64565
+ return this.columnList.toArray();
64566
+ }
64554
64567
  /**
64555
64568
  * @hidden
64556
64569
  */
@@ -64592,10 +64605,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64592
64605
  */
64593
64606
  onColumnsChanged(change) {
64594
64607
  const diff = this.columnListDiffer.diff(change);
64595
- if (this.autoGenerate && this.columnList.length === 0 && this._autoGeneratedCols.length > 0) {
64608
+ if (this.autoGenerate && this._columns.length === 0 && this._autoGeneratedCols.length > 0) {
64596
64609
  // In Ivy if there are nested conditional templates the content children are re-evaluated
64597
64610
  // hence autogenerated columns are cleared and need to be reset.
64598
- this.columnList.reset(this._autoGeneratedCols);
64611
+ this.updateColumns(this._autoGeneratedCols);
64599
64612
  return;
64600
64613
  }
64601
64614
  if (diff) {
@@ -64610,7 +64623,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64610
64623
  this._unpinnedColumns.push(record.item);
64611
64624
  }
64612
64625
  });
64613
- this.initColumns(this.columnList, (col) => this.columnInit.emit(col));
64626
+ this.initColumns(this.columnList.toArray(), (col) => this.columnInit.emit(col));
64614
64627
  diff.forEachRemovedItem((record) => {
64615
64628
  const isColumnGroup = record.item instanceof IgxColumnGroupComponent;
64616
64629
  if (!isColumnGroup) {
@@ -64819,10 +64832,13 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64819
64832
  this.tbody.nativeElement.style.display = 'none';
64820
64833
  let res = !this.nativeElement.parentElement ||
64821
64834
  this.nativeElement.parentElement.clientHeight === 0 ||
64822
- this.nativeElement.parentElement.clientHeight === renderedHeight ||
64835
+ this.nativeElement.parentElement.clientHeight === renderedHeight;
64836
+ if ((!this.platform.isChromium && !this.platform.isFirefox) || this._autoSize) {
64823
64837
  // If grid causes the parent container to extend (for example when container is flex)
64824
64838
  // we should always auto-size since the actual size of the container will continuously change as the grid renders elements.
64825
- this.checkContainerSizeChange();
64839
+ this._autoSize = false;
64840
+ res = this.checkContainerSizeChange();
64841
+ }
64826
64842
  this.tbody.nativeElement.style.display = '';
64827
64843
  return res;
64828
64844
  }
@@ -64906,7 +64922,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64906
64922
  columns.push(ref.instance);
64907
64923
  });
64908
64924
  this._autoGeneratedCols = columns;
64909
- this.columnList.reset(columns);
64925
+ this.updateColumns(columns);
64910
64926
  if (data && data.length > 0) {
64911
64927
  this.shouldGenerate = false;
64912
64928
  }
@@ -64918,10 +64934,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64918
64934
  * @hidden
64919
64935
  */
64920
64936
  initColumns(collection, cb = null) {
64921
- this._columnGroups = this.columnList.some(col => col.columnGroup);
64937
+ this._columnGroups = collection.some(col => col.columnGroup);
64922
64938
  if (this.hasColumnLayouts) {
64923
64939
  // Set overall row layout size
64924
- this.columnList.forEach((col) => {
64940
+ collection.forEach((col) => {
64925
64941
  if (col.columnLayout) {
64926
64942
  const layoutSize = col.children ?
64927
64943
  col.children.reduce((acc, val) => Math.max(val.rowStart + val.gridRowSpan - 1, acc), 1) :
@@ -64933,18 +64949,17 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64933
64949
  if (this.hasColumnLayouts && this.hasColumnGroups) {
64934
64950
  // invalid configuration - multi-row and column groups
64935
64951
  // remove column groups
64936
- const columnLayoutColumns = this.columnList.filter((col) => col.columnLayout || col.columnLayoutChild);
64937
- this.columnList.reset(columnLayoutColumns);
64952
+ const columnLayoutColumns = collection.filter((col) => col.columnLayout || col.columnLayoutChild);
64953
+ collection = columnLayoutColumns;
64938
64954
  }
64939
64955
  this._maxLevelHeaderDepth = null;
64940
- this._columns = this.columnList.toArray();
64941
64956
  collection.forEach((column) => {
64942
64957
  column.defaultWidth = this.columnWidthSetByUser ? this._columnWidth : column.defaultWidth ? column.defaultWidth : '';
64943
64958
  if (cb) {
64944
64959
  cb(column);
64945
64960
  }
64946
64961
  });
64947
- this.reinitPinStates();
64962
+ this.updateColumns(collection);
64948
64963
  if (this.hasColumnLayouts) {
64949
64964
  collection.forEach((column) => {
64950
64965
  column.populateVisibleIndexes();
@@ -64955,11 +64970,11 @@ class IgxGridBaseDirective extends DisplayDensityBase {
64955
64970
  * @hidden
64956
64971
  */
64957
64972
  reinitPinStates() {
64958
- this._pinnedColumns = this.columnList
64973
+ this._pinnedColumns = this._columns
64959
64974
  .filter((c) => c.pinned).sort((a, b) => this._pinnedColumns.indexOf(a) - this._pinnedColumns.indexOf(b));
64960
- this._unpinnedColumns = this.hasColumnGroups ? this.columnList.filter((c) => !c.pinned) :
64961
- this.columnList.filter((c) => !c.pinned)
64962
- .sort((a, b) => this._unpinnedColumns.findIndex(x => x.field === a.field) - this._unpinnedColumns.findIndex(x => x.field === b.field));
64975
+ this._unpinnedColumns = this.hasColumnGroups ? this._columns.filter((c) => !c.pinned) :
64976
+ this._columns.filter((c) => !c.pinned)
64977
+ .sort((a, b) => this._unpinnedColumns.indexOf(a) - this._unpinnedColumns.indexOf(b));
64963
64978
  }
64964
64979
  extractDataFromSelection(source, formatters = false, headers = false, columnData) {
64965
64980
  let columnsArray;
@@ -65138,7 +65153,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
65138
65153
  // Make sure we don't exceed unpinned area min width and get pinned and unpinned col collections.
65139
65154
  // We take into account top level columns (top level groups and non groups).
65140
65155
  // If top level is unpinned the pinning handles all children to be unpinned as well.
65141
- for (const column of this.columnList) {
65156
+ for (const column of this._columns) {
65142
65157
  if (column.pinned && !column.parent) {
65143
65158
  pinnedColumns.push(column);
65144
65159
  }
@@ -65214,7 +65229,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
65214
65229
  const cols = this.hasColumnLayouts ?
65215
65230
  this.visibleColumns.filter(x => x.columnLayout) : this.visibleColumns.filter(x => !x.columnGroup);
65216
65231
  cols.forEach((item) => {
65217
- colSum += parseInt((item.calcWidth || item.defaultWidth), 10) || MINIMUM_COLUMN_WIDTH$2;
65232
+ colSum += parseInt((item.calcWidth || item.defaultWidth), 10) || this.minColumnWidth;
65218
65233
  });
65219
65234
  if (!colSum) {
65220
65235
  return null;
@@ -65231,7 +65246,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
65231
65246
  _columnsReordered(column) {
65232
65247
  this.notifyChanges();
65233
65248
  if (this.hasColumnLayouts) {
65234
- this.columnList.filter(x => x.columnLayout).forEach(x => x.populateVisibleIndexes());
65249
+ this._columns.filter(x => x.columnLayout).forEach(x => x.populateVisibleIndexes());
65235
65250
  }
65236
65251
  // after reordering is done reset cached column collections.
65237
65252
  this.resetColumnCollections();
@@ -65393,7 +65408,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
65393
65408
  }
65394
65409
  isValidPosition(rowIndex, colIndex) {
65395
65410
  const rows = this.summariesRowList.filter(s => s.index !== 0).concat(this.rowList.toArray()).length;
65396
- const cols = this.columnList.filter(col => !col.columnGroup && col.visibleIndex >= 0 && !col.hidden).length;
65411
+ const cols = this._columns.filter(col => !col.columnGroup && col.visibleIndex >= 0 && !col.hidden).length;
65397
65412
  if (rows < 1 || cols < 1) {
65398
65413
  return false;
65399
65414
  }
@@ -66473,7 +66488,7 @@ class IgxGridMRLNavigationService extends IgxGridNavigationService {
66473
66488
  col.visibleIndex > this.activeNode.column && col.colStart > this.activeNode.layout.colStart);
66474
66489
  if (!column || (previous && this.activeNode.layout.colStart === 1)) {
66475
66490
  const index = previous ? parent.visibleIndex - 1 : parent.visibleIndex + 1;
66476
- const children = this.grid.columnList.find(cols => cols.columnLayout && cols.visibleIndex === index).children;
66491
+ const children = this.grid.columns.find(cols => cols.columnLayout && cols.visibleIndex === index).children;
66477
66492
  column = previous ? children.toArray().reverse().find(child => child.rowStart <= this.activeNode.layout.rowStart) :
66478
66493
  children.find(child => this.rowEnd(child) > this.activeNode.layout.rowStart && child.colStart === 1);
66479
66494
  }
@@ -68348,7 +68363,7 @@ class IgxGridComponent extends IgxGridBaseDirective {
68348
68363
  this._applyGrouping();
68349
68364
  this.notifyChanges();
68350
68365
  }
68351
- if (!this._init && JSON.stringify(oldExpressions) !== JSON.stringify(newExpressions) && this.columnList) {
68366
+ if (!this._init && JSON.stringify(oldExpressions) !== JSON.stringify(newExpressions) && this._columns) {
68352
68367
  const groupedCols = [];
68353
68368
  const ungroupedCols = [];
68354
68369
  const groupedColsArr = newExpressions.filter((obj) => !oldExpressions.some((obj2) => obj.fieldName === obj2.fieldName));
@@ -68412,7 +68427,7 @@ class IgxGridComponent extends IgxGridBaseDirective {
68412
68427
  else {
68413
68428
  this.groupingDiffer = null;
68414
68429
  }
68415
- if (this.columnList && this.groupingExpressions) {
68430
+ if (this._columns && this.groupingExpressions) {
68416
68431
  this._setGroupColsVisibility(value);
68417
68432
  }
68418
68433
  this._hideGroupedColumns = value;
@@ -68466,7 +68481,7 @@ class IgxGridComponent extends IgxGridBaseDirective {
68466
68481
  */
68467
68482
  getCellByColumnVisibleIndex(rowIndex, index) {
68468
68483
  const row = this.getRowByIndex(rowIndex);
68469
- const column = this.columnList.find((col) => col.visibleIndex === index);
68484
+ const column = this._columns.find((col) => col.visibleIndex === index);
68470
68485
  if (row && row instanceof IgxGridRow && !row.data?.detailsData && column) {
68471
68486
  return new IgxGridCell(this, rowIndex, column.field);
68472
68487
  }
@@ -68729,7 +68744,7 @@ class IgxGridComponent extends IgxGridBaseDirective {
68729
68744
  * ```
68730
68745
  */
68731
68746
  get hasGroupableColumns() {
68732
- return this.columnList.some((col) => col.groupable && !col.columnGroup);
68747
+ return this._columns.some((col) => col.groupable && !col.columnGroup);
68733
68748
  }
68734
68749
  /**
68735
68750
  * Returns whether the `IgxGridComponent` has group area.
@@ -68853,7 +68868,7 @@ class IgxGridComponent extends IgxGridBaseDirective {
68853
68868
  this._groupRowTemplate = this.groupTemplate.template;
68854
68869
  }
68855
68870
  this.detailTemplate.changes.subscribe(() => this.trackChanges = (_, rec) => (rec?.detailsData !== undefined ? rec.detailsData : rec));
68856
- if (this.hideGroupedColumns && this.columnList && this.groupingExpressions) {
68871
+ if (this.hideGroupedColumns && this._columns && this.groupingExpressions) {
68857
68872
  this._setGroupColsVisibility(this.hideGroupedColumns);
68858
68873
  }
68859
68874
  this._setupNavigationService();
@@ -68901,9 +68916,9 @@ class IgxGridComponent extends IgxGridBaseDirective {
68901
68916
  * @hidden @internal
68902
68917
  */
68903
68918
  ngDoCheck() {
68904
- if (this.groupingDiffer && this.columnList && !this.hasColumnLayouts) {
68919
+ if (this.groupingDiffer && this._columns && !this.hasColumnLayouts) {
68905
68920
  const changes = this.groupingDiffer.diff(this.groupingExpressions);
68906
- if (changes && this.columnList.length > 0) {
68921
+ if (changes && this._columns.length > 0) {
68907
68922
  changes.forEachAddedItem((rec) => {
68908
68923
  const col = this.getColumnByName(rec.item.fieldName);
68909
68924
  if (col) {
@@ -69033,7 +69048,7 @@ class IgxGridComponent extends IgxGridBaseDirective {
69033
69048
  */
69034
69049
  getCellByColumn(rowIndex, columnField) {
69035
69050
  const row = this.getRowByIndex(rowIndex);
69036
- const column = this.columnList.find((col) => col.field === columnField);
69051
+ const column = this._columns.find((col) => col.field === columnField);
69037
69052
  if (row && row instanceof IgxGridRow && !row.data?.detailsData && column) {
69038
69053
  if (this.pagingMode === 1 && this.gridAPI.grid.page !== 0) {
69039
69054
  row.index = rowIndex + this.paginator.perPage * this.paginator.page;
@@ -69055,7 +69070,7 @@ class IgxGridComponent extends IgxGridBaseDirective {
69055
69070
  */
69056
69071
  getCellByKey(rowSelector, columnField) {
69057
69072
  const row = this.getRowByKey(rowSelector);
69058
- const column = this.columnList.find((col) => col.field === columnField);
69073
+ const column = this._columns.find((col) => col.field === columnField);
69059
69074
  if (row && column) {
69060
69075
  return new IgxGridCell(this, row.index, columnField);
69061
69076
  }
@@ -69157,7 +69172,7 @@ class IgxGridComponent extends IgxGridBaseDirective {
69157
69172
  return !expression.fieldName;
69158
69173
  }
69159
69174
  _setGroupColsVisibility(value) {
69160
- if (this.columnList.length > 0 && !this.hasColumnLayouts) {
69175
+ if (this._columns.length > 0 && !this.hasColumnLayouts) {
69161
69176
  this.groupingExpressions.forEach((expr) => {
69162
69177
  const col = this.getColumnByName(expr.fieldName);
69163
69178
  col.hidden = value;
@@ -69332,7 +69347,7 @@ class IgxGridStateDirective {
69332
69347
  },
69333
69348
  columns: {
69334
69349
  getFeatureState: (context) => {
69335
- const gridColumns = context.currGrid.columnList.map((c) => ({
69350
+ const gridColumns = context.currGrid.columns.map((c) => ({
69336
69351
  pinned: c.pinned,
69337
69352
  sortable: c.sortable,
69338
69353
  filterable: c.filterable,
@@ -69392,6 +69407,9 @@ class IgxGridStateDirective {
69392
69407
  }
69393
69408
  });
69394
69409
  context.grid.updateColumns(newColumns);
69410
+ newColumns.forEach(col => {
69411
+ context.grid.columnInit.emit(col);
69412
+ });
69395
69413
  }
69396
69414
  },
69397
69415
  groupBy: {
@@ -69641,13 +69659,11 @@ class IgxGridStateDirective {
69641
69659
  // TODO Notify the grid that columnList.changes is triggered by the state directive
69642
69660
  // instead of piping it like below
69643
69661
  const columns = 'columns';
69644
- this.grid.columnList.changes.pipe(delay(0), take(1)).subscribe(() => {
69645
- this.featureKeys = this.featureKeys.filter(f => f !== columns);
69646
- this.restoreFeatures(state);
69647
- });
69648
69662
  this.applyFeatures(features);
69649
69663
  if (this.featureKeys.includes(columns) && this.options[columns] && state[columns]) {
69650
69664
  this.getFeature(columns).restoreFeatureState(this, state[columns]);
69665
+ this.featureKeys = this.featureKeys.filter(f => f !== columns);
69666
+ this.restoreFeatures(state);
69651
69667
  }
69652
69668
  else {
69653
69669
  this.restoreFeatures(state);
@@ -69698,8 +69714,8 @@ class IgxGridStateDirective {
69698
69714
  else {
69699
69715
  const expr = item;
69700
69716
  let dataType;
69701
- if (this.currGrid.columnList.length > 0) {
69702
- dataType = this.currGrid.columnList.find(c => c.field === expr.fieldName).dataType;
69717
+ if (this.currGrid.columns.length > 0) {
69718
+ dataType = this.currGrid.columns.find(c => c.field === expr.fieldName).dataType;
69703
69719
  }
69704
69720
  else if (this.state.columns) {
69705
69721
  dataType = this.state.columns.find(c => c.field === expr.fieldName).dataType;
@@ -70034,14 +70050,14 @@ class IgxColumnLayoutComponent extends IgxColumnGroupComponent {
70034
70050
  set hidden(value) {
70035
70051
  this._hidden = value;
70036
70052
  this.children.forEach(child => child.hidden = value);
70037
- if (this.grid && this.grid.columnList && this.grid.columnList.length > 0) {
70053
+ if (this.grid && this.grid.columns && this.grid.columns.length > 0) {
70038
70054
  // reset indexes in case columns are hidden/shown runtime
70039
70055
  const columns = this.grid && this.grid.pinnedColumns && this.grid.unpinnedColumns ?
70040
70056
  this.grid.pinnedColumns.concat(this.grid.unpinnedColumns) : [];
70041
70057
  if (!this._hidden && !columns.find(c => c.field === this.field)) {
70042
70058
  this.grid.resetColumnCollections();
70043
70059
  }
70044
- this.grid.columnList.filter(x => x.columnLayout).forEach(x => x.populateVisibleIndexes());
70060
+ this.grid.columns.filter(x => x.columnLayout).forEach(x => x.populateVisibleIndexes());
70045
70061
  }
70046
70062
  }
70047
70063
  /**
@@ -71968,13 +71984,13 @@ class IgxTreeGridGroupByAreaComponent extends IgxGroupByAreaDirective {
71968
71984
  return this._hideGroupedColumns;
71969
71985
  }
71970
71986
  set hideGroupedColumns(value) {
71971
- if (this.grid.columnList && this.expressions) {
71987
+ if (this.grid.columns && this.expressions) {
71972
71988
  this.setColumnsVisibility(value);
71973
71989
  }
71974
71990
  this._hideGroupedColumns = value;
71975
71991
  }
71976
71992
  ngAfterContentInit() {
71977
- if (this.grid.columnList && this.expressions) {
71993
+ if (this.grid.columns && this.expressions) {
71978
71994
  this.groupingDiffer = this.differs.find(this.expressions).create();
71979
71995
  this.updateColumnsVisibility();
71980
71996
  }
@@ -72025,9 +72041,9 @@ class IgxTreeGridGroupByAreaComponent extends IgxGroupByAreaDirective {
72025
72041
  this.updateColumnsVisibility();
72026
72042
  }
72027
72043
  updateColumnsVisibility() {
72028
- if (this.groupingDiffer && this.grid.columnList && !this.grid.hasColumnLayouts) {
72044
+ if (this.groupingDiffer && this.grid.columns && !this.grid.hasColumnLayouts) {
72029
72045
  const changes = this.groupingDiffer.diff(this.expressions);
72030
- if (changes && this.grid.columnList.length > 0) {
72046
+ if (changes && this.grid.columns.length > 0) {
72031
72047
  changes.forEachAddedItem((rec) => {
72032
72048
  const col = this.grid.getColumnByName(rec.item.fieldName);
72033
72049
  col.hidden = this.hideGroupedColumns;
@@ -72040,7 +72056,7 @@ class IgxTreeGridGroupByAreaComponent extends IgxGroupByAreaDirective {
72040
72056
  }
72041
72057
  }
72042
72058
  setColumnsVisibility(value) {
72043
- if (this.grid.columnList.length > 0 && !this.grid.hasColumnLayouts) {
72059
+ if (this.grid.columns.length > 0 && !this.grid.hasColumnLayouts) {
72044
72060
  this.expressions.forEach((expr) => {
72045
72061
  const col = this.grid.getColumnByName(expr.fieldName);
72046
72062
  col.hidden = value;
@@ -73520,7 +73536,7 @@ class IgxTreeGridComponent extends IgxGridBaseDirective {
73520
73536
  */
73521
73537
  getCellByColumnVisibleIndex(rowIndex, index) {
73522
73538
  const row = this.getRowByIndex(rowIndex);
73523
- const column = this.columnList.find((col) => col.visibleIndex === index);
73539
+ const column = this.columns.find((col) => col.visibleIndex === index);
73524
73540
  if (row && row instanceof IgxTreeGridRow && column) {
73525
73541
  return new IgxGridCell(this, rowIndex, column.field);
73526
73542
  }
@@ -73675,7 +73691,7 @@ class IgxTreeGridComponent extends IgxGridBaseDirective {
73675
73691
  addRow(data, parentRowID) {
73676
73692
  this.crudService.endEdit(true);
73677
73693
  this.gridAPI.addRowToData(data, parentRowID);
73678
- this.rowAddedNotifier.next({ data });
73694
+ this.rowAddedNotifier.next({ data: data, owner: this });
73679
73695
  this.pipeTrigger++;
73680
73696
  this.notifyChanges();
73681
73697
  }
@@ -73782,7 +73798,22 @@ class IgxTreeGridComponent extends IgxGridBaseDirective {
73782
73798
  // if this is flat self-referencing data, and CascadeOnDelete is set to true
73783
73799
  // and if we have transactions we should start pending transaction. This allows
73784
73800
  // us in case of delete action to delete all child rows as single undo action
73785
- return this.gridAPI.deleteRowById(rowId);
73801
+ const args = {
73802
+ rowID: rowId,
73803
+ cancel: false,
73804
+ rowData: this.getRowData(rowId),
73805
+ oldValue: null,
73806
+ owner: this
73807
+ };
73808
+ this.rowDelete.emit(args);
73809
+ if (args.cancel) {
73810
+ return;
73811
+ }
73812
+ const record = this.gridAPI.deleteRowById(rowId);
73813
+ if (record !== null && record !== undefined) {
73814
+ this.rowDeleted.emit({ data: record, owner: this });
73815
+ }
73816
+ return record;
73786
73817
  }
73787
73818
  /**
73788
73819
  * Returns the `IgxTreeGridRow` by index.
@@ -73857,7 +73888,7 @@ class IgxTreeGridComponent extends IgxGridBaseDirective {
73857
73888
  */
73858
73889
  getCellByColumn(rowIndex, columnField) {
73859
73890
  const row = this.getRowByIndex(rowIndex);
73860
- const column = this.columnList.find((col) => col.field === columnField);
73891
+ const column = this.columns.find((col) => col.field === columnField);
73861
73892
  if (row && row instanceof IgxTreeGridRow && column) {
73862
73893
  return new IgxGridCell(this, rowIndex, columnField);
73863
73894
  }
@@ -73876,7 +73907,7 @@ class IgxTreeGridComponent extends IgxGridBaseDirective {
73876
73907
  */
73877
73908
  getCellByKey(rowSelector, columnField) {
73878
73909
  const row = this.getRowByKey(rowSelector);
73879
- const column = this.columnList.find((col) => col.field === columnField);
73910
+ const column = this.columns.find((col) => col.field === columnField);
73880
73911
  if (row && column) {
73881
73912
  return new IgxGridCell(this, row.index, columnField);
73882
73913
  }
@@ -73934,7 +73965,7 @@ class IgxTreeGridComponent extends IgxGridBaseDirective {
73934
73965
  * ```
73935
73966
  */
73936
73967
  get hasGroupableColumns() {
73937
- return this.columnList.some((col) => col.groupable && !col.columnGroup);
73968
+ return this.columns.some((col) => col.groupable && !col.columnGroup);
73938
73969
  }
73939
73970
  generateDataFields(data) {
73940
73971
  return super.generateDataFields(data).filter(field => field !== this.childDataKey);
@@ -74017,8 +74048,8 @@ class IgxTreeGridComponent extends IgxGridBaseDirective {
74017
74048
  if (this.hasColumnLayouts) {
74018
74049
  // invalid configuration - tree grid should not allow column layouts
74019
74050
  // remove column layouts
74020
- const nonColumnLayoutColumns = this.columnList.filter((col) => !col.columnLayout && !col.columnLayoutChild);
74021
- this.columnList.reset(nonColumnLayoutColumns);
74051
+ const nonColumnLayoutColumns = this.columns.filter((col) => !col.columnLayout && !col.columnLayoutChild);
74052
+ this.updateColumns(nonColumnLayoutColumns);
74022
74053
  }
74023
74054
  super.initColumns(collection, cb);
74024
74055
  }
@@ -74120,6 +74151,7 @@ IgxTreeGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
74120
74151
  IgxGridCRUDService,
74121
74152
  IgxGridSummaryService,
74122
74153
  IgxGridNavigationService,
74154
+ IgxColumnResizingService,
74123
74155
  { provide: IgxGridSelectionService, useClass: IgxTreeGridSelectionService },
74124
74156
  { provide: IGX_GRID_SERVICE_BASE, useClass: IgxTreeGridAPIService },
74125
74157
  { provide: IGX_GRID_BASE, useExisting: IgxTreeGridComponent },
@@ -74133,6 +74165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
74133
74165
  IgxGridCRUDService,
74134
74166
  IgxGridSummaryService,
74135
74167
  IgxGridNavigationService,
74168
+ IgxColumnResizingService,
74136
74169
  { provide: IgxGridSelectionService, useClass: IgxTreeGridSelectionService },
74137
74170
  { provide: IGX_GRID_SERVICE_BASE, useClass: IgxTreeGridAPIService },
74138
74171
  { provide: IGX_GRID_BASE, useExisting: IgxTreeGridComponent },
@@ -74926,7 +74959,7 @@ class IgxHierarchicalGridBaseDirective extends IgxGridBaseDirective {
74926
74959
  */
74927
74960
  get maxLevelHeaderDepth() {
74928
74961
  if (this._maxLevelHeaderDepth === null) {
74929
- this._maxLevelHeaderDepth = this.columnList.reduce((acc, col) => Math.max(acc, col.level), 0);
74962
+ this._maxLevelHeaderDepth = this.columns.reduce((acc, col) => Math.max(acc, col.level), 0);
74930
74963
  }
74931
74964
  return this._maxLevelHeaderDepth;
74932
74965
  }
@@ -74969,13 +75002,12 @@ class IgxHierarchicalGridBaseDirective extends IgxGridBaseDirective {
74969
75002
  columns.push(ref.instance);
74970
75003
  });
74971
75004
  const result = flatten(columns);
74972
- this.columnList.reset(result);
74973
- this.columnList.notifyOnChanges();
75005
+ this.updateColumns(result);
74974
75006
  this.initPinning();
74975
75007
  const factoryColumn = this.resolver.resolveComponentFactory(IgxColumnComponent);
74976
75008
  const outputs = factoryColumn.outputs.filter(o => o.propName !== 'columnChange');
74977
75009
  outputs.forEach(output => {
74978
- this.columnList.forEach(column => {
75010
+ this.columns.forEach(column => {
74979
75011
  if (column[output.propName]) {
74980
75012
  column[output.propName].pipe(takeUntil(column.destroy$)).subscribe((args) => {
74981
75013
  const rowIslandColumn = this.parentIsland.childColumns.find(col => col.field === column.field);
@@ -75216,6 +75248,7 @@ class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective {
75216
75248
  this.rootGrid = null;
75217
75249
  this.layout_id = `igx-row-island-`;
75218
75250
  this.isInit = false;
75251
+ this._childColumns = [];
75219
75252
  }
75220
75253
  /**
75221
75254
  * Sets if all immediate children of the grids for this `IgxRowIslandComponent` should be expanded/collapsed.
@@ -75305,7 +75338,8 @@ class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective {
75305
75338
  const nestedColumns = this.children.map((layout) => layout.columnList.toArray());
75306
75339
  const colsArray = [].concat.apply([], nestedColumns);
75307
75340
  const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);
75308
- this.childColumns.reset(topCols);
75341
+ this._childColumns = topCols;
75342
+ this.updateColumns(this._childColumns);
75309
75343
  this.columnList.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {
75310
75344
  Promise.resolve().then(() => {
75311
75345
  this.updateColumnList();
@@ -75313,7 +75347,7 @@ class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective {
75313
75347
  });
75314
75348
  // handle column changes so that they are passed to child grid instances when columnChange is emitted.
75315
75349
  this.ri_columnListDiffer.diff(this.childColumns);
75316
- this.childColumns.toArray().forEach(x => x.columnChange.pipe(takeUntil(x.destroy$)).subscribe(() => this.updateColumnList()));
75350
+ this._childColumns.forEach(x => x.columnChange.pipe(takeUntil(x.destroy$)).subscribe(() => this.updateColumnList()));
75317
75351
  this.childColumns.changes.pipe(takeUntil(this.destroy$)).subscribe((change) => {
75318
75352
  const diff = this.ri_columnListDiffer.diff(change);
75319
75353
  if (diff) {
@@ -75400,15 +75434,9 @@ class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective {
75400
75434
  }
75401
75435
  return false;
75402
75436
  });
75403
- this.childColumns.reset(topCols);
75404
- if (this.parentIsland) {
75405
- this.parentIsland.columnList.notifyOnChanges();
75406
- }
75407
- else {
75408
- this.rootGrid.columnList.notifyOnChanges();
75409
- }
75437
+ this._childColumns = topCols;
75410
75438
  this.rowIslandAPI.getChildGrids().forEach((grid) => {
75411
- grid.createColumnsList(this.childColumns.toArray());
75439
+ grid.createColumnsList(this._childColumns);
75412
75440
  if (!document.body.contains(grid.nativeElement)) {
75413
75441
  grid.updateOnRender = true;
75414
75442
  }
@@ -76097,7 +76125,7 @@ class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective {
76097
76125
  */
76098
76126
  getCellByColumnVisibleIndex(rowIndex, index) {
76099
76127
  const row = this.getRowByIndex(rowIndex);
76100
- const column = this.columnList.find((col) => col.visibleIndex === index);
76128
+ const column = this.columns.find((col) => col.visibleIndex === index);
76101
76129
  if (row && row instanceof IgxHierarchicalGridRow && column) {
76102
76130
  return new IgxGridCell(this, rowIndex, column.field);
76103
76131
  }
@@ -76320,7 +76348,7 @@ class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective {
76320
76348
  */
76321
76349
  getCellByColumn(rowIndex, columnField) {
76322
76350
  const row = this.getRowByIndex(rowIndex);
76323
- const column = this.columnList.find((col) => col.field === columnField);
76351
+ const column = this.columns.find((col) => col.field === columnField);
76324
76352
  if (row && row instanceof IgxHierarchicalGridRow && column) {
76325
76353
  return new IgxGridCell(this, rowIndex, columnField);
76326
76354
  }
@@ -76339,7 +76367,7 @@ class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective {
76339
76367
  */
76340
76368
  getCellByKey(rowSelector, columnField) {
76341
76369
  const row = this.getRowByKey(rowSelector);
76342
- const column = this.columnList.find((col) => col.field === columnField);
76370
+ const column = this.columns.find((col) => col.field === columnField);
76343
76371
  if (row && column) {
76344
76372
  return new IgxGridCell(this, row.index, columnField);
76345
76373
  }
@@ -76615,8 +76643,8 @@ class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective {
76615
76643
  if (this.hasColumnLayouts) {
76616
76644
  // invalid configuration - hierarchical grid should not allow column layouts
76617
76645
  // remove column layouts
76618
- const nonColumnLayoutColumns = this.columnList.filter((col) => !col.columnLayout && !col.columnLayoutChild);
76619
- this.columnList.reset(nonColumnLayoutColumns);
76646
+ const nonColumnLayoutColumns = this.columns.filter((col) => !col.columnLayout && !col.columnLayoutChild);
76647
+ this.updateColumns(nonColumnLayoutColumns);
76620
76648
  }
76621
76649
  super.initColumns(collection, cb);
76622
76650
  }
@@ -76624,16 +76652,25 @@ class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective {
76624
76652
  if (this.parentIsland && this.parentIsland.childColumns.length > 0 && !this.autoGenerate) {
76625
76653
  this.createColumnsList(this.parentIsland.childColumns.toArray());
76626
76654
  }
76627
- super.setupColumns();
76655
+ else {
76656
+ super.setupColumns();
76657
+ }
76658
+ }
76659
+ getColumnList() {
76660
+ const childLayouts = this.parent ? this.childLayoutList : this.allLayoutList;
76661
+ const nestedColumns = childLayouts.map((layout) => layout.columnList.toArray());
76662
+ const colsArray = [].concat.apply([], nestedColumns);
76663
+ if (colsArray.length > 0) {
76664
+ const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);
76665
+ return topCols;
76666
+ }
76667
+ else {
76668
+ return this.columnList.toArray();
76669
+ }
76628
76670
  }
76629
76671
  onColumnsChanged(change) {
76630
76672
  Promise.resolve().then(() => {
76631
76673
  this.updateColumnList();
76632
- const cols = change.filter(c => c.grid === this);
76633
- if (cols.length > 0 || this.autoGenerate) {
76634
- this.columnList.reset(cols);
76635
- super.onColumnsChanged(this.columnList);
76636
- }
76637
76674
  });
76638
76675
  }
76639
76676
  _shouldAutoSize(renderedHeight) {
@@ -76649,8 +76686,8 @@ class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective {
76649
76686
  const colLength = this.columnList.length;
76650
76687
  if (colsArray.length > 0) {
76651
76688
  const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);
76652
- this.columnList.reset(topCols);
76653
- if (recalcColSizes && this.columnList.length !== colLength) {
76689
+ this.updateColumns(topCols);
76690
+ if (recalcColSizes && this.columns.length !== colLength) {
76654
76691
  this.calculateGridSizes(false);
76655
76692
  }
76656
76693
  }
@@ -76678,6 +76715,7 @@ IgxHierarchicalGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
76678
76715
  { provide: IGX_GRID_SERVICE_BASE, useClass: IgxHierarchicalGridAPIService },
76679
76716
  { provide: IGX_GRID_BASE, useExisting: IgxHierarchicalGridComponent },
76680
76717
  IgxGridSummaryService,
76718
+ IgxColumnResizingService,
76681
76719
  IgxFilteringService,
76682
76720
  IgxHierarchicalGridNavigationService,
76683
76721
  IgxForOfSyncService,
@@ -76692,6 +76730,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
76692
76730
  { provide: IGX_GRID_SERVICE_BASE, useClass: IgxHierarchicalGridAPIService },
76693
76731
  { provide: IGX_GRID_BASE, useExisting: IgxHierarchicalGridComponent },
76694
76732
  IgxGridSummaryService,
76733
+ IgxColumnResizingService,
76695
76734
  IgxFilteringService,
76696
76735
  IgxHierarchicalGridNavigationService,
76697
76736
  IgxForOfSyncService,
@@ -81470,17 +81509,67 @@ class IgxSplitterPaneComponent {
81470
81509
  this.overflow = 'auto';
81471
81510
  /**
81472
81511
  * @hidden @internal
81473
- * Gets/Sets the `minHeight` and `minWidth` properties of the current pane.
81512
+ * Get/Sets the `minWidth` properties of the current pane.
81513
+ */
81514
+ this.minWidth = '0';
81515
+ /**
81516
+ * @hidden @internal
81517
+ * Get/Sets the `maxWidth` properties of the current pane.
81518
+ */
81519
+ this.maxWidth = '100%';
81520
+ /**
81521
+ * @hidden @internal
81522
+ * Gets/Sets the `minHeight` properties of the current pane.
81474
81523
  */
81475
- this.minHeight = 0;
81524
+ this.minHeight = '0';
81476
81525
  /**
81477
81526
  * @hidden @internal
81478
- * Gets/Sets the `maxHeight` and `maxWidth` properties of the current `IgxSplitterPaneComponent`.
81527
+ * Gets/Sets the `maxHeight` properties of the current `IgxSplitterPaneComponent`.
81479
81528
  */
81480
81529
  this.maxHeight = '100%';
81481
81530
  this._size = 'auto';
81482
81531
  this._collapsed = false;
81483
81532
  }
81533
+ /**
81534
+ * Gets/Sets the minimum allowed size of the current pane.
81535
+ *
81536
+ * @example
81537
+ * ```html
81538
+ * <igx-splitter>
81539
+ * <igx-splitter-pane [minSize]='minSize'>...</igx-splitter-pane>
81540
+ * </igx-splitter>
81541
+ * ```
81542
+ */
81543
+ get minSize() {
81544
+ return this._minSize;
81545
+ }
81546
+ ;
81547
+ set minSize(value) {
81548
+ this._minSize = value;
81549
+ if (this.owner) {
81550
+ this.owner.panes.notifyOnChanges();
81551
+ }
81552
+ }
81553
+ /**
81554
+ * Gets/Set the maximum allowed size of the current pane.
81555
+ *
81556
+ * @example
81557
+ * ```html
81558
+ * <igx-splitter>
81559
+ * <igx-splitter-pane [maxSize]='maxSize'>...</igx-splitter-pane>
81560
+ * </igx-splitter>
81561
+ * ```
81562
+ */
81563
+ get maxSize() {
81564
+ return this._maxSize;
81565
+ }
81566
+ ;
81567
+ set maxSize(value) {
81568
+ this._maxSize = value;
81569
+ if (this.owner) {
81570
+ this.owner.panes.notifyOnChanges();
81571
+ }
81572
+ }
81484
81573
  /**
81485
81574
  * Gets/Sets the size of the current pane.
81486
81575
  * * @example
@@ -81576,7 +81665,7 @@ class IgxSplitterPaneComponent {
81576
81665
  }
81577
81666
  }
81578
81667
  IgxSplitterPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: IgxSplitterPaneComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
81579
- IgxSplitterPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: IgxSplitterPaneComponent, selector: "igx-splitter-pane", inputs: { minSize: "minSize", maxSize: "maxSize", resizable: "resizable", size: "size", collapsed: "collapsed" }, outputs: { collapsedChange: "collapsedChange" }, host: { properties: { "style.display": "this.display", "style.order": "this.order", "style.overflow": "this.overflow", "style.min-height": "this.minHeight", "style.min-width": "this.minHeight", "style.max-height": "this.maxHeight", "style.max-width": "this.maxHeight", "style.flex": "this.flex" } }, ngImport: i0, template: "<ng-content></ng-content>" });
81668
+ IgxSplitterPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: IgxSplitterPaneComponent, selector: "igx-splitter-pane", inputs: { minSize: "minSize", maxSize: "maxSize", resizable: "resizable", size: "size", collapsed: "collapsed" }, outputs: { collapsedChange: "collapsedChange" }, host: { properties: { "style.display": "this.display", "style.order": "this.order", "style.overflow": "this.overflow", "style.min-width": "this.minWidth", "style.max-width": "this.maxWidth", "style.min-height": "this.minHeight", "style.max-height": "this.maxHeight", "style.flex": "this.flex" } }, ngImport: i0, template: "<ng-content></ng-content>" });
81580
81669
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: IgxSplitterPaneComponent, decorators: [{
81581
81670
  type: Component,
81582
81671
  args: [{ selector: 'igx-splitter-pane', template: "<ng-content></ng-content>" }]
@@ -81597,18 +81686,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
81597
81686
  }], overflow: [{
81598
81687
  type: HostBinding,
81599
81688
  args: ['style.overflow']
81689
+ }], minWidth: [{
81690
+ type: HostBinding,
81691
+ args: ['style.min-width']
81692
+ }], maxWidth: [{
81693
+ type: HostBinding,
81694
+ args: ['style.max-width']
81600
81695
  }], minHeight: [{
81601
81696
  type: HostBinding,
81602
81697
  args: ['style.min-height']
81603
- }, {
81604
- type: HostBinding,
81605
- args: ['style.min-width']
81606
81698
  }], maxHeight: [{
81607
81699
  type: HostBinding,
81608
81700
  args: ['style.max-height']
81609
- }, {
81610
- type: HostBinding,
81611
- args: ['style.max-width']
81612
81701
  }], size: [{
81613
81702
  type: Input
81614
81703
  }], flex: [{
@@ -81727,6 +81816,7 @@ class IgxSplitterComponent {
81727
81816
  set type(value) {
81728
81817
  this._type = value;
81729
81818
  this.resetPaneSizes();
81819
+ this.panes?.notifyOnChanges();
81730
81820
  }
81731
81821
  /**
81732
81822
  * @hidden @internal
@@ -81831,7 +81921,17 @@ class IgxSplitterComponent {
81831
81921
  * This method inits panes with properties.
81832
81922
  */
81833
81923
  initPanes() {
81834
- this.panes.forEach(pane => pane.owner = this);
81924
+ this.panes.forEach(pane => {
81925
+ pane.owner = this;
81926
+ if (this.type === SplitterType.Horizontal) {
81927
+ pane.minWidth = pane.minSize ?? '0';
81928
+ pane.maxWidth = pane.maxSize ?? '100%';
81929
+ }
81930
+ else {
81931
+ pane.minHeight = pane.minSize ?? '0';
81932
+ pane.maxHeight = pane.maxSize ?? '100%';
81933
+ }
81934
+ });
81835
81935
  this.assignFlexOrder();
81836
81936
  if (this.panes.filter(x => x.collapsed).length > 0) {
81837
81937
  // if any panes are collapsed, reset sizes.
@@ -81845,7 +81945,13 @@ class IgxSplitterComponent {
81845
81945
  resetPaneSizes() {
81846
81946
  if (this.panes) {
81847
81947
  // if type is changed runtime, should reset sizes.
81848
- this.panes.forEach(x => x.size = 'auto');
81948
+ this.panes.forEach(x => {
81949
+ x.size = 'auto';
81950
+ x.minWidth = '0';
81951
+ x.maxWidth = '100%';
81952
+ x.minHeight = '0';
81953
+ x.maxHeight = '100%';
81954
+ });
81849
81955
  }
81850
81956
  }
81851
81957
  /**
@@ -86265,6 +86371,17 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
86265
86371
  this.onDensityChanged.emit(densityChangedArgs);
86266
86372
  }
86267
86373
  }
86374
+ /**
86375
+ * @hidden @internal
86376
+ */
86377
+ get minColumnWidth() {
86378
+ if (this.superCompactMode) {
86379
+ return MINIMUM_COLUMN_WIDTH_SUPER_COMPACT;
86380
+ }
86381
+ else {
86382
+ return MINIMUM_COLUMN_WIDTH;
86383
+ }
86384
+ }
86268
86385
  get pivotKeys() {
86269
86386
  return this.pivotConfiguration.pivotKeys || DEFAULT_PIVOT_KEYS;
86270
86387
  }
@@ -86544,7 +86661,7 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
86544
86661
  */
86545
86662
  ngAfterContentInit() {
86546
86663
  // ignore any user defined columns and auto-generate based on pivot config.
86547
- this.columnList.reset([]);
86664
+ this.updateColumns([]);
86548
86665
  Promise.resolve().then(() => {
86549
86666
  this.setupColumns();
86550
86667
  });
@@ -87417,8 +87534,8 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
87417
87534
  }
87418
87535
  }
87419
87536
  });
87537
+ this.updateColumns(columns);
87420
87538
  this.reflow();
87421
- this.columnList.reset(columns);
87422
87539
  if (data && data.length > 0) {
87423
87540
  this.shouldGenerate = false;
87424
87541
  }
@@ -87470,7 +87587,6 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
87470
87587
  ref.instance.header = value.displayName;
87471
87588
  ref.instance.field = value.member;
87472
87589
  ref.instance.parent = parent;
87473
- ref.instance.width = MINIMUM_COLUMN_WIDTH + 'px';
87474
87590
  ref.instance.sortable = true;
87475
87591
  ref.instance.dataType = value.dataType || this.resolveDataTypes(data[0][value.member]);
87476
87592
  ref.instance.formatter = value.formatter;
@@ -87549,7 +87665,9 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
87549
87665
  ref.instance.header = parent != null ? key.split(parent.header + this.pivotKeys.columnDimensionSeparator)[1] : key;
87550
87666
  ref.instance.field = key;
87551
87667
  ref.instance.parent = parent;
87552
- ref.instance.width = this.resolveColumnDimensionWidth(value.dimension);
87668
+ if (value.dimension.width) {
87669
+ ref.instance.width = value.dimension.width;
87670
+ }
87553
87671
  const valueDefinition = this.values[0];
87554
87672
  ref.instance.dataType = valueDefinition?.dataType || this.resolveDataTypes(data[0][valueDefinition?.member]);
87555
87673
  ref.instance.formatter = valueDefinition?.formatter;
@@ -87561,20 +87679,21 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
87561
87679
  if (dim.width) {
87562
87680
  return dim.width;
87563
87681
  }
87564
- return this.superCompactMode ? MINIMUM_COLUMN_WIDTH_SUPER_COMPACT + 'px' : MINIMUM_COLUMN_WIDTH + 'px';
87682
+ return this.minColumnWidth + 'px';
87565
87683
  }
87566
87684
  getMeasureChildren(colFactory, data, parent, hidden, parentWidth) {
87567
87685
  const cols = [];
87568
87686
  const count = this.values.length;
87569
- const width = parentWidth ? parseInt(parentWidth, 10) / count :
87570
- this.superCompactMode ? MINIMUM_COLUMN_WIDTH_SUPER_COMPACT : MINIMUM_COLUMN_WIDTH;
87687
+ const childWidth = parseInt(parentWidth, 10) / count;
87571
87688
  const isPercent = parentWidth && parentWidth.indexOf('%') !== -1;
87572
87689
  this.values.forEach(val => {
87573
87690
  const ref = colFactory.create(this.viewRef.injector);
87574
87691
  ref.instance.header = val.displayName || val.member;
87575
87692
  ref.instance.field = parent.field + this.pivotKeys.columnDimensionSeparator + val.member;
87576
87693
  ref.instance.parent = parent;
87577
- ref.instance.width = isPercent ? width + '%' : width + 'px';
87694
+ if (parentWidth) {
87695
+ ref.instance.width = isPercent ? childWidth + '%' : childWidth + 'px';
87696
+ }
87578
87697
  ref.instance.hidden = hidden;
87579
87698
  ref.instance.sortable = true;
87580
87699
  ref.instance.dataType = val.dataType || this.resolveDataTypes(data[0][val.member]);