@ackplus/react-tanstack-data-table 1.1.13 → 1.1.16

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.
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../src/lib/data-table.tsx"],"names":[],"mappings":"AAqFA;;GAEG;AACH,eAAO,MAAM,SAAS,KA6oEpB,CAAC"}
1
+ {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../src/lib/data-table.tsx"],"names":[],"mappings":"AAoFA;;GAEG;AACH,eAAO,MAAM,SAAS,KA2jEpB,CAAC"}
@@ -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, onRefreshData, onDataChange, onDataStateChange,
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, exportFilename = 'export', exportConcurrency = 'cancelAndRestart', exportChunkSize = 1000, exportStrictTotalCheck = false, exportSanitizeCSV = true, onExportProgress, onExportComplete, onExportError, onServerExport, onExportCancel, onExportStateChange,
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 || !!onRefreshData), [onFetchData, onDataChange, onRefreshData]);
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;
@@ -326,13 +335,6 @@ logging, }, ref) {
326
335
  return next;
327
336
  });
328
337
  }, [onSelectionChange]);
329
- const handleColumnFilterStateChange = (0, react_1.useCallback)((filterState) => {
330
- if (!filterState || typeof filterState !== 'object')
331
- return;
332
- setColumnFilter(filterState);
333
- onColumnFiltersChange === null || onColumnFiltersChange === void 0 ? void 0 : onColumnFiltersChange(filterState);
334
- return filterState;
335
- }, [onColumnFiltersChange]);
336
338
  const resetPageToFirst = (0, react_1.useCallback)(() => {
337
339
  if (logger.isLevelEnabled('info')) {
338
340
  logger.info('Resetting to first page due to state change', {
@@ -411,30 +413,21 @@ logging, }, ref) {
411
413
  }
412
414
  return next;
413
415
  });
414
- }, [isServerMode, isServerFiltering, onGlobalFilterChange, fetchData, pagination.pageSize]);
415
- const onColumnFilterChangeHandler = (0, react_1.useCallback)((updater) => {
416
- const currentState = columnFilter;
417
- const newState = typeof updater === 'function'
418
- ? updater(currentState)
419
- : updater;
420
- const legacyFilterState = {
421
- filters: newState.filters,
422
- logic: newState.logic,
423
- pendingFilters: newState.pendingFilters,
424
- pendingLogic: newState.pendingLogic
425
- };
426
- handleColumnFilterStateChange(legacyFilterState);
427
- }, [columnFilter, handleColumnFilterStateChange]);
428
- const onColumnFilterApplyHandler = (0, react_1.useCallback)((appliedState) => {
429
- const pagination = resetPageToFirst();
430
- if (isServerFiltering) {
431
- fetchData({
432
- columnFilter: appliedState,
433
- pagination,
434
- });
435
- }
436
- onColumnFiltersChange === null || onColumnFiltersChange === void 0 ? void 0 : onColumnFiltersChange(appliedState);
437
- }, [resetPageToFirst, isServerFiltering, fetchData, onColumnFiltersChange]);
416
+ }, [isServerMode, isServerFiltering, onGlobalFilterChange, fetchData, pagination === null || pagination === void 0 ? void 0 : pagination.pageSize]);
417
+ const handleColumnFilterChangeHandler = (0, react_1.useCallback)((updater, isApply = false) => {
418
+ setColumnFilter((prev) => {
419
+ const newState = typeof updater === 'function' ? updater(prev) : updater;
420
+ if (isApply) {
421
+ if (isServerMode || isServerFiltering) {
422
+ const nextPagination = { pageIndex: 0, pageSize: pagination.pageSize };
423
+ setPagination(nextPagination);
424
+ fetchData({ columnFilter: newState, pagination: nextPagination }, { delay: 0 });
425
+ }
426
+ }
427
+ onColumnFiltersChange === null || onColumnFiltersChange === void 0 ? void 0 : onColumnFiltersChange(newState, isApply);
428
+ return newState;
429
+ });
430
+ }, [fetchData, isServerFiltering, isServerMode, onColumnFiltersChange, pagination.pageSize]);
438
431
  // -------------------------------
439
432
  // Table creation (after callbacks/memo)
440
433
  // -------------------------------
@@ -464,8 +457,8 @@ logging, }, ref) {
464
457
  ...(enableRowSelection ? { onSelectionStateChange: handleSelectionStateChange } : {}),
465
458
  // Column filter
466
459
  enableAdvanceColumnFilter: enableColumnFilter,
467
- onColumnFilterChange: onColumnFilterChangeHandler, // Handle column filters change
468
- onColumnFilterApply: onColumnFilterApplyHandler, // Handle when filters are actually applied
460
+ onColumnFilterChange: handleColumnFilterChangeHandler, // Handle column filters change
461
+ onColumnFilterApply: (state) => handleColumnFilterChangeHandler(state, true), // Handle when filters are actually applied
469
462
  ...(enableSorting ? { onSortingChange: handleSortingChange } : {}),
470
463
  ...(enablePagination ? { onPaginationChange: handlePaginationChange } : {}),
471
464
  ...(enableGlobalFilter ? { onGlobalFilterChange: handleGlobalFilterChange } : {}),
@@ -563,7 +556,7 @@ logging, }, ref) {
563
556
  setServerTotal(0);
564
557
  }, [isExternallyControlledData, serverData]);
565
558
  (0, react_1.useEffect)(() => {
566
- if (initialLoadData && onFetchData) {
559
+ if (initialLoadData && (onFetchData || onFetchStateChange)) {
567
560
  if (logger.isLevelEnabled('info')) {
568
561
  logger.info('Initial data load triggered', { initialLoadData });
569
562
  }
@@ -672,29 +665,6 @@ logging, }, ref) {
672
665
  }
673
666
  return nextData;
674
667
  }, [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
668
  const triggerRefresh = (0, react_1.useCallback)(async (options, fallbackReason = 'refresh') => {
699
669
  const normalizedOptions = normalizeRefreshOptions(options, fallbackReason);
700
670
  const nextPagination = enablePagination
@@ -709,35 +679,15 @@ logging, }, ref) {
709
679
  setPagination(nextPagination);
710
680
  onPaginationChange === null || onPaginationChange === void 0 ? void 0 : onPaginationChange(nextPagination);
711
681
  }
712
- const refreshContext = buildRefreshContext(normalizedOptions, nextPagination);
713
- if (onRefreshData) {
714
- await onRefreshData(refreshContext);
715
- return;
716
- }
717
- if (onFetchData) {
718
- await fetchData(nextPagination ? { pagination: nextPagination } : {}, {
719
- delay: 0,
720
- meta: {
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
- ]);
682
+ await fetchData(nextPagination ? { pagination: nextPagination } : {}, {
683
+ delay: 0,
684
+ meta: {
685
+ reason: normalizedOptions.reason,
686
+ force: normalizedOptions.force,
687
+ },
688
+ });
689
+ return;
690
+ }, [normalizeRefreshOptions, enablePagination, pagination, onPaginationChange, fetchData]);
741
691
  const resetAllAndReload = (0, react_1.useCallback)(() => {
742
692
  var _a;
743
693
  const resetState = getResetState();
@@ -760,31 +710,14 @@ logging, }, ref) {
760
710
  force: true,
761
711
  reason: 'reset',
762
712
  }, 'reset');
763
- const refreshContext = buildRefreshContext(resetOptions, resetState.pagination);
764
- if (onRefreshData) {
765
- void onRefreshData(refreshContext);
766
- return;
767
- }
768
- if (onFetchData) {
769
- void fetchData(resetState, {
770
- delay: 0,
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
- ]);
713
+ void fetchData(resetState, {
714
+ delay: 0,
715
+ meta: {
716
+ reason: resetOptions.reason,
717
+ force: resetOptions.force,
718
+ },
719
+ });
720
+ }, [getResetState, initialSelectionState, initialStateConfig, onPaginationChange, normalizeRefreshOptions, fetchData]);
788
721
  const setExportControllerSafely = (0, react_1.useCallback)((value) => {
789
722
  setExportController((current) => {
790
723
  const next = typeof value === 'function' ? value(current) : value;
@@ -1032,8 +965,8 @@ logging, }, ref) {
1032
965
  clearGlobalFilter: () => {
1033
966
  applyGlobalFilter("");
1034
967
  },
1035
- setColumnFilters: (filters) => {
1036
- handleColumnFilterStateChange(filters);
968
+ setColumnFilters: (filters, isApply = false) => {
969
+ handleColumnFilterChangeHandler(filters, isApply);
1037
970
  },
1038
971
  addColumnFilter: (columnId, operator, value) => {
1039
972
  const newFilter = {
@@ -1045,46 +978,54 @@ logging, }, ref) {
1045
978
  const current = table.getState().columnFilter;
1046
979
  const currentFilters = (current === null || current === void 0 ? void 0 : current.filters) || [];
1047
980
  const nextFilters = [...currentFilters, newFilter];
1048
- handleColumnFilterStateChange({
981
+ const nextPendingFilters = [...((current === null || current === void 0 ? void 0 : current.pendingFilters) || []), newFilter];
982
+ handleColumnFilterChangeHandler({
1049
983
  filters: nextFilters,
1050
984
  logic: current === null || current === void 0 ? void 0 : current.logic,
1051
- pendingFilters: (current === null || current === void 0 ? void 0 : current.pendingFilters) || [],
985
+ pendingFilters: nextPendingFilters,
1052
986
  pendingLogic: (current === null || current === void 0 ? void 0 : current.pendingLogic) || "AND",
1053
- });
987
+ }, true);
1054
988
  if (logger.isLevelEnabled("debug")) {
1055
989
  logger.debug(`Adding column filter ${columnId} ${operator} ${value}`, nextFilters);
1056
990
  }
1057
991
  },
1058
992
  removeColumnFilter: (filterId) => {
993
+ var _a, _b;
1059
994
  const current = table.getState().columnFilter;
1060
995
  const currentFilters = (current === null || current === void 0 ? void 0 : current.filters) || [];
996
+ const isApplied = (_a = current === null || current === void 0 ? void 0 : current.pendingFilters) === null || _a === void 0 ? void 0 : _a.some((f) => f.id === filterId);
1061
997
  const nextFilters = currentFilters.filter((f) => f.id !== filterId);
1062
- handleColumnFilterStateChange({
998
+ const nextPendingFilters = ((_b = current === null || current === void 0 ? void 0 : current.pendingFilters) === null || _b === void 0 ? void 0 : _b.filter((f) => f.id !== filterId)) || [];
999
+ handleColumnFilterChangeHandler({
1063
1000
  filters: nextFilters,
1064
1001
  logic: current === null || current === void 0 ? void 0 : current.logic,
1065
- pendingFilters: (current === null || current === void 0 ? void 0 : current.pendingFilters) || [],
1002
+ pendingFilters: nextPendingFilters,
1066
1003
  pendingLogic: (current === null || current === void 0 ? void 0 : current.pendingLogic) || "AND",
1067
- });
1004
+ }, isApplied);
1068
1005
  if (logger.isLevelEnabled("debug")) {
1069
1006
  logger.debug(`Removing column filter ${filterId}`, nextFilters);
1070
1007
  }
1071
1008
  },
1072
1009
  clearAllFilters: () => {
1010
+ var _a, _b;
1073
1011
  applyGlobalFilter("");
1074
- handleColumnFilterStateChange({
1012
+ const isApplied = ((_b = (_a = table.getState().columnFilter) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.length) > 0;
1013
+ handleColumnFilterChangeHandler({
1075
1014
  filters: [],
1076
1015
  logic: "AND",
1077
1016
  pendingFilters: [],
1078
1017
  pendingLogic: "AND",
1079
- });
1018
+ }, isApplied);
1080
1019
  },
1081
1020
  resetFilters: () => {
1082
- handleColumnFilterStateChange({
1021
+ var _a, _b;
1022
+ const isApplied = ((_b = (_a = table.getState().columnFilter) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.length) > 0;
1023
+ handleColumnFilterChangeHandler({
1083
1024
  filters: [],
1084
1025
  logic: "AND",
1085
1026
  pendingFilters: [],
1086
1027
  pendingLogic: "AND",
1087
- });
1028
+ }, isApplied);
1088
1029
  if (logger.isLevelEnabled("debug")) {
1089
1030
  logger.debug("Resetting filters");
1090
1031
  }
@@ -1337,6 +1278,7 @@ logging, }, ref) {
1337
1278
  columnFilter: table.getState().columnFilter,
1338
1279
  }),
1339
1280
  restoreLayout: (layout) => {
1281
+ var _a, _b;
1340
1282
  if (layout.columnVisibility)
1341
1283
  applyVisibility(layout.columnVisibility);
1342
1284
  if (layout.columnSizing)
@@ -1352,7 +1294,7 @@ logging, }, ref) {
1352
1294
  if (layout.globalFilter !== undefined)
1353
1295
  applyGlobalFilter(layout.globalFilter);
1354
1296
  if (layout.columnFilter)
1355
- handleColumnFilterStateChange(layout.columnFilter);
1297
+ handleColumnFilterChangeHandler(layout.columnFilter, ((_b = (_a = layout.columnFilter) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.length) > 0);
1356
1298
  },
1357
1299
  },
1358
1300
  // -------------------------------
@@ -1581,7 +1523,6 @@ logging, }, ref) {
1581
1523
  },
1582
1524
  },
1583
1525
  };
1584
- // eslint-disable-next-line react-hooks/exhaustive-deps
1585
1526
  }, [
1586
1527
  table,
1587
1528
  enhancedColumns,
@@ -1592,7 +1533,7 @@ logging, }, ref) {
1592
1533
  handlePaginationChange,
1593
1534
  handleSortingChange,
1594
1535
  handleGlobalFilterChange,
1595
- handleColumnFilterStateChange,
1536
+ handleColumnFilterChangeHandler,
1596
1537
  initialStateConfig,
1597
1538
  enablePagination,
1598
1539
  idKey,
@@ -1698,7 +1639,7 @@ logging, }, ref) {
1698
1639
  // -------------------------------
1699
1640
  return ((0, jsx_runtime_1.jsx)(data_table_context_1.DataTableProvider, { table: table, apiRef: internalApiRef, dataMode: dataMode, tableSize: tableSize, onTableSizeChange: (size) => {
1700
1641
  setTableSize(size);
1701
- }, columnFilter: columnFilter, onChangeColumnFilter: handleColumnFilterStateChange, slots: slots, slotProps: slotProps, isExporting: isExporting, exportController: exportController, exportPhase: exportPhase, exportProgress: exportProgress, onCancelExport: handleCancelExport, exportFilename: exportFilename, onExportProgress: onExportProgress, onExportComplete: onExportComplete, onExportError: onExportError, onServerExport: onServerExport, children: (0, jsx_runtime_1.jsxs)(RootComponent, { ...rootSlotProps, children: [(enableGlobalFilter || extraFilter) ? ((0, jsx_runtime_1.jsx)(ToolbarComponent, { extraFilter: extraFilter, enableGlobalFilter: enableGlobalFilter, enableColumnVisibility: enableColumnVisibility, enableColumnFilter: enableColumnFilter, enableExport: enableExport, enableReset: enableReset, enableTableSizeControl: enableTableSizeControl, enableColumnPinning: enableColumnPinning, enableRefresh: enableRefresh, ...toolbarSlotProps, refreshButtonProps: {
1642
+ }, columnFilter: columnFilter, onChangeColumnFilter: handleColumnFilterChangeHandler, slots: slots, slotProps: slotProps, isExporting: isExporting, exportController: exportController, exportPhase: exportPhase, exportProgress: exportProgress, onCancelExport: handleCancelExport, exportFilename: exportFilename, onExportProgress: onExportProgress, onExportComplete: onExportComplete, onExportError: onExportError, onServerExport: onServerExport, children: (0, jsx_runtime_1.jsxs)(RootComponent, { ...rootSlotProps, children: [(enableGlobalFilter || extraFilter) ? ((0, jsx_runtime_1.jsx)(ToolbarComponent, { extraFilter: extraFilter, enableGlobalFilter: enableGlobalFilter, enableColumnVisibility: enableColumnVisibility, enableColumnFilter: enableColumnFilter, enableExport: enableExport, enableReset: enableReset, enableTableSizeControl: enableTableSizeControl, enableColumnPinning: enableColumnPinning, enableRefresh: enableRefresh, ...toolbarSlotProps, refreshButtonProps: {
1702
1643
  loading: tableLoading, // disable while fetching
1703
1644
  showSpinnerWhileLoading: false,
1704
1645
  onRefresh: () => { var _a, _b, _c; return (_c = (_b = (_a = internalApiRef.current) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.refresh) === null || _c === void 0 ? void 0 : _c.call(_b, true); },
@@ -1 +1 @@
1
- {"version":3,"file":"selection.feature.d.ts","sourceRoot":"","sources":["../../../src/lib/features/selection.feature.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAEH,YAAY,EACZ,OAAO,EACP,OAAO,EAGP,GAAG,EACN,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC/B;AAGD,MAAM,MAAM,uBAAuB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC;AAG3F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAGxC,MAAM,WAAW,gBAAgB;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;CACvE;AAGD,MAAM,WAAW,mBAAmB;IAChC,cAAc,EAAE,cAAc,CAAC;CAClC;AAGD,OAAO,QAAQ,uBAAuB,CAAC;IACnC,UAAU,UAAW,SAAQ,mBAAmB;KAAI;IACpD,UAAU,oBAAoB,CAAC,KAAK,SAAS,OAAO,CAChD,SAAQ,gBAAgB;KAAI;IAChC,UAAU,KAAK,CAAC,KAAK,SAAS,OAAO,CAAE,SAAQ,iBAAiB,CAAC,KAAK,CAAC;KAAI;CAC9E;AAGD,MAAM,WAAW,iBAAiB,CAAC,KAAK,SAAS,OAAO;IAEpD,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC9D,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;IAGxB,oBAAoB,EAAE,MAAM,OAAO,CAAC;IACpC,qBAAqB,EAAE,MAAM,OAAO,CAAC;IACrC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAG7C,iBAAiB,EAAE,MAAM,cAAc,CAAC;IACxC,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IACpC,iBAAiB,EAAE,MAAM,MAAM,EAAE,CAAC;IAGlC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5C;AAGD,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,GAAG,CAsP9C,CAAC"}
1
+ {"version":3,"file":"selection.feature.d.ts","sourceRoot":"","sources":["../../../src/lib/features/selection.feature.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAEH,YAAY,EACZ,OAAO,EACP,OAAO,EAGP,GAAG,EACN,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC/B;AAGD,MAAM,MAAM,uBAAuB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC;AAG3F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAGxC,MAAM,WAAW,gBAAgB;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;CACvE;AAGD,MAAM,WAAW,mBAAmB;IAChC,cAAc,EAAE,cAAc,CAAC;CAClC;AAGD,OAAO,QAAQ,uBAAuB,CAAC;IACnC,UAAU,UAAW,SAAQ,mBAAmB;KAAI;IACpD,UAAU,oBAAoB,CAAC,KAAK,SAAS,OAAO,CAChD,SAAQ,gBAAgB;KAAI;IAChC,UAAU,KAAK,CAAC,KAAK,SAAS,OAAO,CAAE,SAAQ,iBAAiB,CAAC,KAAK,CAAC;KAAI;CAC9E;AAGD,MAAM,WAAW,iBAAiB,CAAC,KAAK,SAAS,OAAO;IAEpD,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC9D,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;IAGxB,oBAAoB,EAAE,MAAM,OAAO,CAAC;IACpC,qBAAqB,EAAE,MAAM,OAAO,CAAC;IACrC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAG7C,iBAAiB,EAAE,MAAM,cAAc,CAAC;IACxC,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IACpC,iBAAiB,EAAE,MAAM,MAAM,EAAE,CAAC;IAGlC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5C;AAGD,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,GAAG,CAoP9C,CAAC"}
@@ -110,8 +110,7 @@ exports.SelectionFeature = {
110
110
  if (!table.options.enableAdvanceSelection)
111
111
  return;
112
112
  const selectMode = table.options.selectMode || 'page';
113
- const currentRows = ((_b = (_a = table.getPaginationRowModel) === null || _a === void 0 ? void 0 : _a.call(table)) === null || _b === void 0 ? void 0 : _b.rows) ||
114
- table.getRowModel().rows;
113
+ const currentRows = ((_b = (_a = table.getPaginationRowModel) === null || _a === void 0 ? void 0 : _a.call(table)) === null || _b === void 0 ? void 0 : _b.rows) || table.getRowModel().rows;
115
114
  if (selectMode === 'all') {
116
115
  // In 'all' mode, use exclude type with empty list (select all)
117
116
  table.setSelectionState((old) => ({
@@ -50,7 +50,7 @@ export interface DataTableApi<T = any> {
50
50
  filtering: {
51
51
  setGlobalFilter: (filter: string) => void;
52
52
  clearGlobalFilter: () => void;
53
- setColumnFilters: (filters: ColumnFilterState) => void;
53
+ setColumnFilters: (filters: ColumnFilterState, isApply?: boolean) => void;
54
54
  addColumnFilter: (columnId: string, operator: string, value: any) => void;
55
55
  removeColumnFilter: (filterId: string) => void;
56
56
  clearAllFilters: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-api.d.ts","sourceRoot":"","sources":["../../../src/lib/types/data-table-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-table-api.d.ts","sourceRoot":"","sources":["../../../src/lib/types/data-table-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,qBAAqB,CAAC;AAElE,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IAEjC,gBAAgB,EAAE;QACd,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACvC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACvC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACzC,cAAc,EAAE,MAAM,IAAI,CAAC;QAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;QAC3B,qBAAqB,EAAE,MAAM,IAAI,CAAC;KACrC,CAAC;IAEF,KAAK,EAAE;QACH,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5B,CAAA;IAGD,cAAc,EAAE;QACZ,cAAc,EAAE,CAAC,WAAW,EAAE,gBAAgB,KAAK,IAAI,CAAC;QACxD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QACxD,gBAAgB,EAAE,MAAM,IAAI,CAAC;KAChC,CAAC;IAGF,aAAa,EAAE;QACX,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC1C,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC3C,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,UAAU,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;QAClD,kBAAkB,EAAE,MAAM,IAAI,CAAC;KAClC,CAAC;IAGF,cAAc,EAAE;QACZ,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC3C,kBAAkB,EAAE,MAAM,IAAI,CAAC;QAC/B,iBAAiB,EAAE,MAAM,IAAI,CAAC;KACjC,CAAC;IAGF,SAAS,EAAE;QACP,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;QAC1C,iBAAiB,EAAE,MAAM,IAAI,CAAC;QAC9B,gBAAgB,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QAC1E,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QAC1E,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC/C,eAAe,EAAE,MAAM,IAAI,CAAC;QAC5B,YAAY,EAAE,MAAM,IAAI,CAAC;KAC5B,CAAC;IAGF,OAAO,EAAE;QACL,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;QAC5C,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;QAC1E,YAAY,EAAE,MAAM,IAAI,CAAC;QACzB,YAAY,EAAE,MAAM,IAAI,CAAC;KAC5B,CAAC;IAGF,UAAU,EAAE;QACR,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;QACtC,QAAQ,EAAE,MAAM,IAAI,CAAC;QACrB,YAAY,EAAE,MAAM,IAAI,CAAC;QACzB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,aAAa,EAAE,MAAM,IAAI,CAAC;QAC1B,YAAY,EAAE,MAAM,IAAI,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;KAChC,CAAC;IAGF,SAAS,EAAE;QAEP,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAG5C,SAAS,EAAE,MAAM,IAAI,CAAC;QACtB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,eAAe,EAAE,MAAM,IAAI,CAAC;QAG5B,iBAAiB,EAAE,MAAM,cAAc,CAAC;QACxC,gBAAgB,EAAE,MAAM,MAAM,CAAC;QAG/B,eAAe,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAE/B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;KAC7C,CAAC;IAGF,IAAI,EAAE;QAEF,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,mBAAmB,KAAK,IAAI,CAAC;QAEjD,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;QAElD,QAAQ,EAAE,MAAM,IAAI,CAAC;QAGrB,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;QACtB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;QAC7C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;QAChD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QACxD,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAC/D,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAC/C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAC1C,kBAAkB,EAAE,MAAM,IAAI,CAAC;QAC/B,cAAc,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;QAGvC,kBAAkB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;SAAE,CAAC,KAAK,IAAI,CAAC;QAClF,kBAAkB,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAChE,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;QAG/C,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QACrE,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QAG5E,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC;QAClD,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,KAAK,MAAM,CAAC;QACzD,YAAY,EAAE,MAAM,MAAM,CAAC;QAC3B,oBAAoB,EAAE,MAAM,MAAM,CAAC;KACtC,CAAC;IAGF,MAAM,EAAE;QACJ,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,QAAQ,EAAE,MAAM,IAAI,CAAC;QACrB,UAAU,EAAE,MAAM,GAAG,CAAC;QACtB,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;KACxC,CAAC;IAGF,KAAK,EAAE;QACH,aAAa,EAAE,MAAM,GAAG,CAAC;QACzB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;QAC3C,iBAAiB,EAAE,MAAM,YAAY,CAAC;QACtC,oBAAoB,EAAE,MAAM;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QACpE,mBAAmB,EAAE,MAAM,cAAc,CAAC;KAC7C,CAAC;IAGF,MAAM,EAAE;QACJ,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACpE,gBAAgB,EAAE,CAAC,OAAO,EAAE;YACxB,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;YACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,CACP,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAC7B,SAAS,CAAC,EAAE,cAAc,EAC1B,MAAM,CAAC,EAAE,WAAW,KACnB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,cAAc,CAAC,EAAE,OAAO,CAAC;YACzB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;YAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;SACzB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACpB,WAAW,EAAE,MAAM,OAAO,CAAC;QAC3B,YAAY,EAAE,MAAM,IAAI,CAAC;KAC5B,CAAC;CACL"}
@@ -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;
@@ -118,7 +119,7 @@ export interface DataTableProps<T> {
118
119
  loading?: boolean;
119
120
  emptyMessage?: string | ReactNode;
120
121
  skeletonRows?: number;
121
- onColumnFiltersChange?: (filterState: ColumnFilterState) => void;
122
+ onColumnFiltersChange?: (filterState: ColumnFilterState, isApplied?: boolean) => void;
122
123
  onPaginationChange?: (pagination: PaginationState) => void;
123
124
  onGlobalFilterChange?: (globalFilter: string) => void;
124
125
  onColumnFilterChange?: (columnFilter: ColumnFilterState) => void;
@@ -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ackplus/react-tanstack-data-table",
3
3
  "type": "commonjs",
4
- "version": "1.1.13",
4
+ "version": "1.1.16",
5
5
  "description": "A powerful React data table component built with MUI and TanStack Table",
6
6
  "keywords": [
7
7
  "react",
@@ -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
- onRefreshData,
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 || !!onRefreshData),
283
- [onFetchData, onDataChange, onRefreshData]
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((
@@ -431,15 +436,6 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
431
436
  });
432
437
  }, [onSelectionChange]);
433
438
 
434
- const handleColumnFilterStateChange = useCallback((filterState: ColumnFilterState) => {
435
- if (!filterState || typeof filterState !== 'object') return;
436
-
437
- setColumnFilter(filterState);
438
- onColumnFiltersChange?.(filterState);
439
- return filterState;
440
- }, [onColumnFiltersChange]);
441
-
442
-
443
439
  const resetPageToFirst = useCallback(() => {
444
440
  if (logger.isLevelEnabled('info')) {
445
441
  logger.info('Resetting to first page due to state change', {
@@ -455,7 +451,6 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
455
451
 
456
452
 
457
453
  const handleSortingChange = useCallback((updaterOrValue: any) => {
458
-
459
454
  setSorting((prev) => {
460
455
  const next = typeof updaterOrValue === 'function' ? updaterOrValue(prev) : updaterOrValue;
461
456
  const cleaned = next.filter((s: any) => s?.id);
@@ -535,33 +530,22 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
535
530
 
536
531
  return next;
537
532
  });
538
- }, [isServerMode, isServerFiltering, onGlobalFilterChange, fetchData, pagination.pageSize]);
539
-
540
- const onColumnFilterChangeHandler = useCallback((updater: any) => {
541
- const currentState = columnFilter;
542
- const newState = typeof updater === 'function'
543
- ? updater(currentState)
544
- : updater;
545
- const legacyFilterState = {
546
- filters: newState.filters,
547
- logic: newState.logic,
548
- pendingFilters: newState.pendingFilters,
549
- pendingLogic: newState.pendingLogic
550
- };
551
- handleColumnFilterStateChange(legacyFilterState);
552
- }, [columnFilter, handleColumnFilterStateChange]);
553
-
554
- const onColumnFilterApplyHandler = useCallback((appliedState: ColumnFilterState) => {
555
- const pagination = resetPageToFirst();
556
- if (isServerFiltering) {
557
- fetchData({
558
- columnFilter: appliedState,
559
- pagination,
560
- });
561
- }
562
-
563
- onColumnFiltersChange?.(appliedState);
564
- }, [resetPageToFirst, isServerFiltering, fetchData, onColumnFiltersChange]);
533
+ }, [isServerMode, isServerFiltering, onGlobalFilterChange, fetchData, pagination?.pageSize]);
534
+
535
+ const handleColumnFilterChangeHandler = useCallback((updater: any, isApply = false) => {
536
+ setColumnFilter((prev) => {
537
+ const newState = typeof updater === 'function' ? updater(prev) : updater
538
+ if (isApply){
539
+ if (isServerMode || isServerFiltering) {
540
+ const nextPagination = { pageIndex: 0, pageSize: pagination.pageSize };
541
+ setPagination(nextPagination);
542
+ fetchData({ columnFilter: newState, pagination: nextPagination }, { delay: 0 });
543
+ }
544
+ }
545
+ onColumnFiltersChange?.(newState, isApply);
546
+ return newState;
547
+ });
548
+ }, [fetchData, isServerFiltering, isServerMode, onColumnFiltersChange, pagination.pageSize]);
565
549
 
566
550
  // -------------------------------
567
551
  // Table creation (after callbacks/memo)
@@ -592,8 +576,8 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
592
576
  ...(enableRowSelection ? { onSelectionStateChange: handleSelectionStateChange } : {}),
593
577
  // Column filter
594
578
  enableAdvanceColumnFilter: enableColumnFilter,
595
- onColumnFilterChange: onColumnFilterChangeHandler, // Handle column filters change
596
- onColumnFilterApply: onColumnFilterApplyHandler, // Handle when filters are actually applied
579
+ onColumnFilterChange: handleColumnFilterChangeHandler, // Handle column filters change
580
+ onColumnFilterApply: (state: ColumnFilterState) => handleColumnFilterChangeHandler(state, true), // Handle when filters are actually applied
597
581
 
598
582
 
599
583
  ...(enableSorting ? { onSortingChange: handleSortingChange } : {}),
@@ -698,7 +682,7 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
698
682
  }, [isExternallyControlledData, serverData]);
699
683
 
700
684
  useEffect(() => {
701
- if (initialLoadData && onFetchData) {
685
+ if (initialLoadData && (onFetchData || onFetchStateChange)) {
702
686
  if (logger.isLevelEnabled('info')) {
703
687
  logger.info('Initial data load triggered', { initialLoadData });
704
688
  }
@@ -825,34 +809,6 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
825
809
  return nextData;
826
810
  }, [isExternallyControlledData, logger, onDataChange, tableData, tableTotalRow]);
827
811
 
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
812
  const triggerRefresh = useCallback(async (
857
813
  options?: boolean | DataRefreshOptions,
858
814
  fallbackReason: string = 'refresh'
@@ -873,41 +829,18 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
873
829
  onPaginationChange?.(nextPagination);
874
830
  }
875
831
 
876
- const refreshContext = buildRefreshContext(normalizedOptions, nextPagination);
877
-
878
- if (onRefreshData) {
879
- await onRefreshData(refreshContext);
880
- return;
881
- }
882
-
883
- if (onFetchData) {
884
- await fetchData(
885
- nextPagination ? { pagination: nextPagination } : {},
886
- {
887
- delay: 0,
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
- ]);
832
+ await fetchData(
833
+ nextPagination ? { pagination: nextPagination } : {},
834
+ {
835
+ delay: 0,
836
+ meta: {
837
+ reason: normalizedOptions.reason,
838
+ force: normalizedOptions.force,
839
+ },
840
+ }
841
+ );
842
+ return;
843
+ }, [normalizeRefreshOptions, enablePagination, pagination, onPaginationChange, fetchData]);
911
844
 
912
845
  const resetAllAndReload = useCallback(() => {
913
846
  const resetState = getResetState();
@@ -936,33 +869,14 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
936
869
  reason: 'reset',
937
870
  }, 'reset');
938
871
 
939
- const refreshContext = buildRefreshContext(resetOptions, resetState.pagination);
940
-
941
- if (onRefreshData) {
942
- void onRefreshData(refreshContext);
943
- return;
944
- }
945
-
946
- if (onFetchData) {
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
- ]);
872
+ void fetchData(resetState, {
873
+ delay: 0,
874
+ meta: {
875
+ reason: resetOptions.reason,
876
+ force: resetOptions.force,
877
+ },
878
+ });
879
+ }, [getResetState, initialSelectionState, initialStateConfig, onPaginationChange, normalizeRefreshOptions, fetchData]);
966
880
 
967
881
  const setExportControllerSafely = useCallback((
968
882
  value: AbortController | null | ((current: AbortController | null) => AbortController | null)
@@ -1247,8 +1161,8 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
1247
1161
  clearGlobalFilter: () => {
1248
1162
  applyGlobalFilter("");
1249
1163
  },
1250
- setColumnFilters: (filters: ColumnFilterState) => {
1251
- handleColumnFilterStateChange(filters);
1164
+ setColumnFilters: (filters: ColumnFilterState, isApply = false) => {
1165
+ handleColumnFilterChangeHandler(filters, isApply);
1252
1166
  },
1253
1167
  addColumnFilter: (columnId: string, operator: string, value: any) => {
1254
1168
  const newFilter = {
@@ -1261,13 +1175,14 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
1261
1175
  const current = table.getState().columnFilter;
1262
1176
  const currentFilters = current?.filters || [];
1263
1177
  const nextFilters = [...currentFilters, newFilter];
1178
+ const nextPendingFilters = [...(current?.pendingFilters || []), newFilter];
1264
1179
 
1265
- handleColumnFilterStateChange({
1180
+ handleColumnFilterChangeHandler({
1266
1181
  filters: nextFilters,
1267
1182
  logic: current?.logic,
1268
- pendingFilters: current?.pendingFilters || [],
1183
+ pendingFilters: nextPendingFilters,
1269
1184
  pendingLogic: current?.pendingLogic || "AND",
1270
- });
1185
+ }, true);
1271
1186
 
1272
1187
  if (logger.isLevelEnabled("debug")) {
1273
1188
  logger.debug(`Adding column filter ${columnId} ${operator} ${value}`, nextFilters);
@@ -1276,14 +1191,15 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
1276
1191
  removeColumnFilter: (filterId: string) => {
1277
1192
  const current = table.getState().columnFilter;
1278
1193
  const currentFilters = current?.filters || [];
1194
+ const isApplied = current?.pendingFilters?.some((f: any) => f.id === filterId);
1279
1195
  const nextFilters = currentFilters.filter((f: any) => f.id !== filterId);
1280
-
1281
- handleColumnFilterStateChange({
1196
+ const nextPendingFilters = current?.pendingFilters?.filter((f: any) => f.id !== filterId) || [];
1197
+ handleColumnFilterChangeHandler({
1282
1198
  filters: nextFilters,
1283
1199
  logic: current?.logic,
1284
- pendingFilters: current?.pendingFilters || [],
1200
+ pendingFilters: nextPendingFilters,
1285
1201
  pendingLogic: current?.pendingLogic || "AND",
1286
- });
1202
+ }, isApplied);
1287
1203
 
1288
1204
  if (logger.isLevelEnabled("debug")) {
1289
1205
  logger.debug(`Removing column filter ${filterId}`, nextFilters);
@@ -1291,20 +1207,22 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
1291
1207
  },
1292
1208
  clearAllFilters: () => {
1293
1209
  applyGlobalFilter("");
1294
- handleColumnFilterStateChange({
1210
+ const isApplied = table.getState().columnFilter?.filters?.length > 0;
1211
+ handleColumnFilterChangeHandler({
1295
1212
  filters: [],
1296
1213
  logic: "AND",
1297
1214
  pendingFilters: [],
1298
1215
  pendingLogic: "AND",
1299
- });
1216
+ }, isApplied);
1300
1217
  },
1301
1218
  resetFilters: () => {
1302
- handleColumnFilterStateChange({
1219
+ const isApplied = table.getState().columnFilter?.filters?.length > 0;
1220
+ handleColumnFilterChangeHandler({
1303
1221
  filters: [],
1304
1222
  logic: "AND",
1305
1223
  pendingFilters: [],
1306
1224
  pendingLogic: "AND",
1307
- });
1225
+ }, isApplied);
1308
1226
 
1309
1227
  if (logger.isLevelEnabled("debug")) {
1310
1228
  logger.debug("Resetting filters");
@@ -1593,7 +1511,7 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
1593
1511
  if (layout.sorting) applySorting(layout.sorting as any);
1594
1512
  if (layout.pagination && enablePagination) applyPagination(layout.pagination as any);
1595
1513
  if (layout.globalFilter !== undefined) applyGlobalFilter(layout.globalFilter);
1596
- if (layout.columnFilter) handleColumnFilterStateChange(layout.columnFilter as any);
1514
+ if (layout.columnFilter) handleColumnFilterChangeHandler(layout.columnFilter as any, layout.columnFilter?.filters?.length > 0);
1597
1515
  },
1598
1516
  },
1599
1517
 
@@ -1878,7 +1796,6 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
1878
1796
  },
1879
1797
  },
1880
1798
  };
1881
- // eslint-disable-next-line react-hooks/exhaustive-deps
1882
1799
  }, [
1883
1800
  table,
1884
1801
  enhancedColumns,
@@ -1889,7 +1806,7 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
1889
1806
  handlePaginationChange,
1890
1807
  handleSortingChange,
1891
1808
  handleGlobalFilterChange,
1892
- handleColumnFilterStateChange,
1809
+ handleColumnFilterChangeHandler,
1893
1810
  initialStateConfig,
1894
1811
  enablePagination,
1895
1812
  idKey,
@@ -2132,7 +2049,7 @@ export const DataTable = forwardRef<DataTableApi<any>, DataTableProps<any>>(func
2132
2049
  setTableSize(size);
2133
2050
  }}
2134
2051
  columnFilter={columnFilter}
2135
- onChangeColumnFilter={handleColumnFilterStateChange}
2052
+ onChangeColumnFilter={handleColumnFilterChangeHandler}
2136
2053
  slots={slots}
2137
2054
  slotProps={slotProps}
2138
2055
  isExporting={isExporting}
@@ -175,9 +175,7 @@ export const SelectionFeature: TableFeature<any> = {
175
175
  if (!table.options.enableAdvanceSelection) return;
176
176
  const selectMode = table.options.selectMode || 'page';
177
177
 
178
- const currentRows =
179
- table.getPaginationRowModel?.()?.rows ||
180
- table.getRowModel().rows;
178
+ const currentRows = table.getPaginationRowModel?.()?.rows || table.getRowModel().rows;
181
179
 
182
180
  if (selectMode === 'all') {
183
181
  // In 'all' mode, use exclude type with empty list (select all)
@@ -65,7 +65,7 @@ export interface DataTableApi<T = any> {
65
65
  filtering: {
66
66
  setGlobalFilter: (filter: string) => void;
67
67
  clearGlobalFilter: () => void;
68
- setColumnFilters: (filters: ColumnFilterState) => void;
68
+ setColumnFilters: (filters: ColumnFilterState, isApply?: boolean) => void;
69
69
  addColumnFilter: (columnId: string, operator: string, value: any) => void;
70
70
  removeColumnFilter: (filterId: string) => void;
71
71
  clearAllFilters: () => void;
@@ -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
 
@@ -179,7 +180,7 @@ export interface DataTableProps<T> {
179
180
  skeletonRows?: number;
180
181
 
181
182
  // Column filters props
182
- onColumnFiltersChange?: (filterState: ColumnFilterState) => void;
183
+ onColumnFiltersChange?: (filterState: ColumnFilterState, isApplied?: boolean) => void;
183
184
  onPaginationChange?: (pagination: PaginationState) => void;
184
185
  onGlobalFilterChange?: (globalFilter: string) => void;
185
186
  onColumnFilterChange?: (columnFilter: ColumnFilterState) => void;