@ackplus/react-tanstack-data-table 1.0.35 → 1.1.3

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 +70 -6
  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 -2
  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 +427 -143
  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 -11
  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 +6 -0
  122. package/dist/lib/types/index.d.ts.map +1 -0
  123. package/dist/lib/types/index.js +32 -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 +136 -0
  196. package/src/lib/types/export.types.ts +154 -0
  197. package/src/lib/types/index.ts +24 -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,136 @@
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, SelectMode } from '../features';
11
+ import { DataTableLoggingOptions } from '../utils/logger';
12
+
13
+ // Dynamic data management interfaces
14
+ // TableFilters now imported from types folder
15
+
16
+ export interface DataTableProps<T> {
17
+ // Core data props
18
+ // columns: DataTableColumn<T>[] | AccessorKeyColumnDef <T, string>[];
19
+ columns: ColumnDef<T, any>[];
20
+ data?: T[];
21
+ totalRow?: number;
22
+ idKey?: keyof T;
23
+ extraFilter?: ReactNode | null;
24
+ footerFilter?: ReactNode | null;
25
+
26
+ // Data management modes (MUI DataGrid style)
27
+ dataMode?: 'client' | 'server'; // Data management mode (default: 'client')
28
+ initialState?: Partial<TableState>;
29
+ initialLoadData?: boolean; // Initial load data (default: true)
30
+ onDataStateChange?: (filters: Partial<TableState>) => void; // Callback when any filter/state changes
31
+ onFetchData?: (filters: Partial<TableFilters>) => Promise<{ data: T[]; total: number }>;
32
+
33
+ // Simplified Export props
34
+ exportFilename?: string;
35
+ onExportProgress?: (progress: { processedRows?: number; totalRows?: number; percentage?: number }) => void;
36
+ onExportComplete?: (result: { success: boolean; filename: string; totalRows: number }) => void;
37
+ onExportError?: (error: { message: string; code: string }) => void;
38
+
39
+ // Server export callback - receives current table state/filters and selection data
40
+ onServerExport?: (filters?: Partial<TableState>, selection?: SelectionState) => Promise<{ data: any[]; total: number }>;
41
+
42
+ // Export cancellation callback - called when export is cancelled
43
+ onExportCancel?: () => void;
44
+
45
+ // Selection props
46
+ enableRowSelection?: boolean | ((row: Row<T>) => boolean);
47
+ enableMultiRowSelection?: boolean;
48
+ selectMode?: SelectMode; // 'page' | 'all' - defines selection scope
49
+
50
+ // Row selection control (like MUI DataGrid)
51
+ isRowSelectable?: (params: { row: T; id: string }) => boolean;
52
+
53
+ onSelectionChange?: (selection: SelectionState) => void;
54
+
55
+ // Row click props
56
+ onRowClick?: (event: React.MouseEvent<HTMLTableRowElement>, row: Row<T>) => void;
57
+ selectOnRowClick?: boolean; // If true, row click will toggle selection (default: false)
58
+
59
+ // Bulk action props
60
+ enableBulkActions?: boolean;
61
+ bulkActions?: (selectionState: SelectionState) => ReactNode;
62
+
63
+ // Column resizing props
64
+ enableColumnResizing?: boolean;
65
+ columnResizeMode?: ColumnResizeMode;
66
+ onColumnSizingChange?: (sizing: Record<string, number>) => void;
67
+
68
+ // Column ordering props
69
+ enableColumnDragging?: boolean;
70
+ onColumnDragEnd?: (columnOrder: string[]) => void;
71
+
72
+ // Column pinning props
73
+ enableColumnPinning?: boolean;
74
+ onColumnPinningChange?: (pinning: ColumnPinningState) => void;
75
+
76
+ // Column visibility props
77
+ enableColumnVisibility?: boolean;
78
+ onColumnVisibilityChange?: (visibility: Record<string, boolean>) => void;
79
+
80
+ // Expandable rows props
81
+ enableExpanding?: boolean;
82
+ getRowCanExpand?: (row: Row<T>) => boolean;
83
+ renderSubComponent?: (row: Row<T>) => ReactNode;
84
+
85
+ // Pagination props
86
+ enablePagination?: boolean;
87
+ paginationMode?: 'client' | 'server'; // Pagination mode (default: 'client')
88
+
89
+ // Filtering props
90
+ enableGlobalFilter?: boolean;
91
+ enableColumnFilter?: boolean;
92
+ filterMode?: 'client' | 'server'; // Filtering mode (default: 'client')
93
+
94
+ // Sorting props
95
+ enableSorting?: boolean;
96
+ sortingMode?: 'client' | 'server'; // Sorting mode (default: 'client')
97
+ onSortingChange?: (sorting: SortingState) => void;
98
+
99
+ // Styling props
100
+ enableHover?: boolean;
101
+ enableStripes?: boolean;
102
+ tableContainerProps?: any;
103
+ tableProps?: any;
104
+ fitToScreen?: boolean;
105
+ tableSize?: DataTableSize;
106
+
107
+ // Sticky header/footer props
108
+ enableStickyHeaderOrFooter?: boolean;
109
+ maxHeight?: string | number;
110
+
111
+ // Virtualization props
112
+ enableVirtualization?: boolean;
113
+ estimateRowHeight?: number;
114
+
115
+ // Toolbar props
116
+ enableTableSizeControl?: boolean;
117
+ enableExport?: boolean;
118
+ enableReset?: boolean;
119
+
120
+ // Loading and empty states
121
+ loading?: boolean;
122
+ emptyMessage?: string | ReactNode;
123
+ skeletonRows?: number;
124
+
125
+ // Column filters props
126
+ onColumnFiltersChange?: (filterState: ColumnFilterState) => void;
127
+ onPaginationChange?: (pagination: PaginationState) => void;
128
+ onGlobalFilterChange?: (globalFilter: string) => void;
129
+ onColumnFilterChange?: (columnFilter: ColumnFilterState) => void;
130
+ // Slots for component customization (similar to MUI DataGrid)
131
+ slots?: Partial<DataTableSlots<T>>;
132
+ slotProps?: PartialSlotProps<T>;
133
+
134
+ // Logging configuration
135
+ logging?: boolean | DataTableLoggingOptions;
136
+ }
@@ -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,24 @@
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
+ // DataTable types
22
+ export * from './data-table.types';
23
+ // Re-export commonly used types for convenience
24
+ export type { DataTableApi } from './data-table-api';