@@ -28,6 +28,7 @@ export const DataTable = React.forwardRef((inProps, ref) => {
28
28
const [ columnOrderState , setColumnOrderState ] = React . useState ( [ ] ) ;
29
29
const [ groupRowsSortMetaState , setGroupRowsSortMetaState ] = React . useState ( null ) ;
30
30
const [ editingMetaState , setEditingMetaState ] = React . useState ( { } ) ;
31
+ const [ frozenEditingMetaState , setFrozenEditingMetaState ] = React . useState ( { } ) ;
31
32
const [ d_rowsState , setD_rowsState ] = React . useState ( props . rows ) ;
32
33
const [ d_filtersState , setD_filtersState ] = React . useState ( { } ) ;
33
34
const metaData = {
@@ -42,6 +43,7 @@ export const DataTable = React.forwardRef((inProps, ref) => {
42
43
columnOrder : columnOrderState ,
43
44
groupRowsSortMeta : groupRowsSortMetaState ,
44
45
editingMeta : editingMetaState ,
46
+ frozenEditingMeta : frozenEditingMetaState ,
45
47
d_rows : d_rowsState ,
46
48
d_filters : d_filtersState
47
49
} ,
@@ -506,6 +508,29 @@ export const DataTable = React.forwardRef((inProps, ref) => {
506
508
}
507
509
} ;
508
510
511
+ const onFrozenEditingMetaChange = ( e ) => {
512
+ const { rowData, field, editingKey, editing } = e ;
513
+ let frozenEditingMeta = { ...frozenEditingMetaState } ;
514
+ let meta = frozenEditingMeta [ editingKey ] ;
515
+
516
+ if ( editing ) {
517
+ ! meta && ( meta = frozenEditingMeta [ editingKey ] = { data : { ...rowData } , fields : [ ] } ) ;
518
+ meta . fields . push ( field ) ;
519
+ } else if ( meta ) {
520
+ const fields = meta . fields . filter ( ( f ) => f !== field ) ;
521
+
522
+ ! fields . length ? delete frozenEditingMeta [ editingKey ] : ( meta . fields = fields ) ;
523
+ }
524
+
525
+ setFrozenEditingMetaState ( frozenEditingMeta ) ;
526
+ } ;
527
+
528
+ const clearFrozenEditingMetaData = ( ) => {
529
+ if ( props . editMode && ObjectUtils . isNotEmpty ( frozenEditingMetaState ) ) {
530
+ setFrozenEditingMetaState ( { } ) ;
531
+ }
532
+ } ;
533
+
509
534
const onColumnResizeStart = ( e ) => {
510
535
createBeforeResizeStyleElement ( ) ;
511
536
const { originalEvent : event , column } = e ;
@@ -878,6 +903,7 @@ export const DataTable = React.forwardRef((inProps, ref) => {
878
903
879
904
const onPageChange = ( e ) => {
880
905
clearEditingMetaData ( ) ;
906
+ clearFrozenEditingMetaData ( ) ;
881
907
882
908
if ( props . onPage ) {
883
909
props . onPage ( createEvent ( e ) ) ;
@@ -893,6 +919,7 @@ export const DataTable = React.forwardRef((inProps, ref) => {
893
919
894
920
const onSortChange = ( e ) => {
895
921
clearEditingMetaData ( ) ;
922
+ clearFrozenEditingMetaData ( ) ;
896
923
897
924
const { originalEvent : event , column, sortableDisabledFields } = e ;
898
925
let sortField = getColumnProp ( column , 'sortField' ) || getColumnProp ( column , 'field' ) ;
@@ -1072,6 +1099,7 @@ export const DataTable = React.forwardRef((inProps, ref) => {
1072
1099
1073
1100
const onFilterChange = ( filters ) => {
1074
1101
clearEditingMetaData ( ) ;
1102
+ clearFrozenEditingMetaData ( ) ;
1075
1103
1076
1104
setD_filtersState ( filters ) ;
1077
1105
} ;
@@ -1269,6 +1297,7 @@ export const DataTable = React.forwardRef((inProps, ref) => {
1269
1297
setD_filtersState ( cloneFilters ( props . filters ) ) ;
1270
1298
setGroupRowsSortMetaState ( null ) ;
1271
1299
setEditingMetaState ( { } ) ;
1300
+ setFrozenEditingMetaState ( { } ) ;
1272
1301
1273
1302
if ( ! props . onPage ) {
1274
1303
setFirstState ( props . first ) ;
@@ -1661,7 +1690,7 @@ export const DataTable = React.forwardRef((inProps, ref) => {
1661
1690
dataKey = { props . dataKey }
1662
1691
dragSelection = { props . dragSelection }
1663
1692
editMode = { props . editMode }
1664
- editingMeta = { editingMetaState }
1693
+ editingMeta = { frozenEditingMetaState }
1665
1694
editingRows = { props . editingRows }
1666
1695
emptyMessage = { props . emptyMessage }
1667
1696
expandableRowGroups = { props . expandableRowGroups }
@@ -1680,7 +1709,7 @@ export const DataTable = React.forwardRef((inProps, ref) => {
1680
1709
onCellUnselect = { props . onCellUnselect }
1681
1710
onContextMenu = { props . onContextMenu }
1682
1711
onContextMenuSelectionChange = { props . onContextMenuSelectionChange }
1683
- onEditingMetaChange = { onEditingMetaChange }
1712
+ onEditingMetaChange = { onFrozenEditingMetaChange }
1684
1713
onRowClick = { props . onRowClick }
1685
1714
onRowCollapse = { props . onRowCollapse }
1686
1715
onRowDoubleClick = { props . onRowDoubleClick }
0 commit comments