Skip to content

Commit f4e9845

Browse files
committed
feat(pivot-nav): set correct ids for row headers and set activation
1 parent 41d06da commit f4e9845

8 files changed

+116
-8
lines changed

projects/igniteui-angular/src/lib/grids/headers/grid-header-group.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ export class IgxGridHeaderGroupComponent implements DoCheck {
324324
this.column.applySelectableClass = false;
325325
}
326326

327-
private get activeNode() {
327+
protected get activeNode() {
328328
return {
329329
row: -1, column: this.column.visibleIndex, level: this.column.level,
330330
mchCache: { level: this.column.level, visibleIndex: this.column.visibleIndex },

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.module.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { IgxPivotRowPipe, IgxPivotColumnPipe, IgxPivotGridFilterPipe,
77
import { IgxGridComponent } from '../grid/grid.component';
88
import { IgxPivotHeaderRowComponent } from './pivot-header-row.component';
99
import { IgxPivotRowDimensionContentComponent } from './pivot-row-dimension-content.component';
10+
import { IgxPivotRowDimensionHeaderGroupComponent } from './pivot-row-dimension-header-group.component';
1011

1112
/**
1213
* @hidden
@@ -17,6 +18,7 @@ import { IgxPivotRowDimensionContentComponent } from './pivot-row-dimension-cont
1718
IgxPivotRowComponent,
1819
IgxPivotHeaderRowComponent,
1920
IgxPivotRowDimensionContentComponent,
21+
IgxPivotRowDimensionHeaderGroupComponent,
2022
IgxPivotRowPipe,
2123
IgxPivotRowExpansionPipe,
2224
IgxPivotColumnPipe,
@@ -29,6 +31,7 @@ import { IgxPivotRowDimensionContentComponent } from './pivot-row-dimension-cont
2931
IgxPivotRowComponent,
3032
IgxPivotHeaderRowComponent,
3133
IgxPivotRowDimensionContentComponent,
34+
IgxPivotRowDimensionHeaderGroupComponent,
3235
IgxPivotRowExpansionPipe,
3336
IgxPivotRowPipe,
3437
IgxPivotColumnPipe,

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-row-dimension-content.component.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
<!-- Unpinned columns collection -->
66
<ng-template ngFor #headerVirtualContainer let-column
77
[ngForOf]="unpinnedColumnCollection | igxTopLevel">
8-
<igx-grid-header-group [ngClass]="column.headerGroupClasses"
8+
<igx-pivot-row-dimension-header-group [ngClass]="column.headerGroupClasses"
99
[ngStyle]="column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger" [column]="column"
1010
[style.min-width]="column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL"
11-
[style.flex-basis]="column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL">
12-
</igx-grid-header-group>
11+
[style.flex-basis]="column.calcWidth | igxHeaderGroupWidth:grid.defaultHeaderGroupMinWidth:hasMRL"
12+
[intRow]="intRow">
13+
</igx-pivot-row-dimension-header-group>
1314
</ng-template>
1415
</div>
1516
</div>

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-row-dimension-content.component.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import {
22
ChangeDetectionStrategy,
3-
Component
3+
Component,
4+
Input
45
} from '@angular/core';
56
import { IgxGridHeaderRowComponent } from '../headers/grid-header-row.component';
7+
import { IgxRowDirective } from '../row.directive';
68

79
/**
810
*
@@ -18,4 +20,10 @@ import { IgxGridHeaderRowComponent } from '../headers/grid-header-row.component'
1820
templateUrl: './pivot-row-dimension-content.component.html'
1921
})
2022
export class IgxPivotRowDimensionContentComponent extends IgxGridHeaderRowComponent {
23+
/**
24+
* @hidden
25+
* @internal
26+
*/
27+
@Input()
28+
public intRow: IgxRowDirective;
2129
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Inject, Input } from '@angular/core';
2+
3+
import { PlatformUtil } from '../../core/utils';
4+
import { IGX_GRID_BASE, PivotGridType } from '../common/grid.interface';
5+
import { IgxFilteringService } from '../filtering/grid-filtering.service';
6+
import { IgxGridHeaderGroupComponent } from '../headers/grid-header-group.component';
7+
import { IgxColumnResizingService } from '../resizing/resizing.service';
8+
import { IgxRowDirective } from '../row.directive';
9+
import { IPivotDimension } from './pivot-grid.interface';
10+
11+
/**
12+
* @hidden
13+
*/
14+
@Component({
15+
changeDetection: ChangeDetectionStrategy.OnPush,
16+
selector: 'igx-pivot-row-dimension-header-group',
17+
templateUrl: '../headers/grid-header-group.component.html'
18+
})
19+
export class IgxPivotRowDimensionHeaderGroupComponent extends IgxGridHeaderGroupComponent {
20+
21+
constructor(private cdRef: ChangeDetectorRef,
22+
@Inject(IGX_GRID_BASE) public grid: PivotGridType,
23+
private elementRef: ElementRef<HTMLElement>,
24+
public colResizingService: IgxColumnResizingService,
25+
public filteringService: IgxFilteringService,
26+
protected platform: PlatformUtil) {
27+
super(cdRef, grid, elementRef, colResizingService, filteringService, platform);
28+
}
29+
30+
/**
31+
* @hidden
32+
* @internal
33+
*/
34+
@Input()
35+
public intRow: IgxRowDirective;
36+
37+
@HostBinding('attr.id')
38+
public get headerID() {
39+
return `${this.grid.id}_-2_${this.intRow.index}_${this.visibleIndex}`;
40+
}
41+
42+
/**
43+
* @hidden
44+
* @internal
45+
*/
46+
public get visibleIndex(): number {
47+
const field = this.column.field;
48+
const rows = this.grid.pivotConfiguration.rows;
49+
const rootDimension = this.findRootDimension(field);
50+
return rows.indexOf(rootDimension);
51+
}
52+
53+
@HostBinding('class.igx-grid-th--active')
54+
public get active() {
55+
const node = this.grid.navigation.activeNode;
56+
return node && !this.column.columnGroup ?
57+
node.isRowHeader && node.row === this.intRow.index && node.column === this.visibleIndex : false;
58+
}
59+
60+
public get activeGroup() {
61+
const node = this.grid.navigation.activeNode;
62+
return node ? node.isRowHeader && node.row === this.intRow.index && node.column === this.visibleIndex : false;
63+
}
64+
65+
protected get activeNode() {
66+
return {
67+
row: this.intRow.index, column: this.visibleIndex, level: null,
68+
mchCache: null,
69+
layout: null,
70+
isRowHeader: true
71+
};
72+
}
73+
74+
private findRootDimension(field: string): IPivotDimension {
75+
const rows = this.grid.pivotConfiguration.rows;
76+
let tempRow;
77+
let result = null;
78+
rows.forEach(row => {
79+
tempRow = row;
80+
do {
81+
if (row.memberName === field) {
82+
result = row;
83+
}
84+
tempRow = tempRow.childLevel;
85+
} while(tempRow)
86+
});
87+
return result;
88+
}
89+
}

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-row.component.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
[width]="grid.pivotRowWidths"
99
[unpinnedColumnCollection]="rowDimension"
1010
(scroll)="grid.preventHeaderScroll($event)"
11+
[intRow]="this"
1112
>
1213
</igx-pivot-row-dimension-content>
1314
</div>
@@ -31,7 +32,7 @@
3132
[column]="col"
3233
[formatter]="col.formatter"
3334
[intRow]="this"
34-
[active]="isCellActive(col.visibleIndex)"
35+
[active]="isPivotCellActive(col)"
3536
[style.min-height.px]="cellHeight"
3637
[data]="data"
3738
[style.min-width]="col.width"
@@ -77,7 +78,7 @@
7778
[column]="col"
7879
[formatter]="col.formatter"
7980
[intRow]="this"
80-
[active]="isCellActive(col.visibleIndex)"
81+
[active]="isPivotCellActive(col)"
8182
[firstPinned]="col.isFirstPinned"
8283
[lastPinned]="col.isLastPinned"
8384
[style.min-height.px]="cellHeight"

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ export class IgxPivotRowComponent extends IgxRowDirective implements OnChanges {
9494
}
9595
}
9696

97-
public getCellClass(col: any) {
97+
public getCellClass(col: IgxColumnComponent) {
9898
const configuration = this.grid.pivotConfiguration;
9999
if (configuration.values.length === 1) {
100100
return configuration.values[0].styles;
@@ -104,6 +104,11 @@ export class IgxPivotRowComponent extends IgxRowDirective implements OnChanges {
104104
return this.grid.pivotConfiguration.values.find(v => v.member === measureName)?.styles;
105105
}
106106

107+
public isPivotCellActive(col: IgxColumnComponent) {
108+
const node = this.grid.navigation.activeNode;
109+
return node ? !node.isRowHeader && super.isCellActive(col.visibleIndex) : false;
110+
}
111+
107112
protected extractFromDimensions(rowDimConfig: IPivotDimension[], level: number) {
108113
let dimIndex = 0;
109114
let currentLvl = 0;

projects/igniteui-angular/src/lib/grids/pivot-grid/public_api.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ export * from './pivot-grid.pipes';
77
export * from './pivot-row.component';
88
export * from './pivot-header-row.component';
99
export * from './pivot-row-dimension-content.component';
10+
export * from './pivot-row-dimension-header-group.component';

0 commit comments

Comments
 (0)