@ackplus/react-tanstack-data-table 1.0.19-beta-0.9 → 1.0.19-beta-0.12

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.
Files changed (38) hide show
  1. package/README.md +4 -4
  2. package/package.json +1 -1
  3. package/src/index.d.ts +1 -0
  4. package/src/index.js +3 -1
  5. package/src/lib/components/table/data-table.d.ts +2 -1
  6. package/src/lib/components/table/data-table.js +141 -121
  7. package/src/lib/components/table/data-table.types.d.ts +9 -9
  8. package/src/lib/components/toolbar/bulk-actions-toolbar.d.ts +1 -1
  9. package/src/lib/components/toolbar/column-filter-control.d.ts +1 -0
  10. package/src/lib/components/toolbar/{column-custom-filter-control.js → column-filter-control.js} +22 -20
  11. package/src/lib/components/toolbar/data-table-toolbar.js +2 -2
  12. package/src/lib/components/toolbar/index.d.ts +1 -0
  13. package/src/lib/components/toolbar/index.js +3 -1
  14. package/src/lib/components/toolbar/table-export-control.d.ts +4 -4
  15. package/src/lib/components/toolbar/table-export-control.js +18 -6
  16. package/src/lib/contexts/data-table-context.d.ts +8 -8
  17. package/src/lib/contexts/data-table-context.js +5 -5
  18. package/src/lib/examples/index.d.ts +1 -0
  19. package/src/lib/examples/index.js +3 -1
  20. package/src/lib/examples/server-side-fetching-example.d.ts +1 -0
  21. package/src/lib/examples/server-side-fetching-example.js +250 -0
  22. package/src/lib/examples/server-side-test.d.ts +1 -0
  23. package/src/lib/examples/server-side-test.js +9 -0
  24. package/src/lib/features/{custom-column-filter.feature.d.ts → column-filter.feature.d.ts} +14 -14
  25. package/src/lib/features/{custom-column-filter.feature.js → column-filter.feature.js} +51 -26
  26. package/src/lib/features/index.d.ts +2 -2
  27. package/src/lib/features/index.js +6 -6
  28. package/src/lib/features/{custom-selection.feature.d.ts → selection.feature.d.ts} +8 -8
  29. package/src/lib/features/{custom-selection.feature.js → selection.feature.js} +22 -10
  30. package/src/lib/hooks/use-data-table-api.d.ts +6 -6
  31. package/src/lib/hooks/use-data-table-api.js +20 -20
  32. package/src/lib/types/data-table-api.d.ts +4 -4
  33. package/src/lib/types/table.types.d.ts +4 -4
  34. package/src/lib/utils/column-helpers.d.ts +1 -2
  35. package/src/lib/utils/column-helpers.js +3 -2
  36. package/src/lib/utils/export-utils.d.ts +4 -4
  37. package/src/lib/utils/export-utils.js +47 -24
  38. package/src/lib/components/toolbar/column-custom-filter-control.d.ts +0 -1
@@ -1,5 +1,5 @@
1
1
  import { Table, TableFeature, RowData, Updater, RowModel } from '@tanstack/react-table';
2
- import type { CustomColumnFilterState } from '../types/table.types';
2
+ import type { ColumnFilterState } from '../types/table.types';
3
3
  export interface ColumnFilterRule {
4
4
  id: string;
5
5
  columnId: string;
@@ -7,24 +7,24 @@ export interface ColumnFilterRule {
7
7
  value: any;
8
8
  columnType?: string;
9
9
  }
10
- export interface CustomColumnFilterOptions {
11
- enableCustomColumnFilter?: boolean;
12
- onCustomColumnFilterChange?: (updater: Updater<CustomColumnFilterState>) => void;
13
- onCustomColumnFilterApply?: (state: CustomColumnFilterState) => void;
10
+ export interface ColumnFilterOptions {
11
+ enableAdvanceColumnFilter?: boolean;
12
+ onColumnFilterChange?: (updater: Updater<ColumnFilterState>) => void;
13
+ onColumnFilterApply?: (state: ColumnFilterState) => void;
14
14
  }
15
- export interface CustomColumnFilterTableState {
16
- customColumnFilter: CustomColumnFilterState;
15
+ export interface ColumnFilterTableState {
16
+ columnFilter: ColumnFilterState;
17
17
  }
18
18
  declare module '@tanstack/table-core' {
19
- interface TableState extends CustomColumnFilterTableState {
19
+ interface TableState extends ColumnFilterTableState {
20
20
  }
21
- interface TableOptionsResolved<TData extends RowData> extends CustomColumnFilterOptions {
21
+ interface TableOptionsResolved<TData extends RowData> extends ColumnFilterOptions {
22
22
  }
23
- interface Table<TData extends RowData> extends CustomColumnFilterInstance<TData> {
23
+ interface Table<TData extends RowData> extends ColumnFilterInstance<TData> {
24
24
  }
25
25
  }
26
- export interface CustomColumnFilterInstance<TData extends RowData> {
27
- setCustomColumnFilter: (updater: Updater<CustomColumnFilterState>) => void;
26
+ export interface ColumnFilterInstance<TData extends RowData> {
27
+ setColumnFilterState: (updater: Updater<ColumnFilterState>) => void;
28
28
  addPendingColumnFilter: (columnId: string, operator: string, value: any) => void;
29
29
  updatePendingColumnFilter: (filterId: string, updates: Partial<ColumnFilterRule>) => void;
30
30
  removePendingColumnFilter: (filterId: string) => void;
@@ -38,8 +38,8 @@ export interface CustomColumnFilterInstance<TData extends RowData> {
38
38
  setFilterLogic: (logic: 'AND' | 'OR') => void;
39
39
  getActiveColumnFilters: () => ColumnFilterRule[];
40
40
  getPendingColumnFilters: () => ColumnFilterRule[];
41
- getCustomColumnFilterState: () => CustomColumnFilterState;
41
+ getColumnFilterState: () => ColumnFilterState;
42
42
  }
43
- export declare const CustomColumnFilterFeature: TableFeature<any>;
43
+ export declare const ColumnFilterFeature: TableFeature<any>;
44
44
  export declare function matchesCustomColumnFilters<TData extends RowData>(row: any, filters: ColumnFilterRule[], logic?: 'AND' | 'OR'): boolean;
45
45
  export declare const getCombinedFilteredRowModel: <TData>() => (table: Table<TData>) => () => RowModel<TData>;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCombinedFilteredRowModel = exports.CustomColumnFilterFeature = void 0;
3
+ exports.getCombinedFilteredRowModel = exports.ColumnFilterFeature = void 0;
4
4
  exports.matchesCustomColumnFilters = matchesCustomColumnFilters;
5
5
  const tslib_1 = require("tslib");
6
6
  const react_table_1 = require("@tanstack/react-table");
7
7
  const moment_1 = tslib_1.__importDefault(require("moment"));
8
- exports.CustomColumnFilterFeature = {
8
+ exports.ColumnFilterFeature = {
9
9
  getInitialState: (state) => {
10
- return Object.assign({ customColumnFilter: {
10
+ return Object.assign({ columnFilter: {
11
11
  filters: [],
12
12
  logic: 'AND',
13
13
  pendingFilters: [],
@@ -16,23 +16,28 @@ exports.CustomColumnFilterFeature = {
16
16
  },
17
17
  getDefaultOptions: (table) => {
18
18
  return {
19
- enableCustomColumnFilter: true,
20
- onCustomColumnFilterChange: (0, react_table_1.makeStateUpdater)('customColumnFilter', table),
21
- onCustomColumnFilterApply: (state) => {
19
+ enableAdvanceColumnFilter: true,
20
+ onColumnFilterChange: (0, react_table_1.makeStateUpdater)('columnFilter', table),
21
+ onColumnFilterApply: (state) => {
22
22
  },
23
23
  };
24
24
  },
25
25
  createTable: (table) => {
26
- table.setCustomColumnFilter = (updater) => {
26
+ table.setColumnFilterState = (updater) => {
27
27
  var _a, _b;
28
+ if (!table.options.enableAdvanceColumnFilter)
29
+ return;
28
30
  const safeUpdater = (old) => {
29
31
  const newState = (0, react_table_1.functionalUpdate)(updater, old);
30
32
  return newState;
31
33
  };
32
- return (_b = (_a = table.options).onCustomColumnFilterChange) === null || _b === void 0 ? void 0 : _b.call(_a, safeUpdater);
34
+ return (_b = (_a = table.options).onColumnFilterChange) === null || _b === void 0 ? void 0 : _b.call(_a, safeUpdater);
33
35
  };
34
36
  table.addPendingColumnFilter = (columnId, operator, value) => {
35
- table.setCustomColumnFilter((old) => {
37
+ if (!table.options.enableAdvanceColumnFilter)
38
+ return;
39
+ console.log('addPendingColumnFilter', columnId, operator, value);
40
+ table.setColumnFilterState((old) => {
36
41
  const newFilter = {
37
42
  id: `filter_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`,
38
43
  columnId,
@@ -43,32 +48,44 @@ exports.CustomColumnFilterFeature = {
43
48
  });
44
49
  };
45
50
  table.updatePendingColumnFilter = (filterId, updates) => {
46
- table.setCustomColumnFilter((old) => {
51
+ if (!table.options.enableAdvanceColumnFilter)
52
+ return;
53
+ table.setColumnFilterState((old) => {
47
54
  const updatedFilters = old.pendingFilters.map((filter) => filter.id === filterId ? Object.assign(Object.assign({}, filter), updates) : filter);
48
55
  return Object.assign(Object.assign({}, old), { pendingFilters: updatedFilters });
49
56
  });
50
57
  };
51
58
  table.removePendingColumnFilter = (filterId) => {
52
- table.setCustomColumnFilter((old) => (Object.assign(Object.assign({}, old), { pendingFilters: old.pendingFilters.filter((filter) => filter.id !== filterId) })));
59
+ if (!table.options.enableAdvanceColumnFilter)
60
+ return;
61
+ table.setColumnFilterState((old) => (Object.assign(Object.assign({}, old), { pendingFilters: old.pendingFilters.filter((filter) => filter.id !== filterId) })));
53
62
  };
54
63
  table.clearAllPendingColumnFilters = () => {
55
- table.setCustomColumnFilter((old) => (Object.assign(Object.assign({}, old), { pendingFilters: [] })));
64
+ if (!table.options.enableAdvanceColumnFilter)
65
+ return;
66
+ table.setColumnFilterState((old) => (Object.assign(Object.assign({}, old), { pendingFilters: [] })));
56
67
  };
57
68
  table.setPendingFilterLogic = (logic) => {
58
- table.setCustomColumnFilter((old) => (Object.assign(Object.assign({}, old), { pendingLogic: logic })));
69
+ if (!table.options.enableAdvanceColumnFilter)
70
+ return;
71
+ table.setColumnFilterState((old) => (Object.assign(Object.assign({}, old), { pendingLogic: logic })));
59
72
  };
60
73
  table.applyPendingColumnFilters = () => {
61
- table.setCustomColumnFilter((old) => {
74
+ if (!table.options.enableAdvanceColumnFilter)
75
+ return;
76
+ table.setColumnFilterState((old) => {
62
77
  const newState = Object.assign(Object.assign({}, old), { filters: [...old.pendingFilters], logic: old.pendingLogic });
63
78
  setTimeout(() => {
64
79
  var _a, _b;
65
- (_b = (_a = table.options).onCustomColumnFilterApply) === null || _b === void 0 ? void 0 : _b.call(_a, newState);
80
+ (_b = (_a = table.options).onColumnFilterApply) === null || _b === void 0 ? void 0 : _b.call(_a, newState);
66
81
  }, 0);
67
82
  return newState;
68
83
  });
69
84
  };
70
85
  table.addColumnFilter = (columnId, operator, value) => {
71
- table.setCustomColumnFilter((old) => {
86
+ if (!table.options.enableAdvanceColumnFilter)
87
+ return;
88
+ table.setColumnFilterState((old) => {
72
89
  const newFilter = {
73
90
  id: `filter_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`,
74
91
  columnId,
@@ -79,30 +96,38 @@ exports.CustomColumnFilterFeature = {
79
96
  });
80
97
  };
81
98
  table.updateColumnFilter = (filterId, updates) => {
82
- table.setCustomColumnFilter((old) => {
99
+ if (!table.options.enableAdvanceColumnFilter)
100
+ return;
101
+ table.setColumnFilterState((old) => {
83
102
  const updatedFilters = old.filters.map((filter) => filter.id === filterId ? Object.assign(Object.assign({}, filter), updates) : filter);
84
103
  return Object.assign(Object.assign({}, old), { filters: updatedFilters });
85
104
  });
86
105
  };
87
106
  table.removeColumnFilter = (filterId) => {
88
- table.setCustomColumnFilter((old) => (Object.assign(Object.assign({}, old), { filters: old.filters.filter((filter) => filter.id !== filterId) })));
107
+ if (!table.options.enableAdvanceColumnFilter)
108
+ return;
109
+ table.setColumnFilterState((old) => (Object.assign(Object.assign({}, old), { filters: old.filters.filter((filter) => filter.id !== filterId) })));
89
110
  };
90
111
  table.clearAllColumnFilters = () => {
91
- table.setCustomColumnFilter((old) => (Object.assign(Object.assign({}, old), { filters: [] })));
112
+ if (!table.options.enableAdvanceColumnFilter)
113
+ return;
114
+ table.setColumnFilterState((old) => (Object.assign(Object.assign({}, old), { filters: [] })));
92
115
  };
93
116
  table.setFilterLogic = (logic) => {
94
- table.setCustomColumnFilter((old) => (Object.assign(Object.assign({}, old), { logic })));
117
+ if (!table.options.enableAdvanceColumnFilter)
118
+ return;
119
+ table.setColumnFilterState((old) => (Object.assign(Object.assign({}, old), { logic })));
95
120
  };
96
121
  table.getActiveColumnFilters = () => {
97
- const state = table.getState().customColumnFilter;
122
+ const state = table.getState().columnFilter;
98
123
  return state.filters.filter((f) => f.columnId && f.operator);
99
124
  };
100
125
  table.getPendingColumnFilters = () => {
101
- const state = table.getState().customColumnFilter;
126
+ const state = table.getState().columnFilter;
102
127
  return state.pendingFilters.filter((f) => f.columnId && f.operator);
103
128
  };
104
- table.getCustomColumnFilterState = () => {
105
- return table.getState().customColumnFilter;
129
+ table.getColumnFilterState = () => {
130
+ return table.getState().columnFilter;
106
131
  };
107
132
  },
108
133
  };
@@ -137,11 +162,11 @@ const getCombinedFilteredRowModel = () => {
137
162
  return (table) => () => {
138
163
  var _a;
139
164
  const baseFilteredModel = (0, react_table_1.getFilteredRowModel)()(table)();
140
- const { filters, logic } = (_a = table.getState().customColumnFilter) !== null && _a !== void 0 ? _a : {
165
+ const { filters, logic } = (_a = table.getState().columnFilter) !== null && _a !== void 0 ? _a : {
141
166
  filters: [],
142
167
  logic: 'AND',
143
168
  };
144
- if (!filters.length)
169
+ if (!filters.length || !table.options.enableAdvanceColumnFilter)
145
170
  return baseFilteredModel;
146
171
  const filteredRows = baseFilteredModel.rows.filter(row => matchesCustomColumnFilters(row, filters, logic));
147
172
  const flatRows = [];
@@ -1,2 +1,2 @@
1
- export { CustomColumnFilterFeature, matchesCustomColumnFilters, type ColumnFilterRule, type CustomColumnFilterOptions, type CustomColumnFilterTableState, type CustomColumnFilterInstance, } from './custom-column-filter.feature';
2
- export { CustomSelectionFeature, type SelectionState, type SelectMode, type CustomSelectionOptions, type CustomSelectionTableState, type CustomSelectionInstance, } from './custom-selection.feature';
1
+ export { ColumnFilterFeature, matchesCustomColumnFilters, type ColumnFilterRule, type ColumnFilterOptions, type ColumnFilterTableState, type ColumnFilterInstance, } from './column-filter.feature';
2
+ export { SelectionFeature, type SelectionState, type SelectMode, type SelectionOptions, type SelectionTableState, type SelectionInstance, } from './selection.feature';
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CustomSelectionFeature = exports.matchesCustomColumnFilters = exports.CustomColumnFilterFeature = void 0;
4
- var custom_column_filter_feature_1 = require("./custom-column-filter.feature");
5
- Object.defineProperty(exports, "CustomColumnFilterFeature", { enumerable: true, get: function () { return custom_column_filter_feature_1.CustomColumnFilterFeature; } });
6
- Object.defineProperty(exports, "matchesCustomColumnFilters", { enumerable: true, get: function () { return custom_column_filter_feature_1.matchesCustomColumnFilters; } });
7
- var custom_selection_feature_1 = require("./custom-selection.feature");
8
- Object.defineProperty(exports, "CustomSelectionFeature", { enumerable: true, get: function () { return custom_selection_feature_1.CustomSelectionFeature; } });
3
+ exports.SelectionFeature = exports.matchesCustomColumnFilters = exports.ColumnFilterFeature = void 0;
4
+ var column_filter_feature_1 = require("./column-filter.feature");
5
+ Object.defineProperty(exports, "ColumnFilterFeature", { enumerable: true, get: function () { return column_filter_feature_1.ColumnFilterFeature; } });
6
+ Object.defineProperty(exports, "matchesCustomColumnFilters", { enumerable: true, get: function () { return column_filter_feature_1.matchesCustomColumnFilters; } });
7
+ var selection_feature_1 = require("./selection.feature");
8
+ Object.defineProperty(exports, "SelectionFeature", { enumerable: true, get: function () { return selection_feature_1.SelectionFeature; } });
@@ -9,24 +9,24 @@ export type IsRowSelectableFunction<T = any> = (params: {
9
9
  id: string;
10
10
  }) => boolean;
11
11
  export type SelectMode = 'page' | 'all';
12
- export interface CustomSelectionOptions {
13
- enableCustomSelection?: boolean;
12
+ export interface SelectionOptions {
13
+ enableAdvanceSelection?: boolean;
14
14
  selectMode?: SelectMode;
15
15
  isRowSelectable?: IsRowSelectableFunction;
16
16
  onSelectionStateChange?: (updater: Updater<SelectionState>) => void;
17
17
  }
18
- export interface CustomSelectionTableState {
18
+ export interface SelectionTableState {
19
19
  selectionState: SelectionState;
20
20
  }
21
21
  declare module '@tanstack/table-core' {
22
- interface TableState extends CustomSelectionTableState {
22
+ interface TableState extends SelectionTableState {
23
23
  }
24
- interface TableOptionsResolved<TData extends RowData> extends CustomSelectionOptions {
24
+ interface TableOptionsResolved<TData extends RowData> extends SelectionOptions {
25
25
  }
26
- interface Table<TData extends RowData> extends CustomSelectionInstance<TData> {
26
+ interface Table<TData extends RowData> extends SelectionInstance<TData> {
27
27
  }
28
28
  }
29
- export interface CustomSelectionInstance<TData extends RowData> {
29
+ export interface SelectionInstance<TData extends RowData> {
30
30
  setSelectionState: (updater: Updater<SelectionState>) => void;
31
31
  toggleAllRowsSelected: () => void;
32
32
  toggleRowSelected: (rowId: string) => void;
@@ -43,4 +43,4 @@ export interface CustomSelectionInstance<TData extends RowData> {
43
43
  getSelectedRowIds: () => string[];
44
44
  canSelectRow: (rowId: string) => boolean;
45
45
  }
46
- export declare const CustomSelectionFeature: TableFeature<any>;
46
+ export declare const SelectionFeature: TableFeature<any>;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CustomSelectionFeature = void 0;
3
+ exports.SelectionFeature = void 0;
4
4
  const react_table_1 = require("@tanstack/react-table");
5
- exports.CustomSelectionFeature = {
5
+ exports.SelectionFeature = {
6
6
  getInitialState: (state) => {
7
7
  return Object.assign({ selectionState: {
8
8
  ids: [],
@@ -12,7 +12,7 @@ exports.CustomSelectionFeature = {
12
12
  },
13
13
  getDefaultOptions: (table) => {
14
14
  return {
15
- enableCustomSelection: true,
15
+ enableAdvanceSelection: true,
16
16
  selectMode: 'page',
17
17
  onSelectionStateChange: (0, react_table_1.makeStateUpdater)('selectionState', table),
18
18
  };
@@ -20,6 +20,8 @@ exports.CustomSelectionFeature = {
20
20
  createTable: (table) => {
21
21
  table.setSelectionState = (updater) => {
22
22
  var _a, _b;
23
+ if (!table.options.enableAdvanceSelection)
24
+ return;
23
25
  const safeUpdater = (old) => {
24
26
  const newState = (0, react_table_1.functionalUpdate)(updater, old);
25
27
  return newState;
@@ -27,6 +29,8 @@ exports.CustomSelectionFeature = {
27
29
  return (_b = (_a = table.options).onSelectionStateChange) === null || _b === void 0 ? void 0 : _b.call(_a, safeUpdater);
28
30
  };
29
31
  table.selectRow = (rowId) => {
32
+ if (!table.options.enableAdvanceSelection)
33
+ return;
30
34
  if (!table.canSelectRow(rowId))
31
35
  return;
32
36
  table.setSelectionState((old) => {
@@ -40,6 +44,8 @@ exports.CustomSelectionFeature = {
40
44
  });
41
45
  };
42
46
  table.deselectRow = (rowId) => {
47
+ if (!table.options.enableAdvanceSelection)
48
+ return;
43
49
  table.setSelectionState((old) => {
44
50
  if (old.type === 'exclude') {
45
51
  const newIds = old.ids.includes(rowId) ? old.ids : [...old.ids, rowId];
@@ -51,6 +57,8 @@ exports.CustomSelectionFeature = {
51
57
  });
52
58
  };
53
59
  table.toggleRowSelected = (rowId) => {
60
+ if (!table.options.enableAdvanceSelection)
61
+ return;
54
62
  if (table.getIsRowSelected(rowId)) {
55
63
  table.deselectRow(rowId);
56
64
  }
@@ -59,6 +67,8 @@ exports.CustomSelectionFeature = {
59
67
  }
60
68
  };
61
69
  table.selectAll = () => {
70
+ if (!table.options.enableAdvanceSelection)
71
+ return;
62
72
  const selectMode = table.options.selectMode || 'page';
63
73
  if (selectMode === 'all') {
64
74
  table.setSelectionState((old) => (Object.assign(Object.assign({}, old), { ids: [], type: 'exclude' })));
@@ -72,9 +82,13 @@ exports.CustomSelectionFeature = {
72
82
  }
73
83
  };
74
84
  table.deselectAll = () => {
85
+ if (!table.options.enableAdvanceSelection)
86
+ return;
75
87
  table.setSelectionState((old) => (Object.assign(Object.assign({}, old), { ids: [], type: 'include' })));
76
88
  };
77
89
  table.toggleAllRowsSelected = () => {
90
+ if (!table.options.enableAdvanceSelection)
91
+ return;
78
92
  if (table.getIsAllRowsSelected()) {
79
93
  table.deselectAll();
80
94
  }
@@ -116,7 +130,7 @@ exports.CustomSelectionFeature = {
116
130
  const selectMode = table.options.selectMode || 'page';
117
131
  if (selectMode === 'all' && state.type === 'exclude') {
118
132
  const totalCount = table.getRowCount();
119
- return state.ids.length < totalCount;
133
+ return state.ids.length < totalCount && totalCount > 0;
120
134
  }
121
135
  else {
122
136
  return state.ids.length > 0;
@@ -134,7 +148,7 @@ exports.CustomSelectionFeature = {
134
148
  const selectMode = table.options.selectMode || 'page';
135
149
  if (selectMode === 'all' && state.type === 'exclude') {
136
150
  const totalCount = table.getRowCount();
137
- return totalCount - state.ids.length;
151
+ return Math.max(0, totalCount - state.ids.length);
138
152
  }
139
153
  else {
140
154
  return state.ids.length;
@@ -143,12 +157,10 @@ exports.CustomSelectionFeature = {
143
157
  table.getSelectedRowIds = () => {
144
158
  const state = table.getSelectionState();
145
159
  if (state.type === 'exclude') {
146
- console.warn('getSelectedRowIds() in exclude mode returns exclude list. Use getSelectionState() instead.');
147
- return state.ids;
148
- }
149
- else {
150
- return state.ids;
160
+ console.warn('[SelectionFeature] getSelectedRowIds() is not accurate in exclude mode. Use getSelectionState() to interpret selection properly.');
161
+ return [];
151
162
  }
163
+ return state.ids;
152
164
  };
153
165
  table.getSelectedRows = () => {
154
166
  const state = table.getSelectionState();
@@ -1,6 +1,6 @@
1
1
  import { ColumnOrderState, ColumnPinningState, SortingState, Table } from '@tanstack/react-table';
2
2
  import { Ref } from 'react';
3
- import { CustomColumnFilterState, TableFilters, TableState } from '../types';
3
+ import { ColumnFilterState, TableFilters, TableState } from '../types';
4
4
  import { DataTableApi } from '../types/data-table-api';
5
5
  import { SelectionState } from '../features';
6
6
  interface UseDataTableApiProps<T> {
@@ -8,7 +8,7 @@ interface UseDataTableApiProps<T> {
8
8
  data: T[];
9
9
  idKey: keyof T;
10
10
  globalFilter: string;
11
- customColumnsFilter: CustomColumnFilterState;
11
+ columnFilter: ColumnFilterState;
12
12
  sorting: SortingState;
13
13
  pagination: {
14
14
  pageIndex: number;
@@ -24,15 +24,15 @@ interface UseDataTableApiProps<T> {
24
24
  pageSize: number;
25
25
  selectMode?: 'page' | 'all';
26
26
  onSelectionChange?: (state: SelectionState) => void;
27
- handleColumnFilterStateChange: (filterState: CustomColumnFilterState) => void;
27
+ handleColumnFilterStateChange: (filterState: ColumnFilterState) => void;
28
28
  onDataStateChange?: (state: Partial<TableState>) => void;
29
29
  onFetchData?: (filters: Partial<TableFilters>) => void;
30
30
  onDataChange?: (newData: T[]) => void;
31
31
  exportFilename?: string;
32
32
  onExportProgress?: (progress: {
33
- processedRows: number;
34
- totalRows: number;
35
- percentage: number;
33
+ processedRows?: number;
34
+ totalRows?: number;
35
+ percentage?: number;
36
36
  }) => void;
37
37
  onExportComplete?: (result: {
38
38
  success: boolean;
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const react_1 = require("react");
6
6
  const export_utils_1 = require("../utils/export-utils");
7
7
  function useDataTableApi(props, ref) {
8
- const { table, data, idKey, globalFilter, customColumnsFilter, sorting, pagination, columnOrder, columnPinning, enhancedColumns, enablePagination, enableColumnPinning, initialPageIndex, initialPageSize, pageSize, selectMode = 'page', onSelectionChange, handleColumnFilterStateChange, onDataStateChange, onFetchData, onDataChange, exportFilename = 'export', onExportProgress, onExportComplete, onExportError, onServerExport, exportController, setExportController, isExporting, dataMode = 'client', } = props;
8
+ const { table, data, idKey, globalFilter, columnFilter, sorting, pagination, columnOrder, columnPinning, enhancedColumns, enablePagination, enableColumnPinning, initialPageIndex, initialPageSize, pageSize, selectMode = 'page', onSelectionChange, handleColumnFilterStateChange, onDataStateChange, onFetchData, onDataChange, exportFilename = 'export', onExportProgress, onExportComplete, onExportError, onServerExport, exportController, setExportController, isExporting, dataMode = 'client', } = props;
9
9
  (0, react_1.useImperativeHandle)(ref, () => ({
10
10
  table: {
11
11
  getTable: () => table,
@@ -113,7 +113,7 @@ function useDataTableApi(props, ref) {
113
113
  clearGlobalFilter: () => {
114
114
  table.setGlobalFilter('');
115
115
  },
116
- setCustomColumnFilters: (filters) => {
116
+ setColumnFilters: (filters) => {
117
117
  handleColumnFilterStateChange(filters);
118
118
  },
119
119
  addColumnFilter: (columnId, operator, value) => {
@@ -123,23 +123,23 @@ function useDataTableApi(props, ref) {
123
123
  operator,
124
124
  value,
125
125
  };
126
- const currentFilters = customColumnsFilter.filters || [];
126
+ const currentFilters = columnFilter.filters || [];
127
127
  const newFilters = [...currentFilters, newFilter];
128
128
  handleColumnFilterStateChange({
129
129
  filters: newFilters,
130
- logic: customColumnsFilter.logic,
131
- pendingFilters: customColumnsFilter.pendingFilters || [],
132
- pendingLogic: customColumnsFilter.pendingLogic || 'AND',
130
+ logic: columnFilter.logic,
131
+ pendingFilters: columnFilter.pendingFilters || [],
132
+ pendingLogic: columnFilter.pendingLogic || 'AND',
133
133
  });
134
134
  },
135
135
  removeColumnFilter: (filterId) => {
136
- const currentFilters = customColumnsFilter.filters || [];
136
+ const currentFilters = columnFilter.filters || [];
137
137
  const newFilters = currentFilters.filter((f) => f.id !== filterId);
138
138
  handleColumnFilterStateChange({
139
139
  filters: newFilters,
140
- logic: customColumnsFilter.logic,
141
- pendingFilters: customColumnsFilter.pendingFilters || [],
142
- pendingLogic: customColumnsFilter.pendingLogic || 'AND',
140
+ logic: columnFilter.logic,
141
+ pendingFilters: columnFilter.pendingFilters || [],
142
+ pendingLogic: columnFilter.pendingLogic || 'AND',
143
143
  });
144
144
  },
145
145
  clearAllFilters: () => {
@@ -222,7 +222,7 @@ function useDataTableApi(props, ref) {
222
222
  refresh: () => {
223
223
  const currentFilters = {
224
224
  globalFilter,
225
- customColumnsFilter: customColumnsFilter,
225
+ columnFilter: columnFilter,
226
226
  sorting,
227
227
  pagination,
228
228
  };
@@ -238,7 +238,7 @@ function useDataTableApi(props, ref) {
238
238
  reload: () => {
239
239
  const currentFilters = {
240
240
  globalFilter,
241
- customColumnsFilter: customColumnsFilter,
241
+ columnFilter: columnFilter,
242
242
  sorting,
243
243
  pagination,
244
244
  };
@@ -392,7 +392,7 @@ function useDataTableApi(props, ref) {
392
392
  sorting: table.getState().sorting,
393
393
  pagination: table.getState().pagination,
394
394
  globalFilter: table.getState().globalFilter,
395
- customColumnsFilter: customColumnsFilter,
395
+ columnFilter: columnFilter,
396
396
  };
397
397
  },
398
398
  restoreLayout: (layout) => {
@@ -417,8 +417,8 @@ function useDataTableApi(props, ref) {
417
417
  if (layout.globalFilter !== undefined) {
418
418
  table.setGlobalFilter(layout.globalFilter);
419
419
  }
420
- if (layout.customColumnsFilter) {
421
- handleColumnFilterStateChange(layout.customColumnsFilter);
420
+ if (layout.columnFilter) {
421
+ handleColumnFilterStateChange(layout.columnFilter);
422
422
  }
423
423
  },
424
424
  },
@@ -427,7 +427,7 @@ function useDataTableApi(props, ref) {
427
427
  return table.getState();
428
428
  },
429
429
  getCurrentFilters: () => {
430
- return customColumnsFilter;
430
+ return columnFilter;
431
431
  },
432
432
  getCurrentSorting: () => {
433
433
  return table.getState().sorting;
@@ -450,7 +450,7 @@ function useDataTableApi(props, ref) {
450
450
  if (dataMode === 'server' && onServerExport) {
451
451
  const currentFilters = {
452
452
  globalFilter,
453
- customColumnsFilter,
453
+ columnFilter,
454
454
  sorting,
455
455
  pagination,
456
456
  columnOrder,
@@ -496,7 +496,7 @@ function useDataTableApi(props, ref) {
496
496
  if (dataMode === 'server' && onServerExport) {
497
497
  const currentFilters = {
498
498
  globalFilter,
499
- customColumnsFilter,
499
+ columnFilter,
500
500
  sorting,
501
501
  pagination,
502
502
  columnOrder,
@@ -548,7 +548,7 @@ function useDataTableApi(props, ref) {
548
548
  setExportController === null || setExportController === void 0 ? void 0 : setExportController(controller);
549
549
  const currentFilters = {
550
550
  globalFilter,
551
- customColumnsFilter,
551
+ columnFilter,
552
552
  sorting,
553
553
  pagination,
554
554
  columnOrder,
@@ -585,7 +585,7 @@ function useDataTableApi(props, ref) {
585
585
  table,
586
586
  enhancedColumns,
587
587
  handleColumnFilterStateChange,
588
- customColumnsFilter,
588
+ columnFilter,
589
589
  data,
590
590
  idKey,
591
591
  onDataStateChange,
@@ -1,6 +1,6 @@
1
1
  import { ColumnPinningState, SortingState, ColumnOrderState, TableState, Row } from '@tanstack/react-table';
2
- import { CustomColumnFilterState } from './table.types';
3
- import { SelectionState } from '../features/custom-selection.feature';
2
+ import { ColumnFilterState } from './table.types';
3
+ import { SelectionState } from '../features';
4
4
  export interface DataTableApi<T = any> {
5
5
  columnVisibility: {
6
6
  showColumn: (columnId: string) => void;
@@ -31,7 +31,7 @@ export interface DataTableApi<T = any> {
31
31
  filtering: {
32
32
  setGlobalFilter: (filter: string) => void;
33
33
  clearGlobalFilter: () => void;
34
- setCustomColumnFilters: (filters: CustomColumnFilterState) => void;
34
+ setColumnFilters: (filters: ColumnFilterState) => void;
35
35
  addColumnFilter: (columnId: string, operator: string, value: any) => void;
36
36
  removeColumnFilter: (filterId: string) => void;
37
37
  clearAllFilters: () => void;
@@ -97,7 +97,7 @@ export interface DataTableApi<T = any> {
97
97
  };
98
98
  state: {
99
99
  getTableState: () => any;
100
- getCurrentFilters: () => CustomColumnFilterState;
100
+ getCurrentFilters: () => ColumnFilterState;
101
101
  getCurrentSorting: () => SortingState;
102
102
  getCurrentPagination: () => {
103
103
  pageIndex: number;
@@ -2,7 +2,7 @@ import { SortingState } from '@tanstack/react-table';
2
2
  import { ColumnFilterRule, SelectionState } from '../features';
3
3
  export type TableSize = 'small' | 'medium';
4
4
  export interface TableState {
5
- customColumnsFilter: CustomColumnFilterState;
5
+ columnFilter: ColumnFilterState;
6
6
  selectionState?: SelectionState;
7
7
  globalFilter?: string;
8
8
  sorting?: SortingState;
@@ -20,7 +20,7 @@ export interface TableState {
20
20
  }
21
21
  export interface TableFilters {
22
22
  globalFilter: string;
23
- customColumnsFilter: CustomColumnFilterState;
23
+ columnFilter: ColumnFilterState;
24
24
  sorting: SortingState;
25
25
  pagination: {
26
26
  pageIndex: number;
@@ -37,9 +37,9 @@ export interface TableFiltersForFetch {
37
37
  page?: number;
38
38
  pageSize?: number;
39
39
  sorting?: SortingState;
40
- customColumnsFilter?: CustomColumnFilterState;
40
+ columnFilter?: ColumnFilterState;
41
41
  }
42
- export interface CustomColumnFilterState {
42
+ export interface ColumnFilterState {
43
43
  filters: ColumnFilterRule[];
44
44
  logic: 'AND' | 'OR';
45
45
  pendingFilters: ColumnFilterRule[];
@@ -1,7 +1,6 @@
1
- import { DataTableColumn } from '../types';
2
1
  import { Column } from "@tanstack/react-table";
3
2
  export type ColumnType = 'text' | 'number' | 'date' | 'boolean' | 'select' | 'actions';
4
3
  export declare function getColumnType(column: Column<any, unknown>): ColumnType;
5
4
  export declare function getCustomFilterComponent(column: Column<any, unknown>): any;
6
5
  export declare function getColumnOptions(column: Column<any, unknown>): any[];
7
- export declare function isColumnFilterable(column: DataTableColumn<any, unknown>): boolean;
6
+ export declare function isColumnFilterable(column: Column<any, unknown>): boolean;
@@ -36,8 +36,9 @@ function getColumnOptions(column) {
36
36
  return [];
37
37
  }
38
38
  function isColumnFilterable(column) {
39
- if ((column === null || column === void 0 ? void 0 : column.filterable) !== undefined) {
40
- return column === null || column === void 0 ? void 0 : column.filterable;
39
+ var _a, _b;
40
+ if (((_a = column === null || column === void 0 ? void 0 : column.columnDef) === null || _a === void 0 ? void 0 : _a.filterable) !== undefined) {
41
+ return (_b = column === null || column === void 0 ? void 0 : column.columnDef) === null || _b === void 0 ? void 0 : _b.filterable;
41
42
  }
42
43
  return true;
43
44
  }