From c847ef43d963240b13b92366654ba3fe7a620463 Mon Sep 17 00:00:00 2001 From: ezgi Date: Tue, 29 Apr 2025 17:41:44 +0300 Subject: [PATCH] [DataTable]: Row reorder not working on filtered view --- components/lib/datatable/DataTable.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/components/lib/datatable/DataTable.js b/components/lib/datatable/DataTable.js index 19f8e66430..96b079c2cd 100644 --- a/components/lib/datatable/DataTable.js +++ b/components/lib/datatable/DataTable.js @@ -31,6 +31,7 @@ export const DataTable = React.forwardRef((inProps, ref) => { const [frozenEditingMetaState, setFrozenEditingMetaState] = React.useState({}); const [d_rowsState, setD_rowsState] = React.useState(props.rows); const [d_filtersState, setD_filtersState] = React.useState({}); + const [filteredValueState, setFilteredValueState] = React.useState([]); const metaData = { props, state: { @@ -1104,6 +1105,10 @@ export const DataTable = React.forwardRef((inProps, ref) => { setD_filtersState(filters); }; + const isFiltersEmpty = (filters) => { + return Object.values(filters).every(filter => !filter || !filter.value || filter.value.length === 0); + }; + const onFilterApply = (filtersToApply) => { clearTimeout(filterTimeout.current); filterTimeout.current = setTimeout(() => { @@ -1115,10 +1120,17 @@ export const DataTable = React.forwardRef((inProps, ref) => { setFirstState(0); setFiltersState(filters); } + const processed = processedData({ filters }); if (props.onValueChange) { props.onValueChange(processedData({ filters })); } + + if (ObjectUtils.isNotEmpty(filters) && !isFiltersEmpty(filters)) { + setFilteredValueState(processed); + } else { + setFilteredValueState(undefined); + } }, props.filterDelay); }; @@ -1431,7 +1443,7 @@ export const DataTable = React.forwardRef((inProps, ref) => { }; const processedData = (localState) => { - let data = props.value || []; + let data = (filteredValueState?.length ? filteredValueState : props.value) || []; if (!props.lazy) { if (data && data.length) {