@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
@@ -1,42 +1,80 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.DraggableHeaderMemo = void 0;
4
37
  exports.DraggableHeader = DraggableHeader;
5
- const tslib_1 = require("tslib");
6
38
  const jsx_runtime_1 = require("react/jsx-runtime");
7
39
  const icons_material_1 = require("@mui/icons-material");
8
40
  const material_1 = require("@mui/material");
9
41
  const react_table_1 = require("@tanstack/react-table");
10
- const react_1 = tslib_1.__importStar(require("react"));
42
+ const react_1 = __importStar(require("react"));
11
43
  const slot_helpers_1 = require("../../utils/slot-helpers");
12
44
  function DraggableHeader(props) {
13
- const { header, enableSorting = true, draggable = false, onColumnReorder, containerSx, sortIconProps, alignment, slots, slotProps } = props, otherProps = tslib_1.__rest(props, ["header", "enableSorting", "draggable", "onColumnReorder", "containerSx", "sortIconProps", "alignment", "slots", "slotProps"]);
45
+ const { header, enableSorting = true, draggable = false, onColumnReorder, containerSx, sortIconProps, alignment, slots, slotProps, ...otherProps } = props;
14
46
  const [isDragging, setIsDragging] = (0, react_1.useState)(false);
15
47
  const [dragOver, setDragOver] = (0, react_1.useState)(false);
16
48
  const autoScrollIntervalRef = (0, react_1.useRef)(null);
17
49
  const dragStartPositionRef = (0, react_1.useRef)(null);
18
50
  const headerElementRef = (0, react_1.useRef)(null);
51
+ // Extract slot-specific props with enhanced merging
19
52
  const sortIconAscSlotProps = (0, slot_helpers_1.extractSlotProps)(slotProps, 'sortIconAsc');
20
53
  const sortIconDescSlotProps = (0, slot_helpers_1.extractSlotProps)(slotProps, 'sortIconDesc');
21
54
  const SortIconAscSlot = (0, slot_helpers_1.getSlotComponent)(slots, 'sortIconAsc', icons_material_1.ArrowUpwardOutlined);
22
55
  const SortIconDescSlot = (0, slot_helpers_1.getSlotComponent)(slots, 'sortIconDesc', icons_material_1.ArrowDownwardOutlined);
23
- const AUTO_SCROLL_THRESHOLD = 50;
24
- const AUTO_SCROLL_SPEED = 10;
25
- const AUTO_SCROLL_INTERVAL = 16;
56
+ // Auto-scroll configuration
57
+ const AUTO_SCROLL_THRESHOLD = 50; // Distance from edge to trigger scroll
58
+ const AUTO_SCROLL_SPEED = 10; // Pixels per scroll interval
59
+ const AUTO_SCROLL_INTERVAL = 16; // ~60fps
26
60
  const justifyContent = (0, react_1.useMemo)(() => {
27
61
  return alignment === 'left' ? 'flex-start' : alignment === 'right' ? 'flex-end' : 'center';
28
62
  }, [alignment]);
29
63
  const findScrollableContainer = (0, react_1.useCallback)((element) => {
64
+ // Start from the provided element or try to find the current table
30
65
  let searchElement = element;
31
66
  if (!searchElement) {
67
+ // Start from the header element if available
32
68
  if (headerElementRef.current) {
33
69
  searchElement = headerElementRef.current.closest('table');
34
70
  }
35
71
  }
36
72
  if (!searchElement) {
73
+ // Find the table that contains our header
37
74
  const tables = Array.from(document.querySelectorAll('table'));
38
75
  for (const table of tables) {
39
- const headerExists = table.querySelector('th');
76
+ // Check if this table contains a header with our ID
77
+ const headerExists = table.querySelector('th'); // fallback
40
78
  if (headerExists) {
41
79
  searchElement = table;
42
80
  break;
@@ -44,10 +82,12 @@ function DraggableHeader(props) {
44
82
  }
45
83
  }
46
84
  if (!searchElement) {
85
+ // Last resort: use the first table found
47
86
  searchElement = document.querySelector('table');
48
87
  }
49
88
  if (!searchElement)
50
89
  return null;
90
+ // Walk up the DOM tree to find the scrollable container
51
91
  let container = searchElement;
52
92
  while (container && container !== document.body) {
53
93
  const styles = window.getComputedStyle(container);
@@ -68,6 +108,7 @@ function DraggableHeader(props) {
68
108
  autoScrollIntervalRef.current = setInterval(() => {
69
109
  const scrollAmount = direction === 'left' ? -AUTO_SCROLL_SPEED : AUTO_SCROLL_SPEED;
70
110
  const newScrollLeft = container.scrollLeft + scrollAmount;
111
+ // Check bounds
71
112
  if (direction === 'left' && newScrollLeft <= 0) {
72
113
  container.scrollLeft = 0;
73
114
  clearInterval(autoScrollIntervalRef.current);
@@ -126,12 +167,14 @@ function DraggableHeader(props) {
126
167
  const mergedSortIconProps = (0, slot_helpers_1.mergeSlotProps)({
127
168
  fontSize: 'small',
128
169
  }, sortIconProps || {});
170
+ // Only show icons when column is actually sorted
129
171
  if (sortDirection === 'asc') {
130
- return ((0, jsx_runtime_1.jsx)(SortIconAscSlot, Object.assign({}, (0, slot_helpers_1.mergeSlotProps)(mergedSortIconProps, sortIconAscSlotProps))));
172
+ return ((0, jsx_runtime_1.jsx)(SortIconAscSlot, { ...(0, slot_helpers_1.mergeSlotProps)(mergedSortIconProps, sortIconAscSlotProps) }));
131
173
  }
132
174
  if (sortDirection === 'desc') {
133
- return ((0, jsx_runtime_1.jsx)(SortIconDescSlot, Object.assign({}, (0, slot_helpers_1.mergeSlotProps)(mergedSortIconProps, sortIconDescSlotProps))));
175
+ return ((0, jsx_runtime_1.jsx)(SortIconDescSlot, { ...(0, slot_helpers_1.mergeSlotProps)(mergedSortIconProps, sortIconDescSlotProps) }));
134
176
  }
177
+ // Don't show any icon when not sorted
135
178
  return null;
136
179
  };
137
180
  const handleDragEnd = () => {
@@ -146,10 +189,12 @@ function DraggableHeader(props) {
146
189
  e.preventDefault();
147
190
  e.dataTransfer.dropEffect = 'move';
148
191
  setDragOver(true);
192
+ // Check for auto-scroll during drag over
149
193
  checkAutoScroll(e.clientX);
150
194
  };
151
195
  const handleDragLeave = () => {
152
196
  setDragOver(false);
197
+ // Don't stop auto-scroll on drag leave as the drag might continue outside this element
153
198
  };
154
199
  const handleDrop = (e) => {
155
200
  if (!draggable)
@@ -167,13 +212,13 @@ function DraggableHeader(props) {
167
212
  return;
168
213
  const currentSort = header.column.getIsSorted();
169
214
  if (currentSort === false) {
170
- header.column.toggleSorting(false);
215
+ header.column.toggleSorting(false); // asc
171
216
  }
172
217
  else if (currentSort === 'asc') {
173
- header.column.toggleSorting(true);
218
+ header.column.toggleSorting(true); // desc
174
219
  }
175
220
  else {
176
- header.column.clearSorting();
221
+ header.column.clearSorting(); // none
177
222
  }
178
223
  };
179
224
  const getCursor = () => {
@@ -183,18 +228,36 @@ function DraggableHeader(props) {
183
228
  return 'pointer';
184
229
  return 'default';
185
230
  };
231
+ // Merge all props for maximum flexibility
186
232
  const mergedContainerProps = (0, slot_helpers_1.mergeSlotProps)({
187
233
  ref: headerElementRef,
188
- sx: Object.assign({ display: 'flex', alignItems: 'center', justifyContent: justifyContent, gap: 1, cursor: getCursor(), userSelect: 'none', opacity: isDragging ? 0.5 : 1, backgroundColor: dragOver ? 'rgba(25, 118, 210, 0.08)' : 'transparent', borderLeft: dragOver ? '2px solid #1976d2' : 'none', padding: dragOver ? '0 0 0 -2px' : '0', width: '100%', height: '100%', minWidth: '0', '&:active': {
234
+ sx: {
235
+ display: 'flex',
236
+ alignItems: 'center',
237
+ justifyContent: justifyContent,
238
+ gap: 1,
239
+ cursor: getCursor(),
240
+ userSelect: 'none',
241
+ opacity: isDragging ? 0.5 : 1,
242
+ backgroundColor: dragOver ? 'rgba(25, 118, 210, 0.08)' : 'transparent',
243
+ borderLeft: dragOver ? '2px solid #1976d2' : 'none',
244
+ padding: dragOver ? '0 0 0 -2px' : '0',
245
+ width: '100%',
246
+ height: '100%',
247
+ minWidth: '0',
248
+ '&:active': {
189
249
  cursor: draggable ? 'grabbing' : 'pointer',
190
- }, '.header-content': {
250
+ },
251
+ '.header-content': {
191
252
  display: 'block',
192
253
  flex: 1,
193
254
  minWidth: 0,
194
255
  overflow: 'hidden',
195
256
  whiteSpace: 'nowrap',
196
257
  textOverflow: 'ellipsis',
197
- } }, containerSx),
258
+ },
259
+ ...containerSx,
260
+ },
198
261
  draggable: draggable,
199
262
  onDragStart: handleDragStart,
200
263
  onDrag: handleDrag,
@@ -207,9 +270,10 @@ function DraggableHeader(props) {
207
270
  if (!draggable && !enableSorting) {
208
271
  return (0, react_table_1.flexRender)(header.column.columnDef.header, header.getContext());
209
272
  }
210
- return ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({}, mergedContainerProps, { children: (0, jsx_runtime_1.jsxs)(material_1.Box, { component: "span", className: 'header-wrapper', sx: {
273
+ return ((0, jsx_runtime_1.jsx)(material_1.Box, { ...mergedContainerProps, children: (0, jsx_runtime_1.jsxs)(material_1.Box, { component: "span", className: 'header-wrapper', sx: {
211
274
  display: 'inline-flex',
212
275
  gap: 1,
213
- }, children: [(0, jsx_runtime_1.jsx)(material_1.Box, { component: "span", className: 'header-content', children: (0, react_table_1.flexRender)(header.column.columnDef.header, header.getContext()) }), getSortIcon()] }) })));
276
+ }, children: [(0, jsx_runtime_1.jsx)(material_1.Box, { component: "span", className: 'header-content', children: (0, react_table_1.flexRender)(header.column.columnDef.header, header.getContext()) }), getSortIcon()] }) }));
214
277
  }
278
+ // Memoize component to prevent unnecessary re-renders
215
279
  exports.DraggableHeaderMemo = react_1.default.memo(DraggableHeader);
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Header components for DataTable
3
+ */
4
+ export * from './table-header';
5
+ export * from './draggable-header';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/headers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * Header components for DataTable
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./table-header"), exports);
21
+ __exportStar(require("./draggable-header"), exports);
@@ -1,3 +1,13 @@
1
+ /**
2
+ * TableHeader Component
3
+ *
4
+ * Unified header component that combines:
5
+ * - Sortable functionality
6
+ * - Draggable column reordering
7
+ * - Column resizing
8
+ * - Pinning support
9
+ */
10
+ import { ReactElement } from 'react';
1
11
  import { TableHeadProps, TableRowProps, TableCellProps, SxProps } from '@mui/material';
2
12
  export interface TableHeaderProps extends TableHeadProps {
3
13
  draggable?: boolean;
@@ -13,4 +23,8 @@ export interface TableHeaderProps extends TableHeadProps {
13
23
  slotProps?: Record<string, any>;
14
24
  [key: string]: any;
15
25
  }
16
- export declare function TableHeader<T>(props: TableHeaderProps): import("react/jsx-runtime").JSX.Element;
26
+ /**
27
+ * Renders table headers with sorting, dragging, and resizing capabilities
28
+ */
29
+ export declare function TableHeader<T>(props: TableHeaderProps): ReactElement;
30
+ //# sourceMappingURL=table-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-header.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/headers/table-header.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAiD,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQtI,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5E,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAuIpE"}
@@ -1,23 +1,40 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.TableHeader = TableHeader;
4
- const tslib_1 = require("tslib");
5
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
+ /**
9
+ * TableHeader Component
10
+ *
11
+ * Unified header component that combines:
12
+ * - Sortable functionality
13
+ * - Draggable column reordering
14
+ * - Column resizing
15
+ * - Pinning support
16
+ */
17
+ const react_1 = __importDefault(require("react"));
6
18
  const material_1 = require("@mui/material");
7
19
  const draggable_header_1 = require("./draggable-header");
8
20
  const data_table_context_1 = require("../../contexts/data-table-context");
9
21
  const utils_1 = require("../../utils");
10
22
  const slot_helpers_1 = require("../../utils/slot-helpers");
23
+ /**
24
+ * Renders table headers with sorting, dragging, and resizing capabilities
25
+ */
11
26
  function TableHeader(props) {
12
- const { draggable = false, enableColumnResizing = false, enableStickyHeader = false, fitToScreen = true, onColumnReorder, headerRowProps, headerCellProps, containerSx, resizeHandleSx, slots, slotProps } = props, otherProps = tslib_1.__rest(props, ["draggable", "enableColumnResizing", "enableStickyHeader", "fitToScreen", "onColumnReorder", "headerRowProps", "headerCellProps", "containerSx", "resizeHandleSx", "slots", "slotProps"]);
27
+ const { draggable = false, enableColumnResizing = false, enableStickyHeader = false, fitToScreen = true, onColumnReorder, headerRowProps, headerCellProps, containerSx, resizeHandleSx, slots, slotProps, ...otherProps } = props;
13
28
  const theme = (0, material_1.useTheme)();
14
29
  const { table } = (0, data_table_context_1.useDataTableContext)();
30
+ // Extract slot-specific props with enhanced merging
15
31
  const headerCellSlotProps = (0, slot_helpers_1.extractSlotProps)(slotProps, 'headerCell');
16
32
  const headerRowSlotProps = (0, slot_helpers_1.extractSlotProps)(slotProps, 'headerRow');
17
33
  const headerSlotProps = (0, slot_helpers_1.extractSlotProps)(slotProps, 'header');
18
34
  const HeaderCellSlot = (0, slot_helpers_1.getSlotComponent)(slots, 'headerCell', material_1.TableCell);
19
35
  const HeaderRowSlot = (0, slot_helpers_1.getSlotComponent)(slots, 'headerRow', material_1.TableRow);
20
36
  const HeaderSlot = (0, slot_helpers_1.getSlotComponent)(slots, 'header', material_1.TableHead);
37
+ // Merge all props for maximum flexibility
21
38
  const mergedHeaderProps = (0, slot_helpers_1.mergeSlotProps)({
22
39
  sx: containerSx,
23
40
  }, headerSlotProps, otherProps);
@@ -30,28 +47,44 @@ function TableHeader(props) {
30
47
  const alignment = (0, utils_1.getColumnAlignment)(header.column.columnDef);
31
48
  const enableSorting = header.column.getCanSort();
32
49
  const wrapText = (_a = header.column.columnDef.wrapText) !== null && _a !== void 0 ? _a : false;
50
+ const canResize = enableColumnResizing && header.column.getCanResize();
33
51
  const mergedHeaderCellProps = (0, slot_helpers_1.mergeSlotProps)({
34
52
  align: alignment,
35
- sx: Object.assign({}, (0, utils_1.getPinnedColumnStyle)({
36
- width: (fitToScreen && !enableColumnResizing) ? 'auto' : header.getSize(),
37
- isPinned,
38
- pinnedPosition,
39
- isLastLeftPinnedColumn: isPinned === 'left' && header.column.getIsLastColumn('left'),
40
- isFirstRightPinnedColumn: isPinned === 'right' && header.column.getIsFirstColumn('right'),
41
- pinnedRightPosition,
42
- zIndex: isPinned ? 10 : 1,
43
- disableStickyHeader: enableStickyHeader,
44
- wrapText,
45
- })),
53
+ sx: {
54
+ ...(0, utils_1.getPinnedColumnStyle)({
55
+ width: (fitToScreen && !enableColumnResizing) ? 'auto' : header.getSize(),
56
+ isPinned,
57
+ pinnedPosition,
58
+ isLastLeftPinnedColumn: isPinned === 'left' && header.column.getIsLastColumn('left'),
59
+ isFirstRightPinnedColumn: isPinned === 'right' && header.column.getIsFirstColumn('right'),
60
+ pinnedRightPosition,
61
+ zIndex: isPinned ? 10 : 1,
62
+ disableStickyHeader: enableStickyHeader,
63
+ wrapText,
64
+ }),
65
+ },
46
66
  }, headerCellSlotProps, headerCellProps || {});
47
67
  const mergedResizeHandleProps = (0, slot_helpers_1.mergeSlotProps)({
48
68
  onMouseDown: header.getResizeHandler(),
49
69
  onTouchStart: header.getResizeHandler(),
50
- sx: Object.assign({ position: 'absolute', right: 0, top: '25%', height: '50%', width: '3px', cursor: 'col-resize', userSelect: 'none', touchAction: 'none', borderRadius: '4px', backgroundColor: header.column.getIsResizing() ? 'primary.main' : theme.palette.grey[300], '&:hover': {
70
+ sx: {
71
+ position: 'absolute',
72
+ right: 0,
73
+ top: '25%',
74
+ height: '50%',
75
+ width: '3px',
76
+ cursor: 'col-resize',
77
+ userSelect: 'none',
78
+ touchAction: 'none',
79
+ borderRadius: '4px',
80
+ backgroundColor: header.column.getIsResizing() ? 'primary.main' : theme.palette.grey[300],
81
+ '&:hover': {
51
82
  backgroundColor: theme.palette.primary.main,
52
- } }, resizeHandleSx),
83
+ },
84
+ ...resizeHandleSx,
85
+ },
53
86
  });
54
- return ((0, jsx_runtime_1.jsxs)(HeaderCellSlot, Object.assign({}, mergedHeaderCellProps, { children: [(0, jsx_runtime_1.jsx)(draggable_header_1.DraggableHeader, { header: header, enableSorting: enableSorting, draggable: !!(draggable && !isPinned), onColumnReorder: onColumnReorder, slots: slots, slotProps: slotProps, alignment: alignment }), enableColumnResizing && header.column.getCanResize() ? ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({}, mergedResizeHandleProps))) : null] }), header.id));
87
+ return ((0, jsx_runtime_1.jsxs)(HeaderCellSlot, { ...mergedHeaderCellProps, children: [(0, jsx_runtime_1.jsx)(draggable_header_1.DraggableHeader, { header: header, enableSorting: enableSorting, draggable: !!(draggable && !isPinned), onColumnReorder: onColumnReorder, slots: slots, slotProps: slotProps, alignment: alignment }), canResize ? ((0, jsx_runtime_1.jsx)(material_1.Box, { ...mergedResizeHandleProps })) : null] }, header.id));
55
88
  };
56
- return ((0, jsx_runtime_1.jsx)(HeaderSlot, Object.assign({}, mergedHeaderProps, { children: table.getHeaderGroups().map(headerGroup => ((0, jsx_runtime_1.jsx)(HeaderRowSlot, Object.assign({}, mergedHeaderRowProps, { children: headerGroup.headers.map(renderHeaderCell) }), headerGroup.id))) })));
89
+ return ((0, jsx_runtime_1.jsx)(HeaderSlot, { ...mergedHeaderProps, children: table.getHeaderGroups().map(headerGroup => ((0, jsx_runtime_1.jsx)(HeaderRowSlot, { ...mergedHeaderRowProps, children: headerGroup.headers.map(renderHeaderCell) }, headerGroup.id))) }));
57
90
  }
@@ -1,7 +1,12 @@
1
- export * from './table';
1
+ /**
2
+ * DataTable Components
3
+ *
4
+ * Organized component exports for the MUI TanStack DataTable
5
+ */
2
6
  export * from './headers';
3
7
  export * from './rows';
4
8
  export * from './toolbar';
5
9
  export * from './filters';
6
10
  export * from './pagination';
7
11
  export * from './droupdown/menu-dropdown';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,WAAW,CAAC;AAG1B,cAAc,QAAQ,CAAC;AAGvB,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAI1B,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /**
18
+ * DataTable Components
19
+ *
20
+ * Organized component exports for the MUI TanStack DataTable
21
+ */
22
+ // Header components
23
+ __exportStar(require("./headers"), exports);
24
+ // Row components
25
+ __exportStar(require("./rows"), exports);
26
+ // Toolbar components
27
+ __exportStar(require("./toolbar"), exports);
28
+ // Filter components
29
+ __exportStar(require("./filters"), exports);
30
+ // Pagination components
31
+ __exportStar(require("./pagination"), exports);
32
+ __exportStar(require("./droupdown/menu-dropdown"), exports);
@@ -14,4 +14,5 @@ export interface DataTablePaginationProps extends Omit<TablePaginationProps, 'co
14
14
  slotProps?: Record<string, any>;
15
15
  [key: string]: any;
16
16
  }
17
- export declare const DataTablePagination: import("react").MemoExoticComponent<(props: DataTablePaginationProps) => import("react/jsx-runtime").JSX.Element>;
17
+ export declare const DataTablePagination: any;
18
+ //# sourceMappingURL=data-table-pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-pagination.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/pagination/data-table-pagination.tsx"],"names":[],"mappings":"AACA,OAAO,EAAwB,oBAAoB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAQ,SAAS,EAAE,MAAM,OAAO,CAAC;AAKxC,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,cAAc,GAAG,qBAAqB,CAAC;IACnJ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB,KAyE9B,CAAC"}
@@ -1,28 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataTablePagination = void 0;
4
- const tslib_1 = require("tslib");
5
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
+ // data-table-pagination.tsx
6
6
  const material_1 = require("@mui/material");
7
7
  const react_1 = require("react");
8
8
  const data_table_context_1 = require("../../contexts/data-table-context");
9
9
  const slot_helpers_1 = require("../../utils/slot-helpers");
10
10
  exports.DataTablePagination = (0, react_1.memo)((props) => {
11
- const { footerFilter = null, pagination, totalRow, containerSx, paginationProps, footerSx, slots, slotProps } = props, otherProps = tslib_1.__rest(props, ["footerFilter", "pagination", "totalRow", "containerSx", "paginationProps", "footerSx", "slots", "slotProps"]);
12
- const { table } = (0, data_table_context_1.useDataTableContext)();
11
+ const { footerFilter = null, pagination, totalRow, containerSx, paginationProps, footerSx, ...otherProps } = props;
12
+ const { table, tableSize } = (0, data_table_context_1.useDataTableContext)();
13
+ // Extract slot-specific props with enhanced merging
14
+ // const paginationSlotProps = extractSlotProps(slotProps, 'pagination');
15
+ // Merge all props for maximum flexibility
13
16
  const mergedContainerProps = (0, slot_helpers_1.mergeSlotProps)({
14
- sx: Object.assign({ display: 'flex', alignItems: 'center', gap: 1, justifyContent: 'space-between', px: 2 }, containerSx),
17
+ sx: {
18
+ display: 'flex',
19
+ alignItems: 'center',
20
+ gap: 1,
21
+ justifyContent: 'space-between',
22
+ px: 2,
23
+ ...containerSx,
24
+ },
15
25
  });
16
26
  const mergedPaginationProps = (0, slot_helpers_1.mergeSlotProps)({
17
27
  component: 'div',
28
+ size: tableSize === 'small' ? 'small' : 'medium',
18
29
  count: totalRow,
19
30
  rowsPerPage: pagination === null || pagination === void 0 ? void 0 : pagination.pageSize,
20
31
  page: pagination === null || pagination === void 0 ? void 0 : pagination.pageIndex,
21
32
  onPageChange: (_, page) => {
33
+ // Use TanStack Table's native pagination methods
22
34
  table.setPageIndex(page);
23
35
  },
24
36
  onRowsPerPageChange: (e) => {
25
37
  const newPageSize = Number(e.target.value);
38
+ // Use TanStack Table's native pagination methods
26
39
  table.setPageIndex(0);
27
40
  table.setPageSize(newPageSize);
28
41
  },
@@ -30,6 +43,7 @@ exports.DataTablePagination = (0, react_1.memo)((props) => {
30
43
  showLastButton: true,
31
44
  labelRowsPerPage: 'Rows per page:',
32
45
  labelDisplayedRows: ({ from, to, count }) => `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`,
33
- }, Object.assign(Object.assign({}, paginationProps), otherProps));
34
- return ((0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({}, mergedContainerProps, { children: [footerFilter && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: footerSx, children: footerFilter })), (0, jsx_runtime_1.jsx)(material_1.TablePagination, Object.assign({}, mergedPaginationProps))] })));
46
+ }, { ...paginationProps, ...otherProps });
47
+ return ((0, jsx_runtime_1.jsxs)(material_1.Box, { ...mergedContainerProps, children: [footerFilter && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: footerSx, children: footerFilter })), (0, jsx_runtime_1.jsx)(material_1.TablePagination, { ...mergedPaginationProps })] }));
35
48
  });
49
+ exports.DataTablePagination.displayName = 'DataTablePagination';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Pagination components for DataTable
3
+ */
4
+ export * from './data-table-pagination';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/pagination/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * Pagination components for DataTable
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./data-table-pagination"), exports);
@@ -1,6 +1,15 @@
1
+ /**
2
+ * DataTableRow Component
3
+ *
4
+ * Renders individual table rows with support for:
5
+ * - Column pinning
6
+ * - Row expansion
7
+ * - Hover effects
8
+ * - Striped styling
9
+ */
1
10
  import { TableRowProps, TableCellProps, SxProps } from '@mui/material';
2
11
  import { Row } from '@tanstack/react-table';
3
- import { ReactNode } from 'react';
12
+ import { ReactNode, ReactElement } from 'react';
4
13
  export interface DataTableRowProps<T> extends TableRowProps {
5
14
  row: Row<T>;
6
15
  enableHover?: boolean;
@@ -19,4 +28,8 @@ export interface DataTableRowProps<T> extends TableRowProps {
19
28
  slotProps?: Record<string, any>;
20
29
  [key: string]: any;
21
30
  }
22
- export declare function DataTableRow<T>(props: DataTableRowProps<T>): import("react/jsx-runtime").JSX.Element;
31
+ /**
32
+ * Individual table row component with cell rendering and expansion support
33
+ */
34
+ export declare function DataTableRow<T>(props: DataTableRowProps<T>): ReactElement;
35
+ //# sourceMappingURL=data-table-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-row.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/rows/data-table-row.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAiC,aAAa,EAAE,cAAc,EAAE,OAAO,EAAmB,MAAM,eAAe,CAAC;AACvH,OAAO,EAAc,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMhD,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,aAAa;IACvD,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IAChD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY,CAqKzE"}