Skip to content

Commit 95e5b40

Browse files
MKirovaMKirova
authored andcommitted
chore(*): Break merge sequence on row activation. Discard custom merge nav.
1 parent d515e97 commit 95e5b40

File tree

7 files changed

+13
-125
lines changed

7 files changed

+13
-125
lines changed

projects/igniteui-angular/src/lib/data-operations/data-util.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,11 @@ export class DataUtil {
9898
return grouping.groupBy(data, state, grid, groupsRecords, fullResult);
9999
}
100100

101-
public static merge<T>(data: T[], columns: ColumnType[], strategy: IGridMergeStrategy = new DefaultMergeStrategy(), grid: GridType = null,
101+
public static merge<T>(data: T[], columns: ColumnType[], strategy: IGridMergeStrategy = new DefaultMergeStrategy(), activeRowIndex = -1, grid: GridType = null,
102102
): any[] {
103103
let result = [];
104104
for (const col of columns) {
105-
strategy.merge(data, col.field, col.mergingComparer, result, grid);
105+
strategy.merge(data, col.field, col.mergingComparer, result, activeRowIndex, grid);
106106
}
107107
return result;
108108
}

projects/igniteui-angular/src/lib/data-operations/merge-strategy.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export interface IGridMergeStrategy {
1111
field: string,
1212
comparer: (prevRecord: any, currentRecord: any, field: string) => boolean,
1313
result: any[],
14+
activeRowIndex? : number,
1415
grid?: GridType
1516
) => any[];
1617
}
@@ -28,15 +29,16 @@ export class DefaultMergeStrategy implements IGridMergeStrategy {
2829
field: string,
2930
comparer: (prevRecord: any, record: any, field: string) => boolean = this.comparer,
3031
result: any[],
32+
activeRowIndex?: number,
3133
grid?: GridType
3234
) {
3335
let prev = null;
3436
let index = 0;
3537
for (const rec of data) {
3638

3739
const recData = result[index];
38-
// if this is some special record type - add and skip merging
39-
if (grid && grid.isDetailRecord(rec) || grid.isGhostRecord(rec) || grid.isGroupByRecord(rec)) {
40+
// if this is active row or some special record type - add and skip merging
41+
if (activeRowIndex === index || (grid && grid.isDetailRecord(rec) || grid.isGhostRecord(rec) || grid.isGroupByRecord(rec))) {
4042
if(!recData) {
4143
result.push(rec);
4244
}

projects/igniteui-angular/src/lib/grids/grid-base.directive.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@ import { getCurrentResourceStrings } from '../core/i18n/resources';
186186
import { isTree, recreateTree, recreateTreeFromFields } from '../data-operations/expressions-tree-util';
187187
import { getUUID } from './common/random';
188188
import { IGridMergeStrategy } from '../data-operations/merge-strategy';
189-
import { IgxGridMergeNavigationService } from './grid-merge-navigation.service';
190189

191190
interface IMatchInfoCache {
192191
row: any;
@@ -3989,14 +3988,11 @@ export abstract class IgxGridBaseDirective implements GridType,
39893988
if (this.actionStrip) {
39903989
this.actionStrip.menuOverlaySettings.outlet = this.outlet;
39913990
}
3992-
this._setupNavigationService();
39933991
}
39943992

3995-
protected _setupNavigationService() {
3996-
if (this.hasCellsToMerge) {
3997-
this.navigation = new IgxGridMergeNavigationService(this.platform);
3998-
this.navigation.grid = this;
3999-
}
3993+
3994+
protected get activeRowIndex(){
3995+
return this.navigation.activeNode.row;
40003996
}
40013997

40023998
protected get hasCellsToMerge() {

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

Lines changed: 0 additions & 109 deletions
This file was deleted.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
| gridDetails:hasDetails:expansionStates:pipeTrigger
9090
| gridAddRow:false:pipeTrigger
9191
| gridRowPinning:id:false:pipeTrigger
92-
| gridCellMerge:visibleColumns:cellMergeMode:sortingExpressions:pipeTrigger"
92+
| gridCellMerge:visibleColumns:cellMergeMode:sortingExpressions:activeRowIndex:pipeTrigger"
9393
let-rowIndex="index" [igxForScrollOrientation]="'vertical'" [igxForScrollContainer]="verticalScroll"
9494
[igxForContainerSize]="calcHeight"
9595
[igxForItemSize]="hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight"

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,12 +1357,11 @@ export class IgxGridComponent extends IgxGridBaseDirective implements GridType,
13571357
this._gridAPI.sort_groupBy_multiple(this._groupingExpressions);
13581358
}
13591359

1360-
protected override _setupNavigationService() {
1360+
protected _setupNavigationService() {
13611361
if (this.hasColumnLayouts) {
13621362
this.navigation = new IgxGridMRLNavigationService(this.platform);
13631363
this.navigation.grid = this;
13641364
}
1365-
super._setupNavigationService();
13661365
}
13671366

13681367
private checkIfNoColumnField(expression: IGroupingExpression | Array<IGroupingExpression> | any): boolean {

projects/igniteui-angular/src/lib/grids/grid/grid.pipes.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,15 @@ export class IgxGridCellMergePipe implements PipeTransform {
8585

8686
constructor(@Inject(IGX_GRID_BASE) private grid: GridType) { }
8787

88-
public transform(collection: any, visibleColumns: ColumnType[], mergeMode: GridCellMergeMode, sortExpr: ISortingExpression[], _pipeTrigger: number) {
88+
public transform(collection: any, visibleColumns: ColumnType[], mergeMode: GridCellMergeMode, sortExpr: ISortingExpression[], activeRowIndex: number, _pipeTrigger: number) {
8989
const columnToMerge = visibleColumns.filter(
9090
x => x.merge && (mergeMode ==='always' ||
9191
(mergeMode === 'onSort' && !!sortExpr.find( x=> x.fieldName === x.fieldName)))
9292
);
9393
if (columnToMerge.length === 0) {
9494
return collection;
9595
}
96-
const result = DataUtil.merge(cloneArray(collection), columnToMerge, this.grid.mergeStrategy, this.grid);
96+
const result = DataUtil.merge(cloneArray(collection), columnToMerge, this.grid.mergeStrategy, activeRowIndex, this.grid);
9797
return result;
9898
}
9999
}

0 commit comments

Comments
 (0)