@ackplus/react-tanstack-data-table 1.1.13 → 1.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/data-table.d.ts.map +1 -1
- package/dist/lib/data-table.js +36 -87
- package/dist/lib/types/data-table.types.d.ts +1 -0
- package/dist/lib/types/data-table.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/lib/data-table.tsx +40 -105
- package/src/lib/types/data-table.types.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../src/lib/data-table.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../src/lib/data-table.tsx"],"names":[],"mappings":"AAoFA;;GAEG;AACH,eAAO,MAAM,SAAS,KA6kEpB,CAAC"}
|
package/dist/lib/data-table.js
CHANGED
|
@@ -89,7 +89,10 @@ const DEFAULT_INITIAL_STATE = {
|
|
|
89
89
|
*/
|
|
90
90
|
exports.DataTable = (0, react_1.forwardRef)(function DataTable({ initialState, columns, data = [], totalRow = 0, idKey = 'id', extraFilter = null, footerFilter = null,
|
|
91
91
|
// Data management mode (MUI DataGrid style)
|
|
92
|
-
dataMode = 'client', initialLoadData = true, onFetchData,
|
|
92
|
+
dataMode = 'client', initialLoadData = true, onFetchData, // callback to fetch data from the server need to with response { data: T[], total: number }
|
|
93
|
+
onFetchStateChange, // callback to fetch data from the server no need to resonce , this for filter data
|
|
94
|
+
onDataChange, // callback to change data
|
|
95
|
+
onDataStateChange, // callback to change data state
|
|
93
96
|
// Selection props
|
|
94
97
|
enableRowSelection = false, enableMultiRowSelection = true, selectMode = 'page', isRowSelectable, onSelectionChange,
|
|
95
98
|
// Row click props
|
|
@@ -111,7 +114,9 @@ enablePagination = false, paginationMode = 'client',
|
|
|
111
114
|
// Filtering props
|
|
112
115
|
enableGlobalFilter = true, enableColumnFilter = false, filterMode = 'client',
|
|
113
116
|
// Sorting props
|
|
114
|
-
enableSorting = true, sortingMode = 'client', onSortingChange,
|
|
117
|
+
enableSorting = true, sortingMode = 'client', onSortingChange,
|
|
118
|
+
//export props
|
|
119
|
+
exportFilename = 'export', exportConcurrency = 'cancelAndRestart', exportChunkSize = 1000, exportStrictTotalCheck = false, exportSanitizeCSV = true, onExportProgress, onExportComplete, onExportError, onServerExport, onExportCancel, onExportStateChange,
|
|
115
120
|
// Styling props
|
|
116
121
|
enableHover = true, enableStripes = false, tableProps = {}, fitToScreen = true, tableSize: initialTableSize = 'medium',
|
|
117
122
|
// Sticky header/footer props
|
|
@@ -194,7 +199,7 @@ logging, }, ref) {
|
|
|
194
199
|
const internalApiRef = (0, react_1.useRef)(null);
|
|
195
200
|
const exportControllerRef = (0, react_1.useRef)(null);
|
|
196
201
|
const exportQueueRef = (0, react_1.useRef)(Promise.resolve());
|
|
197
|
-
const isExternallyControlledData = (0, react_1.useMemo)(() => !onFetchData && (!!onDataChange || !!
|
|
202
|
+
const isExternallyControlledData = (0, react_1.useMemo)(() => !onFetchData && (!!onDataChange || !!onFetchStateChange), [onFetchData, onDataChange, onFetchStateChange]);
|
|
198
203
|
const { debouncedFetch, isLoading: fetchLoading } = (0, debounced_fetch_utils_1.useDebouncedFetch)(onFetchData);
|
|
199
204
|
const tableData = (0, react_1.useMemo)(() => {
|
|
200
205
|
if (isExternallyControlledData)
|
|
@@ -250,12 +255,6 @@ logging, }, ref) {
|
|
|
250
255
|
// -------------------------------
|
|
251
256
|
const fetchData = (0, react_1.useCallback)(async (overrides = {}, options) => {
|
|
252
257
|
var _a, _b, _c, _d, _e;
|
|
253
|
-
if (!onFetchData) {
|
|
254
|
-
if (logger.isLevelEnabled('debug')) {
|
|
255
|
-
logger.debug('onFetchData not provided, skipping fetch', { overrides, columnFilter, sorting, pagination });
|
|
256
|
-
}
|
|
257
|
-
return;
|
|
258
|
-
}
|
|
259
258
|
const filters = {
|
|
260
259
|
globalFilter,
|
|
261
260
|
pagination,
|
|
@@ -263,6 +262,15 @@ logging, }, ref) {
|
|
|
263
262
|
sorting,
|
|
264
263
|
...overrides,
|
|
265
264
|
};
|
|
265
|
+
if (onFetchStateChange) {
|
|
266
|
+
onFetchStateChange(filters, options === null || options === void 0 ? void 0 : options.meta);
|
|
267
|
+
}
|
|
268
|
+
if (!onFetchData) {
|
|
269
|
+
if (logger.isLevelEnabled('debug')) {
|
|
270
|
+
logger.debug('onFetchData not provided, skipping fetch', { overrides, columnFilter, sorting, pagination });
|
|
271
|
+
}
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
266
274
|
if (logger.isLevelEnabled('info')) {
|
|
267
275
|
logger.info('Requesting data', {
|
|
268
276
|
filters,
|
|
@@ -303,6 +311,7 @@ logging, }, ref) {
|
|
|
303
311
|
sorting,
|
|
304
312
|
debouncedFetch,
|
|
305
313
|
logger,
|
|
314
|
+
onFetchStateChange,
|
|
306
315
|
]);
|
|
307
316
|
const normalizeRefreshOptions = (0, react_1.useCallback)((options, fallbackReason = 'refresh') => {
|
|
308
317
|
var _a, _b, _c;
|
|
@@ -563,7 +572,7 @@ logging, }, ref) {
|
|
|
563
572
|
setServerTotal(0);
|
|
564
573
|
}, [isExternallyControlledData, serverData]);
|
|
565
574
|
(0, react_1.useEffect)(() => {
|
|
566
|
-
if (initialLoadData && onFetchData) {
|
|
575
|
+
if (initialLoadData && (onFetchData || onFetchStateChange)) {
|
|
567
576
|
if (logger.isLevelEnabled('info')) {
|
|
568
577
|
logger.info('Initial data load triggered', { initialLoadData });
|
|
569
578
|
}
|
|
@@ -672,29 +681,6 @@ logging, }, ref) {
|
|
|
672
681
|
}
|
|
673
682
|
return nextData;
|
|
674
683
|
}, [isExternallyControlledData, logger, onDataChange, tableData, tableTotalRow]);
|
|
675
|
-
const buildRefreshContext = (0, react_1.useCallback)((options, paginationOverride) => {
|
|
676
|
-
const state = table.getState();
|
|
677
|
-
const nextPagination = paginationOverride || state.pagination || pagination;
|
|
678
|
-
return {
|
|
679
|
-
filters: {
|
|
680
|
-
globalFilter,
|
|
681
|
-
pagination: nextPagination,
|
|
682
|
-
columnFilter,
|
|
683
|
-
sorting,
|
|
684
|
-
},
|
|
685
|
-
state: {
|
|
686
|
-
sorting,
|
|
687
|
-
pagination: nextPagination,
|
|
688
|
-
globalFilter,
|
|
689
|
-
columnFilter,
|
|
690
|
-
columnVisibility: state.columnVisibility,
|
|
691
|
-
columnSizing: state.columnSizing,
|
|
692
|
-
columnOrder: state.columnOrder,
|
|
693
|
-
columnPinning: state.columnPinning,
|
|
694
|
-
},
|
|
695
|
-
options,
|
|
696
|
-
};
|
|
697
|
-
}, [table, pagination, globalFilter, columnFilter, sorting]);
|
|
698
684
|
const triggerRefresh = (0, react_1.useCallback)(async (options, fallbackReason = 'refresh') => {
|
|
699
685
|
const normalizedOptions = normalizeRefreshOptions(options, fallbackReason);
|
|
700
686
|
const nextPagination = enablePagination
|
|
@@ -709,35 +695,15 @@ logging, }, ref) {
|
|
|
709
695
|
setPagination(nextPagination);
|
|
710
696
|
onPaginationChange === null || onPaginationChange === void 0 ? void 0 : onPaginationChange(nextPagination);
|
|
711
697
|
}
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
reason: normalizedOptions.reason,
|
|
722
|
-
force: normalizedOptions.force,
|
|
723
|
-
},
|
|
724
|
-
});
|
|
725
|
-
return;
|
|
726
|
-
}
|
|
727
|
-
if (logger.isLevelEnabled('debug')) {
|
|
728
|
-
logger.debug('Refresh skipped because no refresh handler is configured', refreshContext);
|
|
729
|
-
}
|
|
730
|
-
}, [
|
|
731
|
-
normalizeRefreshOptions,
|
|
732
|
-
enablePagination,
|
|
733
|
-
pagination,
|
|
734
|
-
onPaginationChange,
|
|
735
|
-
buildRefreshContext,
|
|
736
|
-
onRefreshData,
|
|
737
|
-
onFetchData,
|
|
738
|
-
fetchData,
|
|
739
|
-
logger,
|
|
740
|
-
]);
|
|
698
|
+
await fetchData(nextPagination ? { pagination: nextPagination } : {}, {
|
|
699
|
+
delay: 0,
|
|
700
|
+
meta: {
|
|
701
|
+
reason: normalizedOptions.reason,
|
|
702
|
+
force: normalizedOptions.force,
|
|
703
|
+
},
|
|
704
|
+
});
|
|
705
|
+
return;
|
|
706
|
+
}, [normalizeRefreshOptions, enablePagination, pagination, onPaginationChange, fetchData]);
|
|
741
707
|
const resetAllAndReload = (0, react_1.useCallback)(() => {
|
|
742
708
|
var _a;
|
|
743
709
|
const resetState = getResetState();
|
|
@@ -760,31 +726,14 @@ logging, }, ref) {
|
|
|
760
726
|
force: true,
|
|
761
727
|
reason: 'reset',
|
|
762
728
|
}, 'reset');
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
meta: {
|
|
772
|
-
reason: resetOptions.reason,
|
|
773
|
-
force: resetOptions.force,
|
|
774
|
-
},
|
|
775
|
-
});
|
|
776
|
-
}
|
|
777
|
-
}, [
|
|
778
|
-
getResetState,
|
|
779
|
-
initialSelectionState,
|
|
780
|
-
initialStateConfig,
|
|
781
|
-
onPaginationChange,
|
|
782
|
-
normalizeRefreshOptions,
|
|
783
|
-
buildRefreshContext,
|
|
784
|
-
onRefreshData,
|
|
785
|
-
onFetchData,
|
|
786
|
-
fetchData,
|
|
787
|
-
]);
|
|
729
|
+
void fetchData(resetState, {
|
|
730
|
+
delay: 0,
|
|
731
|
+
meta: {
|
|
732
|
+
reason: resetOptions.reason,
|
|
733
|
+
force: resetOptions.force,
|
|
734
|
+
},
|
|
735
|
+
});
|
|
736
|
+
}, [getResetState, initialSelectionState, initialStateConfig, onPaginationChange, normalizeRefreshOptions, fetchData]);
|
|
788
737
|
const setExportControllerSafely = (0, react_1.useCallback)((value) => {
|
|
789
738
|
setExportController((current) => {
|
|
790
739
|
const next = typeof value === 'function' ? value(current) : value;
|
|
@@ -49,6 +49,7 @@ export interface DataTableProps<T> {
|
|
|
49
49
|
data: T[];
|
|
50
50
|
total: number;
|
|
51
51
|
}>;
|
|
52
|
+
onFetchStateChange?: (filters: Partial<TableState>, meta?: DataFetchMeta) => void;
|
|
52
53
|
onRefreshData?: (context: DataRefreshContext) => void | Promise<void>;
|
|
53
54
|
onDataChange?: (nextData: T[], context: DataMutationContext<T>) => void;
|
|
54
55
|
exportFilename?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/data-table.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-table.types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/data-table.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/lib/data-table.tsx
CHANGED
|
@@ -45,7 +45,6 @@ import {
|
|
|
45
45
|
DataFetchMeta,
|
|
46
46
|
DataMutationAction,
|
|
47
47
|
DataMutationContext,
|
|
48
|
-
DataRefreshContext,
|
|
49
48
|
DataRefreshOptions,
|
|
50
49
|
DataTableProps,
|
|
51
50
|
} from './types/data-table.types';
|
|
@@ -98,10 +97,10 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
98
97
|
// Data management mode (MUI DataGrid style)
|
|
99
98
|
dataMode = 'client',
|
|
100
99
|
initialLoadData = true,
|
|
101
|
-
onFetchData,
|
|
102
|
-
|
|
103
|
-
onDataChange,
|
|
104
|
-
onDataStateChange,
|
|
100
|
+
onFetchData, // callback to fetch data from the server need to with response { data: T[], total: number }
|
|
101
|
+
onFetchStateChange, // callback to fetch data from the server no need to resonce , this for filter data
|
|
102
|
+
onDataChange, // callback to change data
|
|
103
|
+
onDataStateChange, // callback to change data state
|
|
105
104
|
|
|
106
105
|
// Selection props
|
|
107
106
|
enableRowSelection = false,
|
|
@@ -153,6 +152,8 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
153
152
|
enableSorting = true,
|
|
154
153
|
sortingMode = 'client',
|
|
155
154
|
onSortingChange,
|
|
155
|
+
|
|
156
|
+
//export props
|
|
156
157
|
exportFilename = 'export',
|
|
157
158
|
exportConcurrency = 'cancelAndRestart',
|
|
158
159
|
exportChunkSize = 1000,
|
|
@@ -279,8 +280,8 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
279
280
|
const exportQueueRef = useRef<Promise<void>>(Promise.resolve());
|
|
280
281
|
|
|
281
282
|
const isExternallyControlledData = useMemo(
|
|
282
|
-
() => !onFetchData && (!!onDataChange || !!
|
|
283
|
-
[onFetchData, onDataChange,
|
|
283
|
+
() => !onFetchData && (!!onDataChange || !!onFetchStateChange),
|
|
284
|
+
[onFetchData, onDataChange, onFetchStateChange]
|
|
284
285
|
);
|
|
285
286
|
|
|
286
287
|
const { debouncedFetch, isLoading: fetchLoading } = useDebouncedFetch(onFetchData);
|
|
@@ -343,13 +344,6 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
343
344
|
overrides: Partial<TableState> = {},
|
|
344
345
|
options?: { delay?: number; meta?: DataFetchMeta }
|
|
345
346
|
) => {
|
|
346
|
-
if (!onFetchData) {
|
|
347
|
-
if (logger.isLevelEnabled('debug')) {
|
|
348
|
-
logger.debug('onFetchData not provided, skipping fetch', { overrides, columnFilter, sorting, pagination });
|
|
349
|
-
}
|
|
350
|
-
return;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
347
|
const filters: Partial<TableFiltersForFetch> = {
|
|
354
348
|
globalFilter,
|
|
355
349
|
pagination,
|
|
@@ -358,6 +352,16 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
358
352
|
...overrides,
|
|
359
353
|
};
|
|
360
354
|
|
|
355
|
+
if(onFetchStateChange) {
|
|
356
|
+
onFetchStateChange(filters, options?.meta);
|
|
357
|
+
}
|
|
358
|
+
if (!onFetchData) {
|
|
359
|
+
if (logger.isLevelEnabled('debug')) {
|
|
360
|
+
logger.debug('onFetchData not provided, skipping fetch', { overrides, columnFilter, sorting, pagination });
|
|
361
|
+
}
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
|
|
361
365
|
if (logger.isLevelEnabled('info')) {
|
|
362
366
|
logger.info('Requesting data', {
|
|
363
367
|
filters,
|
|
@@ -400,6 +404,7 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
400
404
|
sorting,
|
|
401
405
|
debouncedFetch,
|
|
402
406
|
logger,
|
|
407
|
+
onFetchStateChange,
|
|
403
408
|
]);
|
|
404
409
|
|
|
405
410
|
const normalizeRefreshOptions = useCallback((
|
|
@@ -698,7 +703,7 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
698
703
|
}, [isExternallyControlledData, serverData]);
|
|
699
704
|
|
|
700
705
|
useEffect(() => {
|
|
701
|
-
if (initialLoadData && onFetchData) {
|
|
706
|
+
if (initialLoadData && (onFetchData || onFetchStateChange)) {
|
|
702
707
|
if (logger.isLevelEnabled('info')) {
|
|
703
708
|
logger.info('Initial data load triggered', { initialLoadData });
|
|
704
709
|
}
|
|
@@ -825,34 +830,6 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
825
830
|
return nextData;
|
|
826
831
|
}, [isExternallyControlledData, logger, onDataChange, tableData, tableTotalRow]);
|
|
827
832
|
|
|
828
|
-
const buildRefreshContext = useCallback((
|
|
829
|
-
options: ReturnType<typeof normalizeRefreshOptions>,
|
|
830
|
-
paginationOverride?: { pageIndex: number; pageSize: number }
|
|
831
|
-
): DataRefreshContext => {
|
|
832
|
-
const state = table.getState();
|
|
833
|
-
const nextPagination = paginationOverride || state.pagination || pagination;
|
|
834
|
-
|
|
835
|
-
return {
|
|
836
|
-
filters: {
|
|
837
|
-
globalFilter,
|
|
838
|
-
pagination: nextPagination,
|
|
839
|
-
columnFilter,
|
|
840
|
-
sorting,
|
|
841
|
-
},
|
|
842
|
-
state: {
|
|
843
|
-
sorting,
|
|
844
|
-
pagination: nextPagination,
|
|
845
|
-
globalFilter,
|
|
846
|
-
columnFilter,
|
|
847
|
-
columnVisibility: state.columnVisibility,
|
|
848
|
-
columnSizing: state.columnSizing,
|
|
849
|
-
columnOrder: state.columnOrder,
|
|
850
|
-
columnPinning: state.columnPinning,
|
|
851
|
-
},
|
|
852
|
-
options,
|
|
853
|
-
};
|
|
854
|
-
}, [table, pagination, globalFilter, columnFilter, sorting]);
|
|
855
|
-
|
|
856
833
|
const triggerRefresh = useCallback(async (
|
|
857
834
|
options?: boolean | DataRefreshOptions,
|
|
858
835
|
fallbackReason: string = 'refresh'
|
|
@@ -873,41 +850,18 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
873
850
|
onPaginationChange?.(nextPagination);
|
|
874
851
|
}
|
|
875
852
|
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
meta: {
|
|
889
|
-
reason: normalizedOptions.reason,
|
|
890
|
-
force: normalizedOptions.force,
|
|
891
|
-
},
|
|
892
|
-
}
|
|
893
|
-
);
|
|
894
|
-
return;
|
|
895
|
-
}
|
|
896
|
-
|
|
897
|
-
if (logger.isLevelEnabled('debug')) {
|
|
898
|
-
logger.debug('Refresh skipped because no refresh handler is configured', refreshContext);
|
|
899
|
-
}
|
|
900
|
-
}, [
|
|
901
|
-
normalizeRefreshOptions,
|
|
902
|
-
enablePagination,
|
|
903
|
-
pagination,
|
|
904
|
-
onPaginationChange,
|
|
905
|
-
buildRefreshContext,
|
|
906
|
-
onRefreshData,
|
|
907
|
-
onFetchData,
|
|
908
|
-
fetchData,
|
|
909
|
-
logger,
|
|
910
|
-
]);
|
|
853
|
+
await fetchData(
|
|
854
|
+
nextPagination ? { pagination: nextPagination } : {},
|
|
855
|
+
{
|
|
856
|
+
delay: 0,
|
|
857
|
+
meta: {
|
|
858
|
+
reason: normalizedOptions.reason,
|
|
859
|
+
force: normalizedOptions.force,
|
|
860
|
+
},
|
|
861
|
+
}
|
|
862
|
+
);
|
|
863
|
+
return;
|
|
864
|
+
}, [normalizeRefreshOptions, enablePagination, pagination, onPaginationChange, fetchData]);
|
|
911
865
|
|
|
912
866
|
const resetAllAndReload = useCallback(() => {
|
|
913
867
|
const resetState = getResetState();
|
|
@@ -936,33 +890,14 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
|
|
|
936
890
|
reason: 'reset',
|
|
937
891
|
}, 'reset');
|
|
938
892
|
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
void fetchData(resetState, {
|
|
948
|
-
delay: 0,
|
|
949
|
-
meta: {
|
|
950
|
-
reason: resetOptions.reason,
|
|
951
|
-
force: resetOptions.force,
|
|
952
|
-
},
|
|
953
|
-
});
|
|
954
|
-
}
|
|
955
|
-
}, [
|
|
956
|
-
getResetState,
|
|
957
|
-
initialSelectionState,
|
|
958
|
-
initialStateConfig,
|
|
959
|
-
onPaginationChange,
|
|
960
|
-
normalizeRefreshOptions,
|
|
961
|
-
buildRefreshContext,
|
|
962
|
-
onRefreshData,
|
|
963
|
-
onFetchData,
|
|
964
|
-
fetchData,
|
|
965
|
-
]);
|
|
893
|
+
void fetchData(resetState, {
|
|
894
|
+
delay: 0,
|
|
895
|
+
meta: {
|
|
896
|
+
reason: resetOptions.reason,
|
|
897
|
+
force: resetOptions.force,
|
|
898
|
+
},
|
|
899
|
+
});
|
|
900
|
+
}, [getResetState, initialSelectionState, initialStateConfig, onPaginationChange, normalizeRefreshOptions, fetchData]);
|
|
966
901
|
|
|
967
902
|
const setExportControllerSafely = useCallback((
|
|
968
903
|
value: AbortController | null | ((current: AbortController | null) => AbortController | null)
|
|
@@ -73,6 +73,7 @@ export interface DataTableProps<T> {
|
|
|
73
73
|
initialLoadData?: boolean; // Initial load data (default: true)
|
|
74
74
|
onDataStateChange?: (filters: Partial<TableState>) => void; // Callback when any filter/state changes
|
|
75
75
|
onFetchData?: (filters: Partial<TableFilters>, meta?: DataFetchMeta) => Promise<{ data: T[]; total: number }>;
|
|
76
|
+
onFetchStateChange?: (filters: Partial<TableState>, meta?: DataFetchMeta) => void;
|
|
76
77
|
onRefreshData?: (context: DataRefreshContext) => void | Promise<void>;
|
|
77
78
|
onDataChange?: (nextData: T[], context: DataMutationContext<T>) => void;
|
|
78
79
|
|