@@ -30,6 +30,7 @@ import type {
3030 Filters ,
3131 Position ,
3232 RowRendererProps ,
33+ RowsChangeData ,
3334 SelectRowEvent ,
3435 SelectedCellProps ,
3536 EditCellProps ,
@@ -87,7 +88,7 @@ export interface DataGridProps<R, SR = unknown> extends SharedDivProps {
8788 summaryRows ?: readonly SR [ ] ;
8889 /** The getter should return a unique key for each row */
8990 rowKeyGetter ?: ( row : R ) => React . Key ;
90- onRowsChange ?: ( rows : R [ ] ) => void ;
91+ onRowsChange ?: ( rows : R [ ] , data : RowsChangeData < R , SR > ) => void ;
9192
9293 /**
9394 * Dimensions props
@@ -454,7 +455,10 @@ function DataGrid<R, SR>({
454455 if ( typeof onRowsChange !== 'function' ) return ;
455456 const updatedRows = [ ...rawRows ] ;
456457 updatedRows [ rowIdx ] = row ;
457- onRowsChange ( updatedRows ) ;
458+ onRowsChange ( updatedRows , {
459+ indexes : [ rowIdx ] ,
460+ column : columns [ selectedPosition . idx ]
461+ } ) ;
458462 }
459463
460464 function commitEditorChanges ( ) {
@@ -536,13 +540,17 @@ function DataGrid<R, SR>({
536540 const startRowIndex = rowIdx < overRowIdx ? rowIdx + 1 : overRowIdx ;
537541 const endRowIndex = rowIdx < overRowIdx ? overRowIdx + 1 : rowIdx ;
538542 const targetRows = rawRows . slice ( startRowIndex , endRowIndex ) ;
539-
540- const updatedTargetRows = onFill ( { columnKey : columns [ idx ] . key , sourceRow, targetRows } ) ;
543+ const column = columns [ idx ] ;
544+ const updatedTargetRows = onFill ( { columnKey : column . key , sourceRow, targetRows } ) ;
541545 const updatedRows = [ ...rawRows ] ;
546+ const indexes : number [ ] = [ ] ;
547+
542548 for ( let i = startRowIndex ; i < endRowIndex ; i ++ ) {
543549 updatedRows [ i ] = updatedTargetRows [ i - startRowIndex ] ;
550+ indexes . push ( i ) ;
544551 }
545- onRowsChange ( updatedRows ) ;
552+
553+ onRowsChange ( updatedRows , { indexes, column } ) ;
546554 setDraggedOverRowIdx ( undefined ) ;
547555 }
548556
@@ -574,13 +582,17 @@ function DataGrid<R, SR>({
574582 const { idx, rowIdx } = selectedPosition ;
575583 const sourceRow = rawRows [ rowIdx ] ;
576584 const targetRows = rawRows . slice ( rowIdx + 1 ) ;
577-
578- const updatedTargetRows = onFill ( { columnKey : columns [ idx ] . key , sourceRow, targetRows } ) ;
585+ const column = columns [ idx ] ;
586+ const updatedTargetRows = onFill ( { columnKey : column . key , sourceRow, targetRows } ) ;
579587 const updatedRows = [ ...rawRows ] ;
588+ const indexes : number [ ] = [ ] ;
589+
580590 for ( let i = rowIdx + 1 ; i < updatedRows . length ; i ++ ) {
581591 updatedRows [ i ] = updatedTargetRows [ i - rowIdx - 1 ] ;
592+ indexes . push ( i ) ;
582593 }
583- onRowsChange ( updatedRows ) ;
594+
595+ onRowsChange ( updatedRows , { indexes, column } ) ;
584596 }
585597
586598 function handleEditorRowChange ( row : Readonly < R > , commitChanges ?: boolean ) {
0 commit comments