Skip to content

Commit 7796ab9

Browse files
fix(column): Update row island summaries when disabledSummaries changes
1 parent 73179f1 commit 7796ab9

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

projects/igniteui-angular/src/lib/grids/columns/column.component.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Subject } from 'rxjs';
2+
import { isEqual } from 'lodash-es';
23
import {
34
AfterContentInit,
45
ChangeDetectorRef,
@@ -1090,12 +1091,16 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
10901091
*
10911092
* @memberof IgxColumnComponent
10921093
*/
1094+
@WatchColumnChanges()
10931095
@Input()
10941096
public get disabledSummaries(): string[] {
10951097
return this._disabledSummaries;
10961098
}
10971099

10981100
public set disabledSummaries(value: string[]) {
1101+
if (isEqual(this._disabledSummaries, value)) {
1102+
return;
1103+
}
10991104
this._disabledSummaries = value;
11001105
if (this.grid) {
11011106
this.grid.summaryService.removeSummariesCachePerColumn(this.field);

projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.spec.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,6 +1085,40 @@ describe('Basic IgxHierarchicalGrid #hGrid', () => {
10851085
expect(childGrid1.columns[0].editable).toBeTrue();
10861086
expect(childGrid1.columns[1].editable).toBeTrue();
10871087
});
1088+
1089+
it('should update the row island summary UI when disabledSummaries is changed at runtime', fakeAsync(() => {
1090+
const masterRow = hierarchicalGrid.gridAPI.get_row_by_index(0) as IgxHierarchicalRowComponent;
1091+
UIInteractions.simulateClickAndSelectEvent(masterRow.expander);
1092+
fixture.detectChanges();
1093+
1094+
const childGrid = hierarchicalGrid.gridAPI.getChildGrids(false)[0] as IgxHierarchicalGridComponent;
1095+
fixture.detectChanges();
1096+
1097+
childGrid.columns.forEach(c => c.hasSummary = true);
1098+
fixture.detectChanges();
1099+
tick();
1100+
1101+
const column = childGrid.columns.find(c => c.field === 'ProductName');
1102+
expect(column).toBeDefined();
1103+
fixture.detectChanges();
1104+
tick();
1105+
1106+
const summaryCells = childGrid.nativeElement.querySelectorAll('igx-grid-summary-cell');
1107+
const summaryCell = summaryCells[1];
1108+
1109+
expect(summaryCell).toBeDefined();
1110+
expect(summaryCell.textContent.trim().length).toBeGreaterThan(0);
1111+
1112+
const getterSpy = spyOnProperty(column, 'disabledSummaries', 'get').and.callThrough();
1113+
1114+
column.disabledSummaries = ['count'];
1115+
fixture.detectChanges();
1116+
tick();
1117+
fixture.detectChanges();
1118+
1119+
expect(getterSpy).toHaveBeenCalledTimes(7);
1120+
expect(summaryCell.textContent.trim()).toEqual('');
1121+
}));
10881122
});
10891123

10901124
describe('IgxHierarchicalGrid Children Sizing #hGrid', () => {

0 commit comments

Comments
 (0)