@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.
Files changed (125) hide show
  1. package/README.md +599 -0
  2. package/package.json +1 -1
  3. package/src/index.d.ts +19 -0
  4. package/src/index.js +31 -0
  5. package/src/lib/components/droupdown/menu-dropdown.d.ts +17 -0
  6. package/src/lib/components/droupdown/menu-dropdown.js +52 -0
  7. package/src/lib/components/filters/filter-value-input.d.ts +9 -0
  8. package/src/lib/components/filters/filter-value-input.js +58 -0
  9. package/src/lib/components/filters/index.d.ts +23 -0
  10. package/src/lib/components/filters/index.js +129 -0
  11. package/src/lib/components/headers/draggable-header.d.ts +12 -0
  12. package/src/lib/components/headers/draggable-header.js +212 -0
  13. package/src/lib/components/headers/index.d.ts +2 -0
  14. package/src/lib/components/headers/index.js +5 -0
  15. package/src/lib/components/headers/table-header.d.ts +10 -0
  16. package/src/lib/components/headers/table-header.js +48 -0
  17. package/src/lib/components/index.d.ts +7 -0
  18. package/src/lib/components/index.js +10 -0
  19. package/src/lib/components/pagination/data-table-pagination.d.ts +11 -0
  20. package/src/lib/components/pagination/data-table-pagination.js +25 -0
  21. package/src/lib/components/pagination/index.d.ts +1 -0
  22. package/src/lib/components/pagination/index.js +4 -0
  23. package/src/lib/components/rows/data-table-row.d.ts +13 -0
  24. package/src/lib/components/rows/data-table-row.js +31 -0
  25. package/src/lib/components/rows/empty-data-row.d.ts +6 -0
  26. package/src/lib/components/rows/empty-data-row.js +11 -0
  27. package/src/lib/components/rows/index.d.ts +3 -0
  28. package/src/lib/components/rows/index.js +6 -0
  29. package/src/lib/components/rows/loading-rows.d.ts +5 -0
  30. package/src/lib/components/rows/loading-rows.js +49 -0
  31. package/src/lib/components/table/data-table.d.ts +3 -0
  32. package/src/lib/components/table/data-table.js +492 -0
  33. package/src/lib/components/table/data-table.types.d.ts +114 -0
  34. package/src/lib/components/table/data-table.types.js +2 -0
  35. package/src/lib/components/table/index.d.ts +2 -0
  36. package/src/lib/components/table/index.js +5 -0
  37. package/src/lib/components/toolbar/bulk-actions-toolbar.d.ts +9 -0
  38. package/src/lib/components/toolbar/bulk-actions-toolbar.js +25 -0
  39. package/src/lib/components/toolbar/column-custom-filter-control.d.ts +1 -0
  40. package/src/lib/components/toolbar/column-custom-filter-control.js +137 -0
  41. package/src/lib/components/toolbar/column-pinning-control.d.ts +1 -0
  42. package/src/lib/components/toolbar/column-pinning-control.js +105 -0
  43. package/src/lib/components/toolbar/column-reset-control.d.ts +1 -0
  44. package/src/lib/components/toolbar/column-reset-control.js +16 -0
  45. package/src/lib/components/toolbar/column-visibility-control.d.ts +1 -0
  46. package/src/lib/components/toolbar/column-visibility-control.js +31 -0
  47. package/src/lib/components/toolbar/data-table-toolbar.d.ts +14 -0
  48. package/src/lib/components/toolbar/data-table-toolbar.js +26 -0
  49. package/src/lib/components/toolbar/index.d.ts +8 -0
  50. package/src/lib/components/toolbar/index.js +17 -0
  51. package/src/lib/components/toolbar/table-export-control.d.ts +25 -0
  52. package/src/lib/components/toolbar/table-export-control.js +93 -0
  53. package/src/lib/components/toolbar/table-search-control.d.ts +1 -0
  54. package/src/lib/components/toolbar/table-search-control.js +61 -0
  55. package/src/lib/components/toolbar/table-size-control.d.ts +1 -0
  56. package/src/lib/components/toolbar/table-size-control.js +36 -0
  57. package/src/lib/contexts/data-table-context.d.ts +43 -0
  58. package/src/lib/contexts/data-table-context.js +54 -0
  59. package/src/lib/examples/advanced-features-example.d.ts +1 -0
  60. package/src/lib/examples/advanced-features-example.js +264 -0
  61. package/src/lib/examples/bulk-actions-test.d.ts +1 -0
  62. package/src/lib/examples/bulk-actions-test.js +44 -0
  63. package/src/lib/examples/custom-column-filter-example.d.ts +1 -0
  64. package/src/lib/examples/custom-column-filter-example.js +60 -0
  65. package/src/lib/examples/index.d.ts +5 -0
  66. package/src/lib/examples/index.js +13 -0
  67. package/src/lib/examples/selection-test-example.d.ts +1 -0
  68. package/src/lib/examples/selection-test-example.js +101 -0
  69. package/src/lib/examples/simple-local-example.d.ts +1 -0
  70. package/src/lib/examples/simple-local-example.js +97 -0
  71. package/src/lib/features/custom-column-filter.feature.d.ts +45 -0
  72. package/src/lib/features/custom-column-filter.feature.js +247 -0
  73. package/src/lib/features/custom-selection.feature.d.ts +46 -0
  74. package/src/lib/features/custom-selection.feature.js +172 -0
  75. package/src/lib/features/index.d.ts +2 -0
  76. package/src/lib/features/index.js +8 -0
  77. package/src/lib/hooks/index.d.ts +1 -0
  78. package/src/lib/hooks/index.js +4 -0
  79. package/src/lib/hooks/use-data-table-api.d.ts +56 -0
  80. package/src/lib/hooks/use-data-table-api.js +616 -0
  81. package/src/lib/icons/add-icon.d.ts +2 -0
  82. package/src/lib/icons/add-icon.js +8 -0
  83. package/src/lib/icons/csv-icon.d.ts +2 -0
  84. package/src/lib/icons/csv-icon.js +8 -0
  85. package/src/lib/icons/delete-icon.d.ts +2 -0
  86. package/src/lib/icons/delete-icon.js +8 -0
  87. package/src/lib/icons/excel-icon.d.ts +2 -0
  88. package/src/lib/icons/excel-icon.js +8 -0
  89. package/src/lib/icons/index.d.ts +7 -0
  90. package/src/lib/icons/index.js +17 -0
  91. package/src/lib/icons/unpin-icon.d.ts +2 -0
  92. package/src/lib/icons/unpin-icon.js +8 -0
  93. package/src/lib/icons/view-comfortable-icon.d.ts +2 -0
  94. package/src/lib/icons/view-comfortable-icon.js +8 -0
  95. package/src/lib/icons/view-compact-icon.d.ts +2 -0
  96. package/src/lib/icons/view-compact-icon.js +8 -0
  97. package/src/lib/types/column.types.d.ts +29 -0
  98. package/src/lib/types/column.types.js +5 -0
  99. package/src/lib/types/data-table-api.d.ts +134 -0
  100. package/src/lib/types/data-table-api.js +2 -0
  101. package/src/lib/types/export.types.d.ts +99 -0
  102. package/src/lib/types/export.types.js +2 -0
  103. package/src/lib/types/index.d.ts +6 -0
  104. package/src/lib/types/index.js +8 -0
  105. package/src/lib/types/slots.types.d.ts +272 -0
  106. package/src/lib/types/slots.types.js +2 -0
  107. package/src/lib/types/table.types.d.ts +63 -0
  108. package/src/lib/types/table.types.js +2 -0
  109. package/src/lib/utils/column-helpers.d.ts +7 -0
  110. package/src/lib/utils/column-helpers.js +43 -0
  111. package/src/lib/utils/debounced-fetch.utils.d.ts +11 -0
  112. package/src/lib/utils/debounced-fetch.utils.js +49 -0
  113. package/src/lib/utils/export-utils.d.ts +30 -0
  114. package/src/lib/utils/export-utils.js +152 -0
  115. package/src/lib/utils/index.d.ts +7 -0
  116. package/src/lib/utils/index.js +10 -0
  117. package/src/lib/utils/slot-helpers.d.ts +9 -0
  118. package/src/lib/utils/slot-helpers.js +21 -0
  119. package/src/lib/utils/special-columns.utils.d.ts +6 -0
  120. package/src/lib/utils/special-columns.utils.js +52 -0
  121. package/src/lib/utils/styling-helpers.d.ts +36 -0
  122. package/src/lib/utils/styling-helpers.js +61 -0
  123. package/src/lib/utils/table-helpers.d.ts +9 -0
  124. package/src/lib/utils/table-helpers.js +57 -0
  125. 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,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./use-data-table-api"), exports);
@@ -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 {};