@ackplus/react-tanstack-data-table 1.0.19-beta-0.7 → 1.0.19-beta-0.8
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/README.md +599 -0
- package/package.json +1 -1
- package/src/index.d.ts +19 -0
- package/src/index.js +31 -0
- package/src/lib/components/droupdown/menu-dropdown.d.ts +17 -0
- package/src/lib/components/droupdown/menu-dropdown.js +52 -0
- package/src/lib/components/filters/filter-value-input.d.ts +9 -0
- package/src/lib/components/filters/filter-value-input.js +58 -0
- package/src/lib/components/filters/index.d.ts +23 -0
- package/src/lib/components/filters/index.js +129 -0
- package/src/lib/components/headers/draggable-header.d.ts +12 -0
- package/src/lib/components/headers/draggable-header.js +212 -0
- package/src/lib/components/headers/index.d.ts +2 -0
- package/src/lib/components/headers/index.js +5 -0
- package/src/lib/components/headers/table-header.d.ts +10 -0
- package/src/lib/components/headers/table-header.js +48 -0
- package/src/lib/components/index.d.ts +7 -0
- package/src/lib/components/index.js +10 -0
- package/src/lib/components/pagination/data-table-pagination.d.ts +11 -0
- package/src/lib/components/pagination/data-table-pagination.js +25 -0
- package/src/lib/components/pagination/index.d.ts +1 -0
- package/src/lib/components/pagination/index.js +4 -0
- package/src/lib/components/rows/data-table-row.d.ts +13 -0
- package/src/lib/components/rows/data-table-row.js +31 -0
- package/src/lib/components/rows/empty-data-row.d.ts +6 -0
- package/src/lib/components/rows/empty-data-row.js +11 -0
- package/src/lib/components/rows/index.d.ts +3 -0
- package/src/lib/components/rows/index.js +6 -0
- package/src/lib/components/rows/loading-rows.d.ts +5 -0
- package/src/lib/components/rows/loading-rows.js +49 -0
- package/src/lib/components/table/data-table.d.ts +3 -0
- package/src/lib/components/table/data-table.js +492 -0
- package/src/lib/components/table/data-table.types.d.ts +114 -0
- package/src/lib/components/table/data-table.types.js +2 -0
- package/src/lib/components/table/index.d.ts +2 -0
- package/src/lib/components/table/index.js +5 -0
- package/src/lib/components/toolbar/bulk-actions-toolbar.d.ts +9 -0
- package/src/lib/components/toolbar/bulk-actions-toolbar.js +25 -0
- package/src/lib/components/toolbar/column-custom-filter-control.d.ts +1 -0
- package/src/lib/components/toolbar/column-custom-filter-control.js +137 -0
- package/src/lib/components/toolbar/column-pinning-control.d.ts +1 -0
- package/src/lib/components/toolbar/column-pinning-control.js +105 -0
- package/src/lib/components/toolbar/column-reset-control.d.ts +1 -0
- package/src/lib/components/toolbar/column-reset-control.js +16 -0
- package/src/lib/components/toolbar/column-visibility-control.d.ts +1 -0
- package/src/lib/components/toolbar/column-visibility-control.js +31 -0
- package/src/lib/components/toolbar/data-table-toolbar.d.ts +14 -0
- package/src/lib/components/toolbar/data-table-toolbar.js +26 -0
- package/src/lib/components/toolbar/index.d.ts +8 -0
- package/src/lib/components/toolbar/index.js +17 -0
- package/src/lib/components/toolbar/table-export-control.d.ts +25 -0
- package/src/lib/components/toolbar/table-export-control.js +93 -0
- package/src/lib/components/toolbar/table-search-control.d.ts +1 -0
- package/src/lib/components/toolbar/table-search-control.js +61 -0
- package/src/lib/components/toolbar/table-size-control.d.ts +1 -0
- package/src/lib/components/toolbar/table-size-control.js +36 -0
- package/src/lib/contexts/data-table-context.d.ts +43 -0
- package/src/lib/contexts/data-table-context.js +54 -0
- package/src/lib/examples/advanced-features-example.d.ts +1 -0
- package/src/lib/examples/advanced-features-example.js +264 -0
- package/src/lib/examples/bulk-actions-test.d.ts +1 -0
- package/src/lib/examples/bulk-actions-test.js +44 -0
- package/src/lib/examples/custom-column-filter-example.d.ts +1 -0
- package/src/lib/examples/custom-column-filter-example.js +60 -0
- package/src/lib/examples/index.d.ts +5 -0
- package/src/lib/examples/index.js +13 -0
- package/src/lib/examples/selection-test-example.d.ts +1 -0
- package/src/lib/examples/selection-test-example.js +101 -0
- package/src/lib/examples/simple-local-example.d.ts +1 -0
- package/src/lib/examples/simple-local-example.js +97 -0
- package/src/lib/features/custom-column-filter.feature.d.ts +45 -0
- package/src/lib/features/custom-column-filter.feature.js +247 -0
- package/src/lib/features/custom-selection.feature.d.ts +46 -0
- package/src/lib/features/custom-selection.feature.js +172 -0
- package/src/lib/features/index.d.ts +2 -0
- package/src/lib/features/index.js +8 -0
- package/src/lib/hooks/index.d.ts +1 -0
- package/src/lib/hooks/index.js +4 -0
- package/src/lib/hooks/use-data-table-api.d.ts +56 -0
- package/src/lib/hooks/use-data-table-api.js +616 -0
- package/src/lib/icons/add-icon.d.ts +2 -0
- package/src/lib/icons/add-icon.js +8 -0
- package/src/lib/icons/csv-icon.d.ts +2 -0
- package/src/lib/icons/csv-icon.js +8 -0
- package/src/lib/icons/delete-icon.d.ts +2 -0
- package/src/lib/icons/delete-icon.js +8 -0
- package/src/lib/icons/excel-icon.d.ts +2 -0
- package/src/lib/icons/excel-icon.js +8 -0
- package/src/lib/icons/index.d.ts +7 -0
- package/src/lib/icons/index.js +17 -0
- package/src/lib/icons/unpin-icon.d.ts +2 -0
- package/src/lib/icons/unpin-icon.js +8 -0
- package/src/lib/icons/view-comfortable-icon.d.ts +2 -0
- package/src/lib/icons/view-comfortable-icon.js +8 -0
- package/src/lib/icons/view-compact-icon.d.ts +2 -0
- package/src/lib/icons/view-compact-icon.js +8 -0
- package/src/lib/types/column.types.d.ts +29 -0
- package/src/lib/types/column.types.js +5 -0
- package/src/lib/types/data-table-api.d.ts +134 -0
- package/src/lib/types/data-table-api.js +2 -0
- package/src/lib/types/export.types.d.ts +99 -0
- package/src/lib/types/export.types.js +2 -0
- package/src/lib/types/index.d.ts +6 -0
- package/src/lib/types/index.js +8 -0
- package/src/lib/types/slots.types.d.ts +272 -0
- package/src/lib/types/slots.types.js +2 -0
- package/src/lib/types/table.types.d.ts +63 -0
- package/src/lib/types/table.types.js +2 -0
- package/src/lib/utils/column-helpers.d.ts +7 -0
- package/src/lib/utils/column-helpers.js +43 -0
- package/src/lib/utils/debounced-fetch.utils.d.ts +11 -0
- package/src/lib/utils/debounced-fetch.utils.js +49 -0
- package/src/lib/utils/export-utils.d.ts +30 -0
- package/src/lib/utils/export-utils.js +152 -0
- package/src/lib/utils/index.d.ts +7 -0
- package/src/lib/utils/index.js +10 -0
- package/src/lib/utils/slot-helpers.d.ts +9 -0
- package/src/lib/utils/slot-helpers.js +21 -0
- package/src/lib/utils/special-columns.utils.d.ts +6 -0
- package/src/lib/utils/special-columns.utils.js +52 -0
- package/src/lib/utils/styling-helpers.d.ts +36 -0
- package/src/lib/utils/styling-helpers.js +61 -0
- package/src/lib/utils/table-helpers.d.ts +9 -0
- package/src/lib/utils/table-helpers.js +57 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomSelectionFeature = void 0;
|
|
4
|
+
const react_table_1 = require("@tanstack/react-table");
|
|
5
|
+
exports.CustomSelectionFeature = {
|
|
6
|
+
getInitialState: (state) => {
|
|
7
|
+
return Object.assign({ selectionState: {
|
|
8
|
+
ids: [],
|
|
9
|
+
type: 'include',
|
|
10
|
+
selectMode: 'page',
|
|
11
|
+
} }, state);
|
|
12
|
+
},
|
|
13
|
+
getDefaultOptions: (table) => {
|
|
14
|
+
return {
|
|
15
|
+
enableCustomSelection: true,
|
|
16
|
+
selectMode: 'page',
|
|
17
|
+
onSelectionStateChange: (0, react_table_1.makeStateUpdater)('selectionState', table),
|
|
18
|
+
};
|
|
19
|
+
},
|
|
20
|
+
createTable: (table) => {
|
|
21
|
+
table.setSelectionState = (updater) => {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
const safeUpdater = (old) => {
|
|
24
|
+
const newState = (0, react_table_1.functionalUpdate)(updater, old);
|
|
25
|
+
return newState;
|
|
26
|
+
};
|
|
27
|
+
return (_b = (_a = table.options).onSelectionStateChange) === null || _b === void 0 ? void 0 : _b.call(_a, safeUpdater);
|
|
28
|
+
};
|
|
29
|
+
table.selectRow = (rowId) => {
|
|
30
|
+
if (!table.canSelectRow(rowId))
|
|
31
|
+
return;
|
|
32
|
+
table.setSelectionState((old) => {
|
|
33
|
+
if (old.type === 'exclude') {
|
|
34
|
+
return Object.assign(Object.assign({}, old), { ids: old.ids.filter(id => id !== rowId) });
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const newIds = old.ids.includes(rowId) ? old.ids : [...old.ids, rowId];
|
|
38
|
+
return Object.assign(Object.assign({}, old), { ids: newIds });
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
table.deselectRow = (rowId) => {
|
|
43
|
+
table.setSelectionState((old) => {
|
|
44
|
+
if (old.type === 'exclude') {
|
|
45
|
+
const newIds = old.ids.includes(rowId) ? old.ids : [...old.ids, rowId];
|
|
46
|
+
return Object.assign(Object.assign({}, old), { ids: newIds });
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return Object.assign(Object.assign({}, old), { ids: old.ids.filter(id => id !== rowId) });
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
table.toggleRowSelected = (rowId) => {
|
|
54
|
+
if (table.getIsRowSelected(rowId)) {
|
|
55
|
+
table.deselectRow(rowId);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
table.selectRow(rowId);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
table.selectAll = () => {
|
|
62
|
+
const selectMode = table.options.selectMode || 'page';
|
|
63
|
+
if (selectMode === 'all') {
|
|
64
|
+
table.setSelectionState((old) => (Object.assign(Object.assign({}, old), { ids: [], type: 'exclude' })));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const currentPageRows = table.getPaginationRowModel().rows;
|
|
68
|
+
const selectableRowIds = currentPageRows
|
|
69
|
+
.filter(row => table.canSelectRow(row.id))
|
|
70
|
+
.map(row => row.id);
|
|
71
|
+
table.setSelectionState((old) => (Object.assign(Object.assign({}, old), { ids: selectableRowIds, type: 'include' })));
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
table.deselectAll = () => {
|
|
75
|
+
table.setSelectionState((old) => (Object.assign(Object.assign({}, old), { ids: [], type: 'include' })));
|
|
76
|
+
};
|
|
77
|
+
table.toggleAllRowsSelected = () => {
|
|
78
|
+
if (table.getIsAllRowsSelected()) {
|
|
79
|
+
table.deselectAll();
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
table.selectAll();
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
table.getIsRowSelected = (rowId) => {
|
|
86
|
+
const state = table.getSelectionState();
|
|
87
|
+
if (state.type === 'exclude') {
|
|
88
|
+
return !state.ids.includes(rowId);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return state.ids.includes(rowId);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
table.getIsAllRowsSelected = () => {
|
|
95
|
+
const state = table.getSelectionState();
|
|
96
|
+
const selectMode = table.options.selectMode || 'page';
|
|
97
|
+
if (selectMode === 'all') {
|
|
98
|
+
if (state.type === 'exclude') {
|
|
99
|
+
return state.ids.length === 0;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const totalCount = table.getRowCount();
|
|
103
|
+
return state.ids.length === totalCount;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
const currentPageRows = table.getPaginationRowModel().rows;
|
|
108
|
+
const selectableRows = currentPageRows.filter(row => table.canSelectRow(row.id));
|
|
109
|
+
if (selectableRows.length === 0)
|
|
110
|
+
return false;
|
|
111
|
+
return selectableRows.every(row => table.getIsRowSelected(row.id));
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
table.getIsSomeRowsSelected = () => {
|
|
115
|
+
const state = table.getSelectionState();
|
|
116
|
+
const selectMode = table.options.selectMode || 'page';
|
|
117
|
+
if (selectMode === 'all' && state.type === 'exclude') {
|
|
118
|
+
const totalCount = table.getRowCount();
|
|
119
|
+
return state.ids.length < totalCount;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return state.ids.length > 0;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
table.getSelectionState = () => {
|
|
126
|
+
return table.getState().selectionState || {
|
|
127
|
+
ids: [],
|
|
128
|
+
type: 'include',
|
|
129
|
+
selectMode: 'page',
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
table.getSelectedCount = () => {
|
|
133
|
+
const state = table.getSelectionState();
|
|
134
|
+
const selectMode = table.options.selectMode || 'page';
|
|
135
|
+
if (selectMode === 'all' && state.type === 'exclude') {
|
|
136
|
+
const totalCount = table.getRowCount();
|
|
137
|
+
return totalCount - state.ids.length;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return state.ids.length;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
table.getSelectedRowIds = () => {
|
|
144
|
+
const state = table.getSelectionState();
|
|
145
|
+
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;
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
table.getSelectedRows = () => {
|
|
154
|
+
const state = table.getSelectionState();
|
|
155
|
+
const allRows = table.getRowModel().rows;
|
|
156
|
+
if (state.type === 'exclude') {
|
|
157
|
+
return allRows.filter(row => !state.ids.includes(row.id));
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
return allRows.filter(row => state.ids.includes(row.id));
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
table.canSelectRow = (rowId) => {
|
|
164
|
+
if (!table.options.isRowSelectable)
|
|
165
|
+
return true;
|
|
166
|
+
const row = table.getRowModel().rows.find(r => r.id === rowId);
|
|
167
|
+
if (!row)
|
|
168
|
+
return false;
|
|
169
|
+
return table.options.isRowSelectable({ row: row.original, id: rowId });
|
|
170
|
+
};
|
|
171
|
+
},
|
|
172
|
+
};
|
|
@@ -0,0 +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';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
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; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './use-data-table-api';
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ColumnOrderState, ColumnPinningState, SortingState, Table } from '@tanstack/react-table';
|
|
2
|
+
import { Ref } from 'react';
|
|
3
|
+
import { CustomColumnFilterState, TableFilters, TableState } from '../types';
|
|
4
|
+
import { DataTableApi } from '../types/data-table-api';
|
|
5
|
+
import { SelectionState } from '../features';
|
|
6
|
+
interface UseDataTableApiProps<T> {
|
|
7
|
+
table: Table<T>;
|
|
8
|
+
data: T[];
|
|
9
|
+
idKey: keyof T;
|
|
10
|
+
globalFilter: string;
|
|
11
|
+
customColumnsFilter: CustomColumnFilterState;
|
|
12
|
+
sorting: SortingState;
|
|
13
|
+
pagination: {
|
|
14
|
+
pageIndex: number;
|
|
15
|
+
pageSize: number;
|
|
16
|
+
};
|
|
17
|
+
columnOrder: ColumnOrderState;
|
|
18
|
+
columnPinning: ColumnPinningState;
|
|
19
|
+
enhancedColumns: any[];
|
|
20
|
+
enablePagination: boolean;
|
|
21
|
+
enableColumnPinning: boolean;
|
|
22
|
+
initialPageIndex: number;
|
|
23
|
+
initialPageSize?: number;
|
|
24
|
+
pageSize: number;
|
|
25
|
+
selectMode?: 'page' | 'all';
|
|
26
|
+
onSelectionChange?: (state: SelectionState) => void;
|
|
27
|
+
handleColumnFilterStateChange: (filterState: CustomColumnFilterState) => void;
|
|
28
|
+
onDataStateChange?: (state: Partial<TableState>) => void;
|
|
29
|
+
onFetchData?: (filters: Partial<TableFilters>) => void;
|
|
30
|
+
onDataChange?: (newData: T[]) => void;
|
|
31
|
+
exportFilename?: string;
|
|
32
|
+
onExportProgress?: (progress: {
|
|
33
|
+
processedRows: number;
|
|
34
|
+
totalRows: number;
|
|
35
|
+
percentage: number;
|
|
36
|
+
}) => void;
|
|
37
|
+
onExportComplete?: (result: {
|
|
38
|
+
success: boolean;
|
|
39
|
+
filename: string;
|
|
40
|
+
totalRows: number;
|
|
41
|
+
}) => void;
|
|
42
|
+
onExportError?: (error: {
|
|
43
|
+
message: string;
|
|
44
|
+
code: string;
|
|
45
|
+
}) => void;
|
|
46
|
+
onServerExport?: (filters?: Partial<TableFilters>, selection?: any) => Promise<{
|
|
47
|
+
data: any[];
|
|
48
|
+
total: number;
|
|
49
|
+
}>;
|
|
50
|
+
exportController?: AbortController | null;
|
|
51
|
+
setExportController?: (controller: AbortController | null) => void;
|
|
52
|
+
isExporting?: boolean;
|
|
53
|
+
dataMode?: 'client' | 'server';
|
|
54
|
+
}
|
|
55
|
+
export declare function useDataTableApi<T extends Record<string, any>>(props: UseDataTableApiProps<T>, ref: Ref<DataTableApi<T>>): void;
|
|
56
|
+
export {};
|