Skip to content

Commit 69b272c

Browse files
MKirovaMKirova
authored andcommitted
chore(*): Limit how often visibleColumns array changes.
1 parent 75fd965 commit 69b272c

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

projects/igniteui-angular/src/lib/core/utils.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,17 @@ export function cloneArray<T>(array: T[], deep = false): T[] {
3333
return deep ? (array ?? []).map(cloneValue) : (array ?? []).slice();
3434
}
3535

36+
/**
37+
* @hidden
38+
*/
39+
export function areEqualArrays<T>(arr1: T[], arr2: T[]): boolean {
40+
if (arr1.length !== arr2.length) return false;
41+
for (let i = 0; i < arr1.length; i++) {
42+
if (arr1[i] !== arr2[i]) return false;
43+
}
44+
return true;
45+
}
46+
3647
/**
3748
* Doesn't clone leaf items
3849
*

projects/igniteui-angular/src/lib/grids/grid-base.directive.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {
3333
ViewContainerRef,
3434
DOCUMENT
3535
} from '@angular/core';
36-
import { columnFieldPath, formatDate, resizeObservable } from '../core/utils';
36+
import { areEqualArrays, columnFieldPath, formatDate, resizeObservable } from '../core/utils';
3737
import { IgcTrialWatermark } from 'igniteui-trial-watermark';
3838
import { Subject, pipe, fromEvent, animationFrameScheduler, merge } from 'rxjs';
3939
import { takeUntil, first, filter, throttleTime, map, shareReplay, takeWhile } from 'rxjs/operators';
@@ -3358,6 +3358,7 @@ export abstract class IgxGridBaseDirective implements GridType,
33583358
private _defaultRowHeight = 50;
33593359
private _rowCount: number;
33603360
private _cellMergeMode: GridCellMergeMode = GridCellMergeMode.onSort;
3361+
private _prevVisibleColumns: IgxColumnComponent[] = [];
33613362

33623363
/**
33633364
* @hidden @internal
@@ -4733,7 +4734,12 @@ export abstract class IgxGridBaseDirective implements GridType,
47334734
if (this._visibleColumns.length) {
47344735
return this._visibleColumns;
47354736
}
4736-
this._visibleColumns = this._columns.filter(c => !c.hidden);
4737+
const newCollection = this._columns.filter(c => !c.hidden);
4738+
if (areEqualArrays(newCollection, this._prevVisibleColumns)) {
4739+
return this._prevVisibleColumns;
4740+
}
4741+
this._visibleColumns = newCollection;
4742+
this._prevVisibleColumns = [...this._visibleColumns];
47374743
return this._visibleColumns;
47384744
}
47394745

0 commit comments

Comments
 (0)