@@ -1289,38 +1289,56 @@ export class ColumnsController extends modules.Controller {
12891289 updateColumnChanges ( this , 'columns' ) ;
12901290 }
12911291
1292- public updateSortingGrouping ( dataSource , fromDataSource ?) {
1292+ public updateSortingGrouping ( dataSource , fromDataSource ?: boolean ) : void {
1293+ // eslint-disable-next-line @typescript-eslint/no-this-alias
12931294 const that = this ;
1294- let isColumnsChanged ;
1295- const updateSortGroupParameterIndexes = function ( columns , sortParameters , indexParameterName ) {
1296- each ( columns , ( index , column ) => {
1295+ // eslint-disable-next-line @typescript-eslint/init-declarations
1296+ let isColumnsChanged : boolean | undefined ;
1297+ // eslint-disable-next-line func-names
1298+ const updateSortGroupParameterIndexes = function (
1299+ columns ,
1300+ sortParameters ,
1301+ indexParameterName : string ,
1302+ ) : void {
1303+ const referencedGroupValues : string [ ] = columns
1304+ . filter ( ( column ) => isString ( column . calculateGroupValue ) )
1305+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
1306+ . map ( ( column ) : string => column . calculateGroupValue ) ;
1307+
1308+ each ( columns , ( _ : number , column ) => {
1309+ const isReferencedAsGroupValue = indexParameterName === 'groupIndex'
1310+ && referencedGroupValues . some (
1311+ ( groupValue ) => column . dataField === groupValue || column . name === groupValue ,
1312+ ) ;
1313+
1314+ if ( ! isReferencedAsGroupValue ) {
12971315 // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
1298- delete column [ indexParameterName ] ;
1299- if ( sortParameters ) {
1300- for ( let i = 0 ; i < sortParameters . length ; i ++ ) {
1301- const { selector } = sortParameters [ i ] ;
1302- const { isExpanded } = sortParameters [ i ] ;
1303-
1304- if ( selector === column . dataField
1305- || selector === column . name
1306- || selector === column . displayField
1307- || gridCoreUtils . isEqualSelectors ( selector , column . selector )
1308- || gridCoreUtils . isSelectorEqualWithCallback ( selector , column . calculateCellValue )
1309- || gridCoreUtils . isSelectorEqualWithCallback ( selector , column . calculateGroupValue )
1310- || gridCoreUtils . isSelectorEqualWithCallback ( selector , column . calculateDisplayValue )
1311- ) {
1312- if ( fromDataSource ) {
1313- column . sortOrder = 'sortOrder' in column ? column . sortOrder : sortParameters [ i ] . desc ? 'desc' : 'asc' ;
1314- } else {
1315- column . sortOrder = column . sortOrder || ( sortParameters [ i ] . desc ? 'desc' : 'asc' ) ;
1316- }
1317-
1318- if ( isExpanded !== undefined ) {
1319- column . autoExpandGroup = isExpanded ;
1316+ delete column [ indexParameterName ] ;
1317+ if ( sortParameters ) {
1318+ for ( let i = 0 ; i < sortParameters . length ; i += 1 ) {
1319+ const { selector, isExpanded } = sortParameters [ i ] ;
1320+
1321+ if ( selector === column . dataField
1322+ || selector === column . name
1323+ || selector === column . displayField
1324+ || gridCoreUtils . isEqualSelectors ( selector , column . selector )
1325+ || gridCoreUtils . isSelectorEqualWithCallback ( selector , column . calculateCellValue )
1326+ || gridCoreUtils . isEqualSelectors ( selector , column . calculateGroupValue )
1327+ || gridCoreUtils . isSelectorEqualWithCallback ( selector , column . calculateDisplayValue )
1328+ ) {
1329+ if ( fromDataSource ) {
1330+ column . sortOrder = 'sortOrder' in column ? column . sortOrder : sortParameters [ i ] . desc ? 'desc' : 'asc' ;
1331+ } else {
1332+ column . sortOrder = column . sortOrder ?? ( sortParameters [ i ] . desc ? 'desc' : 'asc' ) ;
1333+ }
1334+
1335+ if ( isExpanded !== undefined ) {
1336+ column . autoExpandGroup = isExpanded ;
1337+ }
1338+
1339+ column [ indexParameterName ] = i ;
1340+ break ;
13201341 }
1321-
1322- column [ indexParameterName ] = i ;
1323- break ;
13241342 }
13251343 }
13261344 }
@@ -1339,10 +1357,10 @@ export class ColumnsController extends modules.Controller {
13391357 const groupExpandingChanged = ! groupingChanged && ! gridCoreUtils . equalSortParameters ( groupParameters , columnsGroupParameters ) ;
13401358
13411359 if ( ! that . _columns . length ) {
1342- each ( groupParameters , ( index , group ) => {
1360+ each ( groupParameters , ( _ : number , group ) => {
13431361 that . _columns . push ( group . selector ) ;
13441362 } ) ;
1345- each ( sortParameters , ( index , sort ) => {
1363+ each ( sortParameters , ( _ : number , sort ) => {
13461364 if ( ! isFunction ( sort . selector ) ) {
13471365 that . _columns . push ( sort . selector ) ;
13481366 }
0 commit comments