Skip to content

Commit 2bbd9b8

Browse files
MKirovaMKirova
authored andcommitted
chore(*): Approximate click position in merge cell to activate closest row.
1 parent 3f7c27e commit 2bbd9b8

File tree

5 files changed

+34
-0
lines changed

5 files changed

+34
-0
lines changed

projects/igniteui-angular/src/lib/grids/cell.component.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,11 @@ export class IgxGridCellComponent implements OnInit, OnChanges, OnDestroy, CellT
151151
@Input()
152152
public isPlaceholder: boolean;
153153

154+
/**
155+
Gets whether this cell is a merged cell.
156+
*/
157+
@Input()
158+
public isMerged: boolean;
154159

155160
/**
156161
* @hidden
@@ -1016,6 +1021,19 @@ export class IgxGridCellComponent implements OnInit, OnChanges, OnDestroy, CellT
10161021
* @internal
10171022
*/
10181023
public pointerdown = (event: PointerEvent) => {
1024+
1025+
if (this.isMerged) {
1026+
// need an approximation of where in the cell the user clicked to get actual index to be activated.
1027+
const scrollOffset = this.grid.verticalScrollContainer.scrollPosition + (event.y - this.grid.tbody.nativeElement.getBoundingClientRect().y);
1028+
const targetRowIndex = this.grid.verticalScrollContainer.getIndexAtScroll(scrollOffset);
1029+
if (targetRowIndex != this.rowIndex) {
1030+
const row = this.grid.rowList.toArray().find(x => x.index === targetRowIndex);
1031+
const actualTarget = row.cells.find(x => x.column === this.column);
1032+
actualTarget.pointerdown(event);
1033+
return;
1034+
}
1035+
}
1036+
10191037
if (this.cellSelectionMode !== GridSelectionMode.multiple) {
10201038
this.activate(event);
10211039
return;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@
135135
[class.igx-grid__td--merged]="metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1"
136136
[class.igx-grid__td--merged-selected]="isSelectionRoot(col)"
137137
[class.igx-grid__td--merged-hovered]="isHoveredRoot(col)"
138+
[isMerged]="metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1"
138139
[isPlaceholder]="!!this.metaData?.cellMergeMeta.get(col.field)?.root"
139140
class="igx-grid__td igx-grid__td--fw"
140141
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
@@ -174,6 +175,7 @@
174175
[class.igx-grid__td--merged]="metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1"
175176
[class.igx-grid__td--merged-selected]="isSelectionRoot(col)"
176177
[class.igx-grid__td--merged-hovered]="isHoveredRoot(col)"
178+
[isMerged]="metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1"
177179
[isPlaceholder]="!!this.metaData?.cellMergeMeta.get(col.field)?.root"
178180
[class.igx-grid__td--pinned]="col.pinned"
179181
class="igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell"

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@
123123
<ng-template #cellTemplate let-col="column">
124124
<igx-hierarchical-grid-cell
125125
[class.igx-grid__td--merged]="metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1"
126+
[isMerged]="metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1"
127+
[isPlaceholder]="!!this.metaData?.cellMergeMeta.get(col.field)?.root"
126128
[class.igx-grid__td--merged-selected]="isSelectionRoot(col)"
127129
[class.igx-grid__td--merged-hovered]="isHoveredRoot(col)"
128130
class="igx-grid__td igx-grid__td--fw"

projects/igniteui-angular/src/lib/grids/row.directive.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,14 @@ export class IgxRowDirective implements DoCheck, AfterViewInit, OnDestroy {
397397
*/
398398
@HostListener('click', ['$event'])
399399
public onClick(event: MouseEvent) {
400+
if (this.hasMergedCells && this.metaData?.cellMergeMeta) {
401+
const targetRowIndex = this.grid.navigation.activeNode.row;
402+
if (targetRowIndex != this.index) {
403+
const row = this.grid.rowList.toArray().find(x => x.index === targetRowIndex);
404+
row.onClick(event);
405+
return;
406+
}
407+
}
400408
this.grid.rowClick.emit({
401409
row: this,
402410
event

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@
8181
[class.igx-grid__td--merged-selected]="isSelectionRoot(col)"
8282
[class.igx-grid__td--merged-hovered]="isHoveredRoot(col)"
8383
[class.igx-grid__td--pinned]="col.pinned"
84+
[isMerged]="metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1"
85+
[isPlaceholder]="!!this.metaData?.cellMergeMeta.get(col.field)?.root"
8486
class="igx-grid__td igx-grid__td--fw"
8587
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
8688
[class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'"
@@ -115,6 +117,8 @@
115117
[class.igx-grid__td--merged]="metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1"
116118
[class.igx-grid__td--merged-selected]="isSelectionRoot(col)"
117119
[class.igx-grid__td--merged-hovered]="isHoveredRoot(col)"
120+
[isMerged]="metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1"
121+
[isPlaceholder]="!!this.metaData?.cellMergeMeta.get(col.field)?.root"
118122
[class.igx-grid__td--pinned]="col.pinned"
119123
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
120124
[class.igx-grid__td--number]="(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0"

0 commit comments

Comments
 (0)