Skip to content

Commit 343b5db

Browse files
authored
Merge pull request #8592 from IgniteUI/ddincheva/colGroupsNav-9.1
Fix: navigation in MCH headers when grid has no data --9.1.x
2 parents 06e1a16 + da009e9 commit 343b5db

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

projects/igniteui-angular/src/lib/grids/grid-navigation.service.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@ export class IgxGridNavigationService {
230230
}
231231

232232
protected forOfDir(): IgxForOfDirective<any> {
233-
const forOfDir = this.grid.dataRowList.length > 0 ? this.grid.dataRowList.first.virtDirRow : this.grid.headerContainer;
233+
const forOfDir = this.grid.dataRowList.length > 0 ? this.grid.dataRowList.first.virtDirRow : this.grid.summariesRowList.length ?
234+
this.grid.summariesRowList.first.virtDirRow : this.grid.headerContainer;
234235
return forOfDir as IgxForOfDirective<any>;
235236
}
236237

@@ -324,6 +325,13 @@ export class IgxGridNavigationService {
324325
}
325326

326327
public performHorizontalScrollToCell(visibleColumnIndex: number, cb?: () => void) {
328+
if (this.grid.rowList < 1 && this.grid.summariesRowList.length < 1 && this.grid.hasColumnGroups) {
329+
let column = this.grid.getColumnByVisibleIndex(visibleColumnIndex);
330+
while (column.parent) {
331+
column = column.parent;
332+
}
333+
visibleColumnIndex = this.forOfDir().igxForOf.indexOf(column);
334+
}
327335
if (!this.shouldPerformHorizontalScroll(visibleColumnIndex)) { return; }
328336
this.pendingNavigation = true;
329337
this.grid.parentVirtDir.onChunkLoad

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
import { GridFunctions, GridSelectionFunctions } from '../../test-utils/grid-functions.spec';
1717
import { DebugElement } from '@angular/core';
1818
import { GridSelectionMode, FilterMode } from '../common/enums';
19+
import { IgxStringFilteringOperand } from '../../data-operations/filtering-condition';
1920

2021
const DEBOUNCETIME = 30;
2122

@@ -1231,5 +1232,42 @@ describe('IgxGrid - Headers Keyboard navigation #grid', () => {
12311232

12321233
expect(GridFunctions.getExcelStyleFilteringComponent(fix)).toBeNull();
12331234
});
1235+
1236+
it('MCH Grid with no data: should be able to navigate with arrow keys in the headers', () => {
1237+
grid.filter('Country', 'Bulgaria', IgxStringFilteringOperand.instance().condition('contains'), true);
1238+
fix.detectChanges();
1239+
1240+
expect(grid.rowList.length).toBe(0);
1241+
1242+
let header = GridFunctions.getColumnGroupHeaderCell('General Information', fix);
1243+
UIInteractions.simulateClickAndSelectEvent(header);
1244+
fix.detectChanges();
1245+
1246+
GridFunctions.verifyHeaderIsFocused(header);
1247+
1248+
UIInteractions.triggerEventHandlerKeyDown('ArrowRight', gridHeader, false, false, true);
1249+
fix.detectChanges();
1250+
1251+
header = GridFunctions.getColumnGroupHeaderCell('Address Information', fix);
1252+
GridFunctions.verifyHeaderIsFocused(header);
1253+
1254+
UIInteractions.triggerEventHandlerKeyDown('ArrowDown', gridHeader, false, false, false);
1255+
fix.detectChanges();
1256+
1257+
header = GridFunctions.getColumnHeader('Region', fix);
1258+
GridFunctions.verifyHeaderIsFocused(header.parent);
1259+
1260+
UIInteractions.triggerEventHandlerKeyDown('ArrowRight', gridHeader, false, false, false);
1261+
fix.detectChanges();
1262+
1263+
header = GridFunctions.getColumnGroupHeaderCell('Country Information', fix);
1264+
GridFunctions.verifyHeaderIsFocused(header);
1265+
1266+
UIInteractions.triggerEventHandlerKeyDown('ArrowLeft', gridHeader, false, false, true);
1267+
fix.detectChanges();
1268+
1269+
header = GridFunctions.getColumnHeader('CompanyName', fix);
1270+
GridFunctions.verifyHeaderIsFocused(header.parent);
1271+
});
12341272
});
12351273
});

0 commit comments

Comments
 (0)