@@ -1323,38 +1323,56 @@ export class ColumnsController extends modules.Controller {
13231323 updateColumnChanges ( this , 'columns' ) ;
13241324 }
13251325
1326- public updateSortingGrouping ( dataSource , fromDataSource ?) {
1326+ public updateSortingGrouping ( dataSource , fromDataSource ?: boolean ) : void {
1327+ // eslint-disable-next-line @typescript-eslint/no-this-alias
13271328 const that = this ;
1328- let isColumnsChanged ;
1329- const updateSortGroupParameterIndexes = function ( columns , sortParameters , indexParameterName ) {
1330- each ( columns , ( index , column ) => {
1329+ // eslint-disable-next-line @typescript-eslint/init-declarations
1330+ let isColumnsChanged : boolean | undefined ;
1331+ // eslint-disable-next-line func-names
1332+ const updateSortGroupParameterIndexes = function (
1333+ columns ,
1334+ sortParameters ,
1335+ indexParameterName : string ,
1336+ ) : void {
1337+ const referencedGroupValues : string [ ] = columns
1338+ . filter ( ( column ) => isString ( column . calculateGroupValue ) )
1339+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
1340+ . map ( ( column ) : string => column . calculateGroupValue ) ;
1341+
1342+ each ( columns , ( _ : number , column ) => {
1343+ const isReferencedAsGroupValue = indexParameterName === 'groupIndex'
1344+ && referencedGroupValues . some (
1345+ ( groupValue ) => column . dataField === groupValue || column . name === groupValue ,
1346+ ) ;
1347+
1348+ if ( ! isReferencedAsGroupValue ) {
13311349 // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
1332- delete column [ indexParameterName ] ;
1333- if ( sortParameters ) {
1334- for ( let i = 0 ; i < sortParameters . length ; i ++ ) {
1335- const { selector } = sortParameters [ i ] ;
1336- const { isExpanded } = sortParameters [ i ] ;
1337-
1338- if ( selector === column . dataField
1339- || selector === column . name
1340- || selector === column . displayField
1341- || gridCoreUtils . isEqualSelectors ( selector , column . selector )
1342- || gridCoreUtils . isSelectorEqualWithCallback ( selector , column . calculateCellValue )
1343- || gridCoreUtils . isSelectorEqualWithCallback ( selector , column . calculateGroupValue )
1344- || gridCoreUtils . isSelectorEqualWithCallback ( selector , column . calculateDisplayValue )
1345- ) {
1346- if ( fromDataSource ) {
1347- column . sortOrder = 'sortOrder' in column ? column . sortOrder : sortParameters [ i ] . desc ? 'desc' : 'asc' ;
1348- } else {
1349- column . sortOrder = column . sortOrder || ( sortParameters [ i ] . desc ? 'desc' : 'asc' ) ;
1350- }
1351-
1352- if ( isExpanded !== undefined ) {
1353- column . autoExpandGroup = isExpanded ;
1350+ delete column [ indexParameterName ] ;
1351+ if ( sortParameters ) {
1352+ for ( let i = 0 ; i < sortParameters . length ; i += 1 ) {
1353+ const { selector, isExpanded } = sortParameters [ i ] ;
1354+
1355+ if ( selector === column . dataField
1356+ || selector === column . name
1357+ || selector === column . displayField
1358+ || gridCoreUtils . isEqualSelectors ( selector , column . selector )
1359+ || gridCoreUtils . isSelectorEqualWithCallback ( selector , column . calculateCellValue )
1360+ || gridCoreUtils . isEqualSelectors ( selector , column . calculateGroupValue )
1361+ || gridCoreUtils . isSelectorEqualWithCallback ( selector , column . calculateDisplayValue )
1362+ ) {
1363+ if ( fromDataSource ) {
1364+ column . sortOrder = 'sortOrder' in column ? column . sortOrder : sortParameters [ i ] . desc ? 'desc' : 'asc' ;
1365+ } else {
1366+ column . sortOrder = column . sortOrder ?? ( sortParameters [ i ] . desc ? 'desc' : 'asc' ) ;
1367+ }
1368+
1369+ if ( isExpanded !== undefined ) {
1370+ column . autoExpandGroup = isExpanded ;
1371+ }
1372+
1373+ column [ indexParameterName ] = i ;
1374+ break ;
13541375 }
1355-
1356- column [ indexParameterName ] = i ;
1357- break ;
13581376 }
13591377 }
13601378 }
@@ -1373,10 +1391,10 @@ export class ColumnsController extends modules.Controller {
13731391 const groupExpandingChanged = ! groupingChanged && ! gridCoreUtils . equalSortParameters ( groupParameters , columnsGroupParameters ) ;
13741392
13751393 if ( ! that . _columns . length ) {
1376- each ( groupParameters , ( index , group ) => {
1394+ each ( groupParameters , ( _ : number , group ) => {
13771395 that . _columns . push ( group . selector ) ;
13781396 } ) ;
1379- each ( sortParameters , ( index , sort ) => {
1397+ each ( sortParameters , ( _ : number , sort ) => {
13801398 if ( ! isFunction ( sort . selector ) ) {
13811399 that . _columns . push ( sort . selector ) ;
13821400 }
0 commit comments