From 9998fe69bc5b8c05702145a8e0de06c02e2345b8 Mon Sep 17 00:00:00 2001 From: ddaribo Date: Wed, 27 Sep 2023 13:49:16 +0300 Subject: [PATCH] fix(hgrid): add setter for child grid row data --- .../hierarchical-grid.component.ts | 14 +++++++++++- .../hierarchical-grid.spec.ts | 22 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.ts b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.ts index 7651f17ba22..45c38fe4a33 100644 --- a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.ts +++ b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.ts @@ -83,7 +83,17 @@ export class IgxChildGridRowComponent implements AfterViewInit, OnInit { * ``` */ @Input() - public data: any = []; + public get data(): any { + return this._data || []; + } + + public set data(value: any) { + this._data = value; + if (this.hGrid) { + this.hGrid.data = this._data.childGridsData[this.layout.key]; + } + } + /** * The index of the row. * @@ -150,6 +160,8 @@ export class IgxChildGridRowComponent implements AfterViewInit, OnInit { */ public expanded = false; + private _data: any; + constructor( @Inject(IGX_GRID_SERVICE_BASE) public gridAPI: IgxHierarchicalGridAPIService, public element: ElementRef, diff --git a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.spec.ts b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.spec.ts index a9f1945febc..439e9cd64b5 100644 --- a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.spec.ts @@ -449,6 +449,28 @@ describe('Basic IgxHierarchicalGrid #hGrid', () => { expect(childGrid.data).toBe(newData2[0].childData); }); + it('should update already created child grid with new records added to the root data', () => { + let row = hierarchicalGrid.gridAPI.get_row_by_index(0) as IgxHierarchicalRowComponent; + UIInteractions.simulateClickAndSelectEvent(row.expander); + fixture.detectChanges(); + + let childGrids = fixture.debugElement.queryAll(By.css('igx-child-grid-row')); + let childGrid = childGrids[0].query(By.css('igx-hierarchical-grid')).componentInstance; + + fixture.componentInstance.data[0].childData = [...hierarchicalGrid.data[0].childData ?? [], { ID: 10, ProductName: 'New child' }]; + fixture.componentInstance.data = [...fixture.componentInstance.data]; + fixture.detectChanges(); + + childGrids = fixture.debugElement.queryAll(By.css('igx-child-grid-row')); + childGrid = childGrids[0].query(By.css('igx-hierarchical-grid')).componentInstance; + + const length = fixture.componentInstance.data[0].childData.length; + const newRow = childGrid.gridAPI.get_row_by_index(length - 1) as IgxHierarchicalRowComponent; + + expect(newRow).not.toBeUndefined(); + expect(childGrid.data).toBe(fixture.componentInstance.data[0].childData); + }); + it('when child width is in percents its width should be update if parent width changes while parent row is collapsed. ', async () => { const row = hierarchicalGrid.gridAPI.get_row_by_index(0) as IgxHierarchicalRowComponent; UIInteractions.simulateClickAndSelectEvent(row.expander);