@@ -117,13 +117,10 @@ export const useGridRowGroupingPreProcessors = (
117117 const groupingColDefs = getGroupingColDefs ( columnsState ) ;
118118 let newColumnFields : string [ ] = [ ] ;
119119 const newColumnsLookup : GridColumnRawLookup = { } ;
120- const prevGroupingfields : string [ ] = [ ] ;
121120
122121 // We only keep the non-grouping columns
123122 columnsState . orderedFields . forEach ( ( field ) => {
124- if ( isGroupingColumn ( field ) ) {
125- prevGroupingfields . push ( field ) ;
126- } else {
123+ if ( ! isGroupingColumn ( field ) ) {
127124 newColumnFields . push ( field ) ;
128125 newColumnsLookup [ field ] = columnsState . lookup [ field ] ;
129126 }
@@ -140,16 +137,19 @@ export const useGridRowGroupingPreProcessors = (
140137 newColumnsLookup [ groupingColDef . field ] = groupingColDef ;
141138 } ) ;
142139
143- if ( prevGroupingfields . length !== groupingColDefs . length ) {
144- const startIndex = newColumnFields [ 0 ] === GRID_CHECKBOX_SELECTION_FIELD ? 1 : 0 ;
145- newColumnFields = [
146- ...newColumnFields . slice ( 0 , startIndex ) ,
147- ...groupingColDefs . map ( ( colDef ) => colDef . field ) ,
148- ...newColumnFields . slice ( startIndex ) ,
149- ] ;
150- columnsState . orderedFields = newColumnFields ;
151- }
140+ const checkBoxFieldIndex = newColumnFields . findIndex (
141+ ( field ) => field === GRID_CHECKBOX_SELECTION_FIELD ,
142+ ) ;
143+ const checkBoxColumn =
144+ checkBoxFieldIndex !== - 1 ? newColumnFields . splice ( checkBoxFieldIndex , 1 ) : [ ] ;
145+
146+ newColumnFields = [
147+ ...checkBoxColumn ,
148+ ...groupingColDefs . map ( ( colDef ) => colDef . field ) ,
149+ ...newColumnFields ,
150+ ] ;
152151
152+ columnsState . orderedFields = newColumnFields ;
153153 columnsState . lookup = newColumnsLookup ;
154154
155155 return columnsState ;
0 commit comments