@ackplus/react-tanstack-data-table 1.0.34 → 1.1.1

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 (272) hide show
  1. package/LICENSE +21 -0
  2. package/{src → dist}/index.d.ts +21 -4
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +63 -0
  5. package/{src → dist}/lib/components/droupdown/menu-dropdown.d.ts +2 -1
  6. package/dist/lib/components/droupdown/menu-dropdown.d.ts.map +1 -0
  7. package/{src → dist}/lib/components/droupdown/menu-dropdown.js +38 -7
  8. package/{src → dist}/lib/components/filters/filter-value-input.d.ts +3 -1
  9. package/dist/lib/components/filters/filter-value-input.d.ts.map +1 -0
  10. package/dist/lib/components/filters/filter-value-input.js +83 -0
  11. package/{src → dist}/lib/components/filters/index.d.ts +1 -0
  12. package/dist/lib/components/filters/index.d.ts.map +1 -0
  13. package/dist/lib/components/filters/index.js +142 -0
  14. package/{src → dist}/lib/components/headers/draggable-header.d.ts +2 -2
  15. package/dist/lib/components/headers/draggable-header.d.ts.map +1 -0
  16. package/{src → dist}/lib/components/headers/draggable-header.js +81 -17
  17. package/dist/lib/components/headers/index.d.ts +6 -0
  18. package/dist/lib/components/headers/index.d.ts.map +1 -0
  19. package/dist/lib/components/headers/index.js +21 -0
  20. package/{src → dist}/lib/components/headers/table-header.d.ts +15 -1
  21. package/dist/lib/components/headers/table-header.d.ts.map +1 -0
  22. package/{src → dist}/lib/components/headers/table-header.js +50 -17
  23. package/{src → dist}/lib/components/index.d.ts +6 -1
  24. package/dist/lib/components/index.d.ts.map +1 -0
  25. package/dist/lib/components/index.js +32 -0
  26. package/{src → dist}/lib/components/pagination/data-table-pagination.d.ts +2 -1
  27. package/dist/lib/components/pagination/data-table-pagination.d.ts.map +1 -0
  28. package/{src → dist}/lib/components/pagination/data-table-pagination.js +20 -6
  29. package/dist/lib/components/pagination/index.d.ts +5 -0
  30. package/dist/lib/components/pagination/index.d.ts.map +1 -0
  31. package/dist/lib/components/pagination/index.js +20 -0
  32. package/{src → dist}/lib/components/rows/data-table-row.d.ts +15 -2
  33. package/dist/lib/components/rows/data-table-row.d.ts.map +1 -0
  34. package/{src → dist}/lib/components/rows/data-table-row.js +58 -25
  35. package/{src → dist}/lib/components/rows/empty-data-row.d.ts +3 -3
  36. package/dist/lib/components/rows/empty-data-row.d.ts.map +1 -0
  37. package/{src → dist}/lib/components/rows/empty-data-row.js +12 -4
  38. package/dist/lib/components/rows/index.d.ts +7 -0
  39. package/dist/lib/components/rows/index.d.ts.map +1 -0
  40. package/dist/lib/components/rows/index.js +22 -0
  41. package/{src → dist}/lib/components/rows/loading-rows.d.ts +3 -1
  42. package/dist/lib/components/rows/loading-rows.d.ts.map +1 -0
  43. package/{src → dist}/lib/components/rows/loading-rows.js +27 -19
  44. package/{src → dist}/lib/components/toolbar/bulk-actions-toolbar.d.ts +4 -3
  45. package/dist/lib/components/toolbar/bulk-actions-toolbar.d.ts.map +1 -0
  46. package/dist/lib/components/toolbar/bulk-actions-toolbar.js +49 -0
  47. package/{src → dist}/lib/components/toolbar/column-filter-control.d.ts +3 -1
  48. package/dist/lib/components/toolbar/column-filter-control.d.ts.map +1 -0
  49. package/{src → dist}/lib/components/toolbar/column-filter-control.js +73 -4
  50. package/{src → dist}/lib/components/toolbar/column-pinning-control.d.ts +2 -1
  51. package/dist/lib/components/toolbar/column-pinning-control.d.ts.map +1 -0
  52. package/{src → dist}/lib/components/toolbar/column-pinning-control.js +71 -7
  53. package/{src → dist}/lib/components/toolbar/column-reset-control.d.ts +3 -1
  54. package/dist/lib/components/toolbar/column-reset-control.d.ts.map +1 -0
  55. package/{src → dist}/lib/components/toolbar/column-reset-control.js +9 -3
  56. package/{src → dist}/lib/components/toolbar/column-visibility-control.d.ts +2 -1
  57. package/dist/lib/components/toolbar/column-visibility-control.d.ts.map +1 -0
  58. package/dist/lib/components/toolbar/column-visibility-control.js +77 -0
  59. package/{src → dist}/lib/components/toolbar/data-table-toolbar.d.ts +3 -2
  60. package/dist/lib/components/toolbar/data-table-toolbar.d.ts.map +1 -0
  61. package/{src → dist}/lib/components/toolbar/data-table-toolbar.js +17 -4
  62. package/{src → dist}/lib/components/toolbar/index.d.ts +4 -0
  63. package/dist/lib/components/toolbar/index.d.ts.map +1 -0
  64. package/{src → dist}/lib/components/toolbar/index.js +6 -0
  65. package/dist/lib/components/toolbar/table-export-control.d.ts +12 -0
  66. package/dist/lib/components/toolbar/table-export-control.d.ts.map +1 -0
  67. package/dist/lib/components/toolbar/table-export-control.js +67 -0
  68. package/{src → dist}/lib/components/toolbar/table-search-control.d.ts +3 -1
  69. package/dist/lib/components/toolbar/table-search-control.d.ts.map +1 -0
  70. package/{src → dist}/lib/components/toolbar/table-search-control.js +45 -2
  71. package/{src → dist}/lib/components/toolbar/table-size-control.d.ts +3 -1
  72. package/dist/lib/components/toolbar/table-size-control.d.ts.map +1 -0
  73. package/{src → dist}/lib/components/toolbar/table-size-control.js +20 -8
  74. package/{src → dist}/lib/contexts/data-table-context.d.ts +6 -2
  75. package/dist/lib/contexts/data-table-context.d.ts.map +1 -0
  76. package/{src → dist}/lib/contexts/data-table-context.js +34 -1
  77. package/dist/lib/data-table.d.ts +5 -0
  78. package/dist/lib/data-table.d.ts.map +1 -0
  79. package/{src/lib/components/table → dist/lib}/data-table.js +449 -151
  80. package/dist/lib/features/column-filter.feature.d.ts +55 -0
  81. package/dist/lib/features/column-filter.feature.d.ts.map +1 -0
  82. package/{src → dist}/lib/features/column-filter.feature.js +116 -18
  83. package/dist/lib/features/index.d.ts +9 -0
  84. package/dist/lib/features/index.d.ts.map +1 -0
  85. package/{src → dist}/lib/features/index.js +7 -0
  86. package/{src → dist}/lib/features/selection.feature.d.ts +8 -1
  87. package/dist/lib/features/selection.feature.d.ts.map +1 -0
  88. package/{src → dist}/lib/features/selection.feature.js +76 -15
  89. package/dist/lib/icons/add-icon.d.ts +4 -0
  90. package/dist/lib/icons/add-icon.d.ts.map +1 -0
  91. package/dist/lib/icons/add-icon.js +12 -0
  92. package/dist/lib/icons/csv-icon.d.ts +4 -0
  93. package/dist/lib/icons/csv-icon.d.ts.map +1 -0
  94. package/dist/lib/icons/csv-icon.js +12 -0
  95. package/dist/lib/icons/delete-icon.d.ts +4 -0
  96. package/dist/lib/icons/delete-icon.d.ts.map +1 -0
  97. package/dist/lib/icons/delete-icon.js +12 -0
  98. package/dist/lib/icons/excel-icon.d.ts +4 -0
  99. package/dist/lib/icons/excel-icon.d.ts.map +1 -0
  100. package/dist/lib/icons/excel-icon.js +12 -0
  101. package/dist/lib/icons/index.d.ts +8 -0
  102. package/dist/lib/icons/index.d.ts.map +1 -0
  103. package/dist/lib/icons/unpin-icon.d.ts +4 -0
  104. package/dist/lib/icons/unpin-icon.d.ts.map +1 -0
  105. package/dist/lib/icons/unpin-icon.js +12 -0
  106. package/{src → dist}/lib/icons/view-comfortable-icon.d.ts +3 -1
  107. package/dist/lib/icons/view-comfortable-icon.d.ts.map +1 -0
  108. package/dist/lib/icons/view-comfortable-icon.js +12 -0
  109. package/dist/lib/icons/view-compact-icon.d.ts +4 -0
  110. package/dist/lib/icons/view-compact-icon.d.ts.map +1 -0
  111. package/dist/lib/icons/view-compact-icon.js +12 -0
  112. package/{src → dist}/lib/types/column.types.d.ts +10 -1
  113. package/dist/lib/types/column.types.d.ts.map +1 -0
  114. package/{src → dist}/lib/types/data-table-api.d.ts +2 -1
  115. package/dist/lib/types/data-table-api.d.ts.map +1 -0
  116. package/{src/lib/components/table → dist/lib/types}/data-table.types.d.ts +10 -10
  117. package/dist/lib/types/data-table.types.d.ts.map +1 -0
  118. package/{src → dist}/lib/types/export.types.d.ts +38 -0
  119. package/dist/lib/types/export.types.d.ts.map +1 -0
  120. package/dist/lib/types/export.types.js +6 -0
  121. package/{src → dist}/lib/types/index.d.ts +5 -0
  122. package/dist/lib/types/index.d.ts.map +1 -0
  123. package/dist/lib/types/index.js +30 -0
  124. package/{src → dist}/lib/types/slots.types.d.ts +50 -3
  125. package/dist/lib/types/slots.types.d.ts.map +1 -0
  126. package/{src → dist}/lib/types/table.types.d.ts +14 -0
  127. package/dist/lib/types/table.types.d.ts.map +1 -0
  128. package/{src → dist}/lib/utils/column-helpers.d.ts +10 -0
  129. package/dist/lib/utils/column-helpers.d.ts.map +1 -0
  130. package/{src → dist}/lib/utils/column-helpers.js +20 -4
  131. package/{src → dist}/lib/utils/debounced-fetch.utils.d.ts +3 -5
  132. package/dist/lib/utils/debounced-fetch.utils.d.ts.map +1 -0
  133. package/{src → dist}/lib/utils/debounced-fetch.utils.js +12 -6
  134. package/{src → dist}/lib/utils/export-utils.d.ts +13 -0
  135. package/dist/lib/utils/export-utils.d.ts.map +1 -0
  136. package/dist/lib/utils/export-utils.js +252 -0
  137. package/{src → dist}/lib/utils/index.d.ts +4 -0
  138. package/dist/lib/utils/index.d.ts.map +1 -0
  139. package/dist/lib/utils/index.js +35 -0
  140. package/{src → dist}/lib/utils/logger.d.ts +43 -0
  141. package/dist/lib/utils/logger.d.ts.map +1 -0
  142. package/{src → dist}/lib/utils/logger.js +22 -2
  143. package/{src → dist}/lib/utils/slot-helpers.d.ts +39 -1
  144. package/dist/lib/utils/slot-helpers.d.ts.map +1 -0
  145. package/{src → dist}/lib/utils/slot-helpers.js +55 -6
  146. package/{src → dist}/lib/utils/special-columns.utils.d.ts +10 -0
  147. package/dist/lib/utils/special-columns.utils.d.ts.map +1 -0
  148. package/{src → dist}/lib/utils/special-columns.utils.js +41 -5
  149. package/{src → dist}/lib/utils/styling-helpers.d.ts +20 -0
  150. package/dist/lib/utils/styling-helpers.d.ts.map +1 -0
  151. package/dist/lib/utils/styling-helpers.js +108 -0
  152. package/{src → dist}/lib/utils/table-helpers.d.ts +25 -0
  153. package/dist/lib/utils/table-helpers.d.ts.map +1 -0
  154. package/{src → dist}/lib/utils/table-helpers.js +24 -0
  155. package/package.json +36 -11
  156. package/src/index.ts +71 -0
  157. package/src/lib/components/droupdown/menu-dropdown.tsx +97 -0
  158. package/src/lib/components/filters/filter-value-input.tsx +225 -0
  159. package/src/lib/components/filters/{index.js → index.ts} +3 -6
  160. package/src/lib/components/headers/draggable-header.tsx +326 -0
  161. package/src/lib/components/headers/{index.d.ts → index.ts} +4 -0
  162. package/src/lib/components/headers/table-header.tsx +173 -0
  163. package/src/lib/components/index.ts +21 -0
  164. package/src/lib/components/pagination/data-table-pagination.tsx +99 -0
  165. package/src/lib/components/pagination/index.ts +5 -0
  166. package/src/lib/components/rows/data-table-row.tsx +208 -0
  167. package/src/lib/components/rows/empty-data-row.tsx +69 -0
  168. package/src/lib/components/rows/{index.d.ts → index.ts} +4 -0
  169. package/src/lib/components/rows/loading-rows.tsx +160 -0
  170. package/src/lib/components/toolbar/bulk-actions-toolbar.tsx +125 -0
  171. package/src/lib/components/toolbar/column-filter-control.tsx +374 -0
  172. package/src/lib/components/toolbar/column-pinning-control.tsx +275 -0
  173. package/src/lib/components/toolbar/column-reset-control.tsx +74 -0
  174. package/src/lib/components/toolbar/column-visibility-control.tsx +105 -0
  175. package/src/lib/components/toolbar/data-table-toolbar.tsx +229 -0
  176. package/src/lib/components/toolbar/index.ts +17 -0
  177. package/src/lib/components/toolbar/table-export-control.tsx +179 -0
  178. package/src/lib/components/toolbar/table-search-control.tsx +155 -0
  179. package/src/lib/components/toolbar/table-size-control.tsx +102 -0
  180. package/src/lib/contexts/data-table-context.tsx +112 -0
  181. package/src/lib/data-table.tsx +1911 -0
  182. package/src/lib/features/README.md +161 -0
  183. package/src/lib/features/column-filter.feature.ts +456 -0
  184. package/src/lib/features/index.ts +23 -0
  185. package/src/lib/features/selection.feature.ts +318 -0
  186. package/src/lib/icons/add-icon.tsx +23 -0
  187. package/src/lib/icons/csv-icon.tsx +15 -0
  188. package/src/lib/icons/delete-icon.tsx +30 -0
  189. package/src/lib/icons/excel-icon.tsx +15 -0
  190. package/src/lib/icons/unpin-icon.tsx +18 -0
  191. package/src/lib/icons/view-comfortable-icon.tsx +45 -0
  192. package/src/lib/icons/view-compact-icon.tsx +55 -0
  193. package/src/lib/types/column.types.ts +44 -0
  194. package/src/lib/types/data-table-api.ts +169 -0
  195. package/src/lib/types/data-table.types.ts +139 -0
  196. package/src/lib/types/export.types.ts +154 -0
  197. package/src/lib/types/index.ts +22 -0
  198. package/src/lib/types/slots.types.ts +332 -0
  199. package/src/lib/types/table.types.ts +90 -0
  200. package/src/lib/utils/column-helpers.ts +72 -0
  201. package/src/lib/utils/debounced-fetch.utils.ts +54 -0
  202. package/src/lib/utils/export-utils.ts +285 -0
  203. package/src/lib/utils/index.ts +27 -0
  204. package/src/lib/utils/logger.ts +203 -0
  205. package/src/lib/utils/slot-helpers.tsx +194 -0
  206. package/src/lib/utils/special-columns.utils.ts +94 -0
  207. package/src/lib/utils/styling-helpers.ts +126 -0
  208. package/src/lib/utils/table-helpers.ts +106 -0
  209. package/src/index.js +0 -27
  210. package/src/lib/components/filters/filter-value-input.js +0 -41
  211. package/src/lib/components/headers/index.js +0 -5
  212. package/src/lib/components/index.js +0 -10
  213. package/src/lib/components/pagination/index.d.ts +0 -1
  214. package/src/lib/components/pagination/index.js +0 -4
  215. package/src/lib/components/rows/index.js +0 -6
  216. package/src/lib/components/table/data-table.d.ts +0 -4
  217. package/src/lib/components/table/index.d.ts +0 -2
  218. package/src/lib/components/table/index.js +0 -5
  219. package/src/lib/components/toolbar/bulk-actions-toolbar.js +0 -30
  220. package/src/lib/components/toolbar/column-visibility-control.js +0 -31
  221. package/src/lib/components/toolbar/table-export-control.d.ts +0 -31
  222. package/src/lib/components/toolbar/table-export-control.js +0 -56
  223. package/src/lib/examples/advanced-features-example.d.ts +0 -1
  224. package/src/lib/examples/advanced-features-example.js +0 -269
  225. package/src/lib/examples/bulk-actions-test.d.ts +0 -1
  226. package/src/lib/examples/bulk-actions-test.js +0 -44
  227. package/src/lib/examples/custom-column-filter-example.d.ts +0 -1
  228. package/src/lib/examples/custom-column-filter-example.js +0 -60
  229. package/src/lib/examples/index.d.ts +0 -8
  230. package/src/lib/examples/index.js +0 -19
  231. package/src/lib/examples/selection-test-example.d.ts +0 -1
  232. package/src/lib/examples/selection-test-example.js +0 -101
  233. package/src/lib/examples/server-side-fetching-example.d.ts +0 -1
  234. package/src/lib/examples/server-side-fetching-example.js +0 -245
  235. package/src/lib/examples/server-side-test.d.ts +0 -1
  236. package/src/lib/examples/server-side-test.js +0 -9
  237. package/src/lib/examples/simple-local-example.d.ts +0 -1
  238. package/src/lib/examples/simple-local-example.js +0 -95
  239. package/src/lib/examples/simple-slots-example.d.ts +0 -1
  240. package/src/lib/examples/simple-slots-example.js +0 -115
  241. package/src/lib/features/column-filter.feature.d.ts +0 -45
  242. package/src/lib/features/index.d.ts +0 -2
  243. package/src/lib/hooks/index.d.ts +0 -1
  244. package/src/lib/hooks/index.js +0 -4
  245. package/src/lib/hooks/use-data-table-api.d.ts +0 -46
  246. package/src/lib/hooks/use-data-table-api.js +0 -690
  247. package/src/lib/icons/add-icon.d.ts +0 -2
  248. package/src/lib/icons/add-icon.js +0 -8
  249. package/src/lib/icons/csv-icon.d.ts +0 -2
  250. package/src/lib/icons/csv-icon.js +0 -8
  251. package/src/lib/icons/delete-icon.d.ts +0 -2
  252. package/src/lib/icons/delete-icon.js +0 -8
  253. package/src/lib/icons/excel-icon.d.ts +0 -2
  254. package/src/lib/icons/excel-icon.js +0 -8
  255. package/src/lib/icons/unpin-icon.d.ts +0 -2
  256. package/src/lib/icons/unpin-icon.js +0 -8
  257. package/src/lib/icons/view-comfortable-icon.js +0 -8
  258. package/src/lib/icons/view-compact-icon.d.ts +0 -2
  259. package/src/lib/icons/view-compact-icon.js +0 -8
  260. package/src/lib/types/export.types.js +0 -2
  261. package/src/lib/types/index.js +0 -8
  262. package/src/lib/utils/export-utils.js +0 -175
  263. package/src/lib/utils/index.js +0 -11
  264. package/src/lib/utils/styling-helpers.js +0 -70
  265. package/tsconfig.tsbuildinfo +0 -1
  266. /package/{src → dist}/lib/icons/index.js +0 -0
  267. /package/{src → dist}/lib/types/column.types.js +0 -0
  268. /package/{src → dist}/lib/types/data-table-api.js +0 -0
  269. /package/{src/lib/components/table → dist/lib/types}/data-table.types.js +0 -0
  270. /package/{src → dist}/lib/types/slots.types.js +0 -0
  271. /package/{src → dist}/lib/types/table.types.js +0 -0
  272. /package/src/lib/icons/{index.d.ts → index.ts} +0 -0
@@ -0,0 +1,169 @@
1
+ import { ColumnPinningState, SortingState, ColumnOrderState, TableState, Row, Table } from '@tanstack/react-table';
2
+
3
+ import { ColumnFilterState } from './table.types';
4
+ import { SelectionState } from '../features';
5
+
6
+ export interface DataTableApi<T = any> {
7
+ // Column Management
8
+ columnVisibility: {
9
+ showColumn: (columnId: string) => void;
10
+ hideColumn: (columnId: string) => void;
11
+ toggleColumn: (columnId: string) => void;
12
+ showAllColumns: () => void;
13
+ hideAllColumns: () => void;
14
+ resetColumnVisibility: () => void;
15
+ };
16
+
17
+ table :{
18
+ getTable: () => Table<T>;
19
+ }
20
+
21
+ // Column Ordering
22
+ columnOrdering: {
23
+ setColumnOrder: (columnOrder: ColumnOrderState) => void;
24
+ moveColumn: (columnId: string, toIndex: number) => void;
25
+ resetColumnOrder: () => void;
26
+ };
27
+
28
+ // Column Pinning
29
+ columnPinning: {
30
+ pinColumnLeft: (columnId: string) => void;
31
+ pinColumnRight: (columnId: string) => void;
32
+ unpinColumn: (columnId: string) => void;
33
+ setPinning: (pinning: ColumnPinningState) => void;
34
+ resetColumnPinning: () => void;
35
+ };
36
+
37
+ // Column Resizing
38
+ columnResizing: {
39
+ resizeColumn: (columnId: string, width: number) => void;
40
+ autoSizeColumn: (columnId: string) => void;
41
+ autoSizeAllColumns: () => void;
42
+ resetColumnSizing: () => void;
43
+ };
44
+
45
+ // Filtering
46
+ filtering: {
47
+ setGlobalFilter: (filter: string) => void;
48
+ clearGlobalFilter: () => void;
49
+ setColumnFilters: (filters: ColumnFilterState) => void;
50
+ addColumnFilter: (columnId: string, operator: string, value: any) => void;
51
+ removeColumnFilter: (filterId: string) => void;
52
+ clearAllFilters: () => void;
53
+ resetFilters: () => void;
54
+ };
55
+
56
+ // Sorting
57
+ sorting: {
58
+ setSorting: (sorting: SortingState) => void;
59
+ sortColumn: (columnId: string, direction: 'asc' | 'desc' | false) => void;
60
+ clearSorting: () => void;
61
+ resetSorting: () => void;
62
+ };
63
+
64
+ // Pagination
65
+ pagination: {
66
+ goToPage: (pageIndex: number) => void;
67
+ nextPage: () => void;
68
+ previousPage: () => void;
69
+ setPageSize: (pageSize: number) => void;
70
+ goToFirstPage: () => void;
71
+ goToLastPage: () => void;
72
+ resetPagination?: () => void;
73
+ };
74
+
75
+ // Enhanced Row Selection with automatic mode detection
76
+ selection: {
77
+ // Basic selection (works with current selectMode)
78
+ selectRow: (rowId: string) => void;
79
+ deselectRow: (rowId: string) => void;
80
+ toggleRowSelection: (rowId: string) => void;
81
+
82
+ // Smart selection methods (automatically handle page vs all modes)
83
+ selectAll: () => void; // Selects all based on current selectMode
84
+ deselectAll: () => void; // Deselects all
85
+ toggleSelectAll: () => void; // Toggles select all
86
+
87
+ // Selection state getters
88
+ getSelectionState: () => SelectionState; // Get selection state
89
+ getSelectedCount: () => number; // Get total selected count
90
+ getSelectedRows: () => Row<T>[]
91
+ // Selection state checks
92
+ isRowSelected: (rowId: string) => boolean;
93
+ };
94
+
95
+ // Data Management
96
+ data: {
97
+ refresh: (resetPagination?: boolean) => void;
98
+ reload: () => void;
99
+
100
+ // Data CRUD operations
101
+ getAllData: () => T[];
102
+ getRowData: (rowId: string) => T | undefined;
103
+ getRowByIndex: (index: number) => T | undefined;
104
+ updateRow: (rowId: string, updates: Partial<T>) => void;
105
+ updateRowByIndex: (index: number, updates: Partial<T>) => void;
106
+ insertRow: (newRow: T, index?: number) => void;
107
+ deleteRow: (rowId: string) => void;
108
+ deleteRowByIndex: (index: number) => void;
109
+ deleteSelectedRows: () => void;
110
+ replaceAllData: (newData: T[]) => void;
111
+
112
+ // Bulk operations
113
+ updateMultipleRows: (updates: Array<{ rowId: string; data: Partial<T> }>) => void;
114
+ insertMultipleRows: (newRows: T[], startIndex?: number) => void;
115
+ deleteMultipleRows: (rowIds: string[]) => void;
116
+
117
+ // Field-specific updates
118
+ updateField: (rowId: string, fieldName: keyof T, value: any) => void;
119
+ updateFieldByIndex: (index: number, fieldName: keyof T, value: any) => void;
120
+
121
+ // Data queries
122
+ findRows: (predicate: (row: T) => boolean) => T[];
123
+ findRowIndex: (predicate: (row: T) => boolean) => number;
124
+ getDataCount: () => number;
125
+ getFilteredDataCount: () => number;
126
+ };
127
+
128
+ // Layout Management
129
+ layout: {
130
+ resetLayout: () => void;
131
+ resetAll: () => void;
132
+ saveLayout: () => any;
133
+ restoreLayout: (layout: any) => void;
134
+ };
135
+
136
+ // Table State
137
+ state: {
138
+ getTableState: () => any;
139
+ getCurrentFilters: () => ColumnFilterState;
140
+ getCurrentSorting: () => SortingState;
141
+ getCurrentPagination: () => { pageIndex: number; pageSize: number };
142
+ getCurrentSelection: () => SelectionState;
143
+ };
144
+
145
+ // Simplified Export
146
+ export: {
147
+ exportCSV: (options?: {
148
+ filename?: string;
149
+ onlyVisibleColumns?: boolean;
150
+ onlySelectedRows?: boolean;
151
+ includeHeaders?: boolean;
152
+ }) => Promise<void>;
153
+ exportExcel: (options?: {
154
+ filename?: string;
155
+ onlyVisibleColumns?: boolean;
156
+ onlySelectedRows?: boolean;
157
+ includeHeaders?: boolean;
158
+ }) => Promise<void>;
159
+ exportServerData: (options: {
160
+ format: 'csv' | 'excel';
161
+ filename?: string;
162
+ fetchData: (filters?: Partial<TableState>) => Promise<{ data: T[]; total: number }>;
163
+ pageSize?: number;
164
+ includeHeaders?: boolean;
165
+ }) => Promise<void>;
166
+ isExporting: () => boolean;
167
+ cancelExport: () => void;
168
+ };
169
+ }
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Type definitions for DataTable components
3
+ */
4
+ import { Row, SortingState, ColumnResizeMode, ColumnPinningState, PaginationState, ColumnDef } from '@tanstack/react-table';
5
+ import { ReactNode } from 'react';
6
+
7
+ import type { ColumnFilterState, TableFilters, TableState } from './index';
8
+ import { DataTableSlots, PartialSlotProps } from './slots.types';
9
+ import { DataTableSize } from '../utils/table-helpers';
10
+ import { SelectionState } from '../features';
11
+ import { DataTableLoggingOptions } from '../utils/logger';
12
+
13
+ // Selection mode type
14
+ export type SelectMode = 'page' | 'all';
15
+
16
+ // Dynamic data management interfaces
17
+ // TableFilters now imported from types folder
18
+
19
+ export interface DataTableProps<T> {
20
+ // Core data props
21
+ // columns: DataTableColumn<T>[] | AccessorKeyColumnDef <T, string>[];
22
+ columns: ColumnDef<T, any>[];
23
+ data?: T[];
24
+ totalRow?: number;
25
+ idKey?: keyof T;
26
+ extraFilter?: ReactNode | null;
27
+ footerFilter?: ReactNode | null;
28
+
29
+ // Data management modes (MUI DataGrid style)
30
+ dataMode?: 'client' | 'server'; // Data management mode (default: 'client')
31
+ initialState?: Partial<TableState>;
32
+ initialLoadData?: boolean; // Initial load data (default: true)
33
+ onDataStateChange?: (filters: Partial<TableState>) => void; // Callback when any filter/state changes
34
+ onFetchData?: (filters: Partial<TableFilters>) => Promise<{ data: T[]; total: number }>;
35
+
36
+ // Simplified Export props
37
+ exportFilename?: string;
38
+ onExportProgress?: (progress: { processedRows?: number; totalRows?: number; percentage?: number }) => void;
39
+ onExportComplete?: (result: { success: boolean; filename: string; totalRows: number }) => void;
40
+ onExportError?: (error: { message: string; code: string }) => void;
41
+
42
+ // Server export callback - receives current table state/filters and selection data
43
+ onServerExport?: (filters?: Partial<TableState>, selection?: SelectionState) => Promise<{ data: any[]; total: number }>;
44
+
45
+ // Export cancellation callback - called when export is cancelled
46
+ onExportCancel?: () => void;
47
+
48
+ // Selection props
49
+ enableRowSelection?: boolean | ((row: Row<T>) => boolean);
50
+ enableMultiRowSelection?: boolean;
51
+ selectMode?: SelectMode; // 'page' | 'all' - defines selection scope
52
+
53
+ // Row selection control (like MUI DataGrid)
54
+ isRowSelectable?: (params: { row: T; id: string }) => boolean;
55
+
56
+ onSelectionChange?: (selection: SelectionState) => void;
57
+
58
+ // Row click props
59
+ onRowClick?: (event: React.MouseEvent<HTMLTableRowElement>, row: Row<T>) => void;
60
+ selectOnRowClick?: boolean; // If true, row click will toggle selection (default: false)
61
+
62
+ // Bulk action props
63
+ enableBulkActions?: boolean;
64
+ bulkActions?: (selectionState: SelectionState) => ReactNode;
65
+
66
+ // Column resizing props
67
+ enableColumnResizing?: boolean;
68
+ columnResizeMode?: ColumnResizeMode;
69
+ onColumnSizingChange?: (sizing: Record<string, number>) => void;
70
+
71
+ // Column ordering props
72
+ enableColumnDragging?: boolean;
73
+ onColumnDragEnd?: (columnOrder: string[]) => void;
74
+
75
+ // Column pinning props
76
+ enableColumnPinning?: boolean;
77
+ onColumnPinningChange?: (pinning: ColumnPinningState) => void;
78
+
79
+ // Column visibility props
80
+ enableColumnVisibility?: boolean;
81
+ onColumnVisibilityChange?: (visibility: Record<string, boolean>) => void;
82
+
83
+ // Expandable rows props
84
+ enableExpanding?: boolean;
85
+ getRowCanExpand?: (row: Row<T>) => boolean;
86
+ renderSubComponent?: (row: Row<T>) => ReactNode;
87
+
88
+ // Pagination props
89
+ enablePagination?: boolean;
90
+ paginationMode?: 'client' | 'server'; // Pagination mode (default: 'client')
91
+
92
+ // Filtering props
93
+ enableGlobalFilter?: boolean;
94
+ enableColumnFilter?: boolean;
95
+ filterMode?: 'client' | 'server'; // Filtering mode (default: 'client')
96
+
97
+ // Sorting props
98
+ enableSorting?: boolean;
99
+ sortingMode?: 'client' | 'server'; // Sorting mode (default: 'client')
100
+ onSortingChange?: (sorting: SortingState) => void;
101
+
102
+ // Styling props
103
+ enableHover?: boolean;
104
+ enableStripes?: boolean;
105
+ tableContainerProps?: any;
106
+ tableProps?: any;
107
+ fitToScreen?: boolean;
108
+ tableSize?: DataTableSize;
109
+
110
+ // Sticky header/footer props
111
+ enableStickyHeaderOrFooter?: boolean;
112
+ maxHeight?: string | number;
113
+
114
+ // Virtualization props
115
+ enableVirtualization?: boolean;
116
+ estimateRowHeight?: number;
117
+
118
+ // Toolbar props
119
+ enableTableSizeControl?: boolean;
120
+ enableExport?: boolean;
121
+ enableReset?: boolean;
122
+
123
+ // Loading and empty states
124
+ loading?: boolean;
125
+ emptyMessage?: string | ReactNode;
126
+ skeletonRows?: number;
127
+
128
+ // Column filters props
129
+ onColumnFiltersChange?: (filterState: ColumnFilterState) => void;
130
+ onPaginationChange?: (pagination: PaginationState) => void;
131
+ onGlobalFilterChange?: (globalFilter: string) => void;
132
+ onColumnFilterChange?: (columnFilter: ColumnFilterState) => void;
133
+ // Slots for component customization (similar to MUI DataGrid)
134
+ slots?: Partial<DataTableSlots<T>>;
135
+ slotProps?: PartialSlotProps<T>;
136
+
137
+ // Logging configuration
138
+ logging?: boolean | DataTableLoggingOptions;
139
+ }
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Export Configuration Types
3
+ * Consolidated export-related interfaces from export-utils.ts
4
+ */
5
+
6
+ import { TableState } from './table.types';
7
+
8
+
9
+ /**
10
+ * Server export column configuration
11
+ */
12
+ export interface ServerExportColumn<T = any> {
13
+ id: string;
14
+ header: string;
15
+ accessor: keyof T | string;
16
+ formatter?: (value: any, row: T) => string;
17
+ }
18
+
19
+ /**
20
+ * Export options configuration
21
+ */
22
+ export interface ExportOptions {
23
+ filename?: string;
24
+ format: 'csv' | 'excel';
25
+ includeHeaders?: boolean;
26
+ onlyVisibleColumns?: boolean;
27
+ onlyFilteredData?: boolean;
28
+ // New options for large datasets
29
+ chunkSize?: number;
30
+ onProgress?: (progress: ExportProgress) => void;
31
+ onComplete?: (result: ExportResult) => void;
32
+ onError?: (error: ExportError) => void;
33
+ signal?: AbortSignal; // For cancellation
34
+ }
35
+
36
+ /**
37
+ * Export progress information
38
+ */
39
+ export interface ExportProgress {
40
+ processedRows: number;
41
+ totalRows: number;
42
+ percentage: number;
43
+ currentChunk: number;
44
+ totalChunks: number;
45
+ estimatedTimeRemaining?: number;
46
+ }
47
+
48
+ /**
49
+ * Export result information
50
+ */
51
+ export interface ExportResult {
52
+ success: boolean;
53
+ filename: string;
54
+ totalRows: number;
55
+ totalColumns: number;
56
+ processingTime: number;
57
+ fileSize?: number;
58
+ }
59
+
60
+ /**
61
+ * Export error information
62
+ */
63
+ export interface ExportError {
64
+ message: string;
65
+ code: 'CANCELLED' | 'MEMORY_ERROR' | 'PROCESSING_ERROR' | 'UNKNOWN';
66
+ details?: any;
67
+ }
68
+
69
+ /**
70
+ * Export configuration for DataTable
71
+ */
72
+ export interface ExportConfig {
73
+ enabled: boolean;
74
+ formats: ('csv' | 'excel')[];
75
+ filename?: string;
76
+ includeHeaders?: boolean;
77
+ onlyVisibleColumns?: boolean;
78
+ onlyFilteredData?: boolean;
79
+ // New configuration for large datasets
80
+ chunkSize?: number;
81
+ enableProgressTracking?: boolean;
82
+ maxMemoryThreshold?: number; // MB
83
+ }
84
+
85
+ /**
86
+ * Export state for tracking ongoing exports
87
+ */
88
+ export interface ExportState {
89
+ isExporting: boolean;
90
+ progress?: ExportProgress;
91
+ controller?: AbortController;
92
+ startTime?: number;
93
+ }
94
+
95
+ /**
96
+ * Chunked data processing configuration
97
+ */
98
+ export interface ChunkProcessingConfig {
99
+ chunkSize: number;
100
+ delayBetweenChunks: number; // ms
101
+ useWebWorker: boolean;
102
+ }
103
+
104
+ /**
105
+ * Styling options for pinned columns (actual implementation)
106
+ */
107
+ export interface PinnedColumnStyleOptions {
108
+ width?: number | string;
109
+ minWidth?: number;
110
+ maxWidth?: number;
111
+ isPinned?: 'left' | 'right' | false;
112
+ pinnedPosition?: number;
113
+ pinnedRightPosition?: number;
114
+ zIndex?: number;
115
+ disableStickyHeader?: boolean;
116
+ isLastLeftPinnedColumn?: boolean;
117
+ isFirstRightPinnedColumn?: boolean;
118
+ wrapText?: boolean; // If true, text will wrap; if false, text will truncate with ellipsis (default: false)
119
+ }
120
+
121
+ /**
122
+ * Simplified Export Types for DataTable
123
+ */
124
+
125
+ export interface SimpleExportOptions {
126
+ filename?: string;
127
+ format: 'csv' | 'excel';
128
+ includeHeaders?: boolean;
129
+ onlyVisibleColumns?: boolean;
130
+ onlySelectedRows?: boolean;
131
+ }
132
+
133
+ /**
134
+ * Selection data for server exports
135
+ */
136
+ export interface SelectionExportData {
137
+ selectAllMatching?: boolean;
138
+ excludedIds?: string[];
139
+ selectedIds?: string[];
140
+ hasSelection?: boolean;
141
+ }
142
+
143
+ export interface ServerExportOptions extends SimpleExportOptions {
144
+ fetchData: (filters?: Partial<TableState>, selection?: SelectionExportData) => Promise<{ data: any[]; total: number }>;
145
+ currentFilters?: any; // Current table filters/state
146
+ pageSize?: number;
147
+ selection?: SelectionExportData;
148
+ }
149
+
150
+ export interface ExportCallbacks {
151
+ onProgress?: (progress: ExportProgress) => void;
152
+ onComplete?: (result: ExportResult) => void;
153
+ onError?: (error: ExportError) => void;
154
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Consolidated Types Index
3
+ * All DataTable types in one organized location
4
+ */
5
+
6
+ // Column-related types
7
+ export * from './column.types';
8
+
9
+ // Table state and configuration types
10
+ export * from './table.types';
11
+
12
+ // Export functionality types
13
+ export * from './export.types';
14
+
15
+ // API types (already exists)
16
+ export * from './data-table-api';
17
+
18
+ // Slots and slotProps types
19
+ export * from './slots.types';
20
+
21
+ // Re-export commonly used types for convenience
22
+ export type { DataTableApi } from './data-table-api';