Skip to content

Commit 4c5d922

Browse files
MKirovaMKirova
authored andcommitted
chore(*): Adjust API and members.
1 parent febbd43 commit 4c5d922

File tree

7 files changed

+26
-19
lines changed

7 files changed

+26
-19
lines changed

projects/igniteui-angular/src/lib/grids/columns/column.component.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,15 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
107107
return this._field;
108108
}
109109

110+
/**
111+
* Sets/gets whether to merge cells in this column.
112+
* ```html
113+
* <igx-column [merge]="true"></igx-column>
114+
* ```
115+
*
116+
*/
117+
@Input()
118+
public merge = false;
110119

111120
/**
112121
* @hidden @internal

projects/igniteui-angular/src/lib/grids/common/enums.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ export type GridSelectionMode = (typeof GridSelectionMode)[keyof typeof GridSele
8181
* - 'onSort': Only merge cells in column that are sorted.
8282
*/
8383
export const GridCellMergeMode = {
84-
never: 'never',
8584
always: 'always',
8685
onSort: 'onSort'
8786
} as const;

projects/igniteui-angular/src/lib/grids/common/grid.interface.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,7 @@ export interface ColumnType extends FieldType {
453453
pinned: boolean;
454454
/** Indicates if the column is currently expanded or collapsed. If the value is true, the column is expanded */
455455
expanded: boolean;
456+
merge: boolean;
456457
/** Indicates if the column is currently selected. If the value is true, the column is selected */
457458
selected: boolean;
458459
/** Indicates if the column can be selected. If the value is true, the column can be selected */

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2918,7 +2918,7 @@ export abstract class IgxGridBaseDirective implements GridType,
29182918
*/
29192919
@WatchChanges()
29202920
@Input()
2921-
public cellMergeMode: GridCellMergeMode = GridCellMergeMode.never;
2921+
public cellMergeMode: GridCellMergeMode = GridCellMergeMode.onSort;
29222922

29232923
/**
29242924
* Gets/Sets row selection mode

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@
3232
}
3333
<ng-template igxGridFor let-col [igxGridForOf]="unpinnedColumns | igxNotGrouped" [igxForScrollContainer]="grid.parentVirtDir" [igxForScrollOrientation]="'horizontal'" [igxForContainerSize]="grid.unpinnedWidth" [igxForSizePropName]="'calcPixelWidth'" [igxForTrackBy]="grid.trackColumnChanges" #igxDirRef>
3434
@if (this.hasMergedCells) {
35-
<div [style.height.px]=" this.data.cellMergeMeta.get(col.field).rowSpan > 1 ? getRowHeight() : null"
35+
<div [style.height.px]=" this.data.cellMergeMeta.get(col.field)?.rowSpan > 1 ? getRowHeight() : null"
3636
class="igx-grid__mrl-block"
37-
[style.visibility]="this.data.cellMergeMeta.get(col.field).root ? 'hidden' : 'visible'"
37+
[style.visibility]="this.data.cellMergeMeta.get(col.field)?.root ? 'hidden' : 'visible'"
3838
[ngStyle]="{
39-
'grid-template-rows': this.data.cellMergeMeta.get(col.field).rowSpan > 1 ? this.getMergeCellSpan(col) : null
39+
'grid-template-rows': this.data.cellMergeMeta.get(col.field)?.rowSpan > 1 ? this.getMergeCellSpan(col) : null
4040
}">
4141
<ng-container *ngTemplateOutlet="col.visibleIndex === 0 && grid.hasDetails ? expandableCellTemplate : mergedCellTemplate; context: getContext(col, this)"></ng-container>
4242
</div>
@@ -174,7 +174,7 @@
174174
<ng-template #mergedCellTemplate let-col>
175175
<igx-grid-cell
176176
class="igx-grid__td igx-grid__td--fw"
177-
[class.igx-grid__td--merged]="data.cellMergeMeta.get(col.field).rowSpan > 1"
177+
[class.igx-grid__td--merged]="data.cellMergeMeta.get(col.field)?.rowSpan > 1"
178178
[class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row"
179179
[class.igx-grid__td--pinned]="col.pinned"
180180
[class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'"

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

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,28 +86,26 @@ export class IgxGridCellMergePipe implements PipeTransform {
8686
constructor(@Inject(IGX_GRID_BASE) private grid: GridType) { }
8787

8888
public transform(collection: any, _pipeTrigger: number) {
89-
if (this.grid.cellMergeMode === GridCellMergeMode.never) {
89+
const mergeMode = this.grid.cellMergeMode;
90+
const sortExpr = this.grid.sortingExpressions;
91+
const columnToMerge = this.grid.visibleColumns.filter(
92+
x => x.merge && (mergeMode ==='always' ||
93+
(mergeMode === 'onSort' && !!sortExpr.find( x=> x.fieldName === x.fieldName)))
94+
);
95+
if (columnToMerge.length === 0) {
9096
return collection;
9197
}
92-
const visibleColumns = this.grid.visibleColumns;
9398
let prev = null;
9499
let result = [];
95100
for (const rec of collection) {
96101
let recData = { recordRef: rec, cellMergeMeta: new Map<string, IMergeByResult>() };
97-
for (const col of visibleColumns) {
102+
for (const col of columnToMerge) {
98103
recData.cellMergeMeta.set(col.field, { rowSpan: 1 });
99104
//TODO condition can be a strategy or some callback that the user can set.
100-
//TODO can also be limited to only sorted columns
101105
if ( prev && prev.recordRef[col.field] === rec[col.field]) {
102106
const root = prev.cellMergeMeta.get(col.field)?.root ?? prev;
103107
root.cellMergeMeta.get(col.field).rowSpan += 1;
104108
recData.cellMergeMeta.get(col.field).root = root;
105-
// recData.cellMergeMeta.get(col.field).prev = prev;
106-
// let curr = prev;
107-
// while(curr) {
108-
// curr.cellMergeMeta.get(col.field).rowSpan += 1;
109-
// curr = curr.cellMergeMeta.get(col.field).prev;
110-
// }
111109
}
112110
}
113111
prev = recData;

src/app/grid-cellMerging/grid-cellMerging.component.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ <h4 class="sample-title">Grid with cell merge</h4>
1212
</div>
1313
</ng-template>
1414
</igx-column>
15-
<igx-column field="ReorderLevel" width="200px">
15+
<igx-column field="ReorderLevel" width="200px" [merge]="true">
1616
</igx-column>
17-
<igx-column required field="ProductName" width="200px">
17+
<igx-column required field="ProductName" width="200px" [merge]="true">
1818
</igx-column>
19-
<igx-column field="UnitsInStock" header="UnitsInStock" width="200px">
19+
<igx-column field="UnitsInStock" header="UnitsInStock" width="200px" [merge]="true">
2020
</igx-column>
2121
<igx-column field="OrderDate" width="200px">
2222
</igx-column>

0 commit comments

Comments
 (0)