Skip to content

Commit a198cba

Browse files
authored
Merge pull request #9982 from IgniteUI/pbozhinov/fix-9917
Prevents child overlay from disappearing when scrolling in hierarchical grid
2 parents b5959d5 + 425565e commit a198cba

File tree

2 files changed

+51
-3
lines changed

2 files changed

+51
-3
lines changed

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ export class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirecti
9191
public toolbarTemplate: TemplateRef<IgxGridToolbarTemplateContext>;
9292

9393
/** @hidden @internal */
94-
@ContentChildren(IgxPaginatorComponent, {descendants: true})
94+
@ContentChildren(IgxPaginatorComponent, { descendants: true })
9595
public paginatorList: QueryList<IgxPaginatorComponent>;
9696

9797
@ViewChild('toolbarOutlet', { read: ViewContainerRef })
@@ -206,7 +206,7 @@ export class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirecti
206206
/** @hidden @internal */
207207
public get paginator() {
208208
const id = this.id;
209-
return (!this.parentIsland && this.paginationComponents?.first) || this.rootGrid.paginatorList?.find((pg) =>
209+
return (!this.parentIsland && this.paginationComponents?.first) || this.rootGrid.paginatorList?.find((pg) =>
210210
pg.nativeElement.offsetParent?.id === id);
211211
}
212212

@@ -296,7 +296,7 @@ export class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirecti
296296
* @param rowIndex
297297
* @param index
298298
*/
299-
@DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
299+
@DeprecateMethod('`getCellByColumnVisibleIndex` is deprecated. Use `getCellByColumn` or `getCellByKey` instead')
300300
public getCellByColumnVisibleIndex(rowIndex: number, index: number): CellType {
301301
const row = this.getRowByIndex(rowIndex);
302302
const column = this.columnList.find((col) => col.visibleIndex === index);
@@ -340,6 +340,15 @@ export class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirecti
340340
}
341341
}
342342

343+
/**
344+
* @hidden
345+
*/
346+
public get parentRowOutletDirective() {
347+
// Targeting parent outlet in order to prevent hiding when outlet
348+
// is present at a child grid and is attached to a row.
349+
return this.parent ? this.parent.rowOutletDirective : this.outlet;
350+
}
351+
343352
/**
344353
* @hidden
345354
*/

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1405,6 +1405,45 @@ describe('IgxHierarchicalGrid Runtime Row Island change Scenarios #hGrid', () =>
14051405

14061406
});
14071407

1408+
it(`Should keep the overlay when scrolling an igxHierarchicalGrid with an opened
1409+
row island with <= 2 data records`, async () => {
1410+
hierarchicalGrid.primaryKey = 'ID';
1411+
hierarchicalGrid.rowEditable = true;
1412+
hierarchicalGrid.getRowByIndex(0).expanded = true;
1413+
fixture.detectChanges();
1414+
1415+
const secondLevelGrid = hierarchicalGrid.hgridAPI.getChildGrids()[0];
1416+
expect(secondLevelGrid).not.toBeNull();
1417+
secondLevelGrid.getRowByIndex(0).expanded = true;
1418+
fixture.detectChanges();
1419+
1420+
const thirdLevelGrid = secondLevelGrid.hgridAPI.getChildGrids()[0];
1421+
thirdLevelGrid.primaryKey = 'ID';
1422+
thirdLevelGrid.rowEditable = true;
1423+
fixture.detectChanges();
1424+
1425+
expect(thirdLevelGrid).not.toBeNull();
1426+
expect(thirdLevelGrid.data.length).toBe(2);
1427+
1428+
const cellElem = thirdLevelGrid.gridAPI.get_cell_by_index(0, 'ChildLevels');
1429+
const row = thirdLevelGrid.gridAPI.get_row_by_index(0);
1430+
1431+
UIInteractions.simulateDoubleClickAndSelectEvent(cellElem);
1432+
fixture.detectChanges();
1433+
expect(row.inEditMode).toBe(true);
1434+
fixture.detectChanges();
1435+
1436+
let overlay = GridFunctions.getRowEditingOverlay(fixture);
1437+
expect(overlay).not.toBeNull();
1438+
1439+
await hierarchicalGrid.dragScroll({ left: 0, top: 10 });
1440+
fixture.detectChanges();
1441+
await wait(30);
1442+
1443+
overlay = GridFunctions.getRowEditingOverlay(fixture);
1444+
expect(overlay).not.toBeNull();
1445+
});
1446+
14081447
});
14091448

14101449
describe('IgxHierarchicalGrid custom template #hGrid', () => {

0 commit comments

Comments
 (0)