@@ -2828,6 +2828,9 @@ export abstract class IgxGridBaseDirective implements GridType,
28282828 public set sortingExpressions ( value : ISortingExpression [ ] ) {
28292829 this . _sortingExpressions = cloneArray ( value ) ;
28302830 this . sortingExpressionsChange . emit ( this . _sortingExpressions ) ;
2831+ if ( this . cellMergeMode === GridCellMergeMode . onSort ) {
2832+ this . resetColumnCollections ( ) ;
2833+ }
28312834 this . notifyChanges ( ) ;
28322835 }
28332836
@@ -2951,7 +2954,11 @@ export abstract class IgxGridBaseDirective implements GridType,
29512954 }
29522955
29532956 public set cellMergeMode ( value : GridCellMergeMode ) {
2954- this . _cellMergeMode = value ;
2957+ if ( value !== this . _cellMergeMode ) {
2958+ this . _cellMergeMode = value ;
2959+ this . resetColumnCollections ( ) ;
2960+ this . notifyChanges ( ) ;
2961+ }
29552962 }
29562963
29572964 /**
@@ -3358,7 +3365,6 @@ export abstract class IgxGridBaseDirective implements GridType,
33583365 private _defaultRowHeight = 50 ;
33593366 private _rowCount : number ;
33603367 private _cellMergeMode : GridCellMergeMode = GridCellMergeMode . onSort ;
3361- private _prevColsToMerge : IgxColumnComponent [ ] = [ ] ;
33623368 private _columnsToMerge : IgxColumnComponent [ ] = [ ] ;
33633369
33643370 /**
@@ -4002,14 +4008,22 @@ export abstract class IgxGridBaseDirective implements GridType,
40024008 x => x . merge && ( this . cellMergeMode === 'always' ||
40034009 ( this . cellMergeMode === 'onSort' && ! ! this . sortingExpressions . find ( y => y . fieldName === x . field ) ) )
40044010 ) ;
4005- if ( areEqualArrays ( cols , this . _prevColsToMerge ) ) {
4006- return this . _prevColsToMerge ;
4007- }
40084011 this . _columnsToMerge = cols ;
4009- this . _prevColsToMerge = [ ...cols ] ;
40104012 return this . _columnsToMerge ;
40114013 }
40124014
4015+ protected allowResetOfColumnsToMerge ( ) {
4016+ const cols = this . visibleColumns . filter (
4017+ x => x . merge && ( this . cellMergeMode === 'always' ||
4018+ ( this . cellMergeMode === 'onSort' && ! ! this . sortingExpressions . find ( y => y . fieldName === x . field ) ) )
4019+ ) ;
4020+ if ( areEqualArrays ( cols , this . _columnsToMerge ) ) {
4021+ return false ;
4022+ } else {
4023+ return true
4024+ }
4025+ }
4026+
40134027 protected get mergedDataInView ( ) {
40144028 return this . _mergedDataInView ;
40154029 }
@@ -4025,7 +4039,9 @@ export abstract class IgxGridBaseDirective implements GridType,
40254039 this . _visibleColumns . length = 0 ;
40264040 this . _pinnedVisible . length = 0 ;
40274041 this . _unpinnedVisible . length = 0 ;
4028- this . _columnsToMerge . length = 0 ;
4042+ if ( this . allowResetOfColumnsToMerge ( ) ) {
4043+ this . _columnsToMerge . length = 0 ;
4044+ }
40294045 }
40304046
40314047 /**
0 commit comments