@solidxai/core-ui 0.1.5-beta.1 → 0.1.5-beta.10

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 (239) hide show
  1. package/dist/components/auth/AuthTabs.d.ts +14 -0
  2. package/dist/components/auth/AuthTabs.d.ts.map +1 -0
  3. package/dist/components/auth/AuthTabs.js +19 -0
  4. package/dist/components/auth/AuthTabs.js.map +1 -0
  5. package/dist/components/auth/AuthTabs.tsx +38 -0
  6. package/dist/components/common/AuthBanner.js.map +1 -1
  7. package/dist/components/common/SolidErrorStatePage.d.ts +12 -0
  8. package/dist/components/common/SolidErrorStatePage.d.ts.map +1 -0
  9. package/dist/components/common/SolidErrorStatePage.js +16 -0
  10. package/dist/components/common/SolidErrorStatePage.js.map +1 -0
  11. package/dist/components/common/SolidErrorStatePage.tsx +55 -0
  12. package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
  13. package/dist/components/core/chatter/SolidChatter.js +5 -2
  14. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  15. package/dist/components/core/chatter/SolidChatter.tsx +5 -2
  16. package/dist/components/core/chatter/SolidChatterAuditMessage.d.ts +5 -2
  17. package/dist/components/core/chatter/SolidChatterAuditMessage.d.ts.map +1 -1
  18. package/dist/components/core/chatter/SolidChatterAuditMessage.js +19 -1
  19. package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
  20. package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +29 -5
  21. package/dist/components/core/chatter/SolidChatterDateDivider.d.ts.map +1 -1
  22. package/dist/components/core/chatter/SolidChatterDateDivider.js +4 -1
  23. package/dist/components/core/chatter/SolidChatterDateDivider.js.map +1 -1
  24. package/dist/components/core/chatter/SolidChatterDateDivider.tsx +5 -1
  25. package/dist/components/core/common/SolidCreateButton.js +3 -3
  26. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  27. package/dist/components/core/common/SolidCreateButton.tsx +3 -3
  28. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  29. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  30. package/dist/components/core/common/SolidGlobalSearchElement.tsx +1 -0
  31. package/dist/components/core/dashboard/DashboardFilter.d.ts +13 -0
  32. package/dist/components/core/dashboard/DashboardFilter.d.ts.map +1 -0
  33. package/dist/components/core/dashboard/DashboardFilter.js +305 -0
  34. package/dist/components/core/dashboard/DashboardFilter.js.map +1 -0
  35. package/dist/components/core/dashboard/DashboardFilter.tsx +356 -0
  36. package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts +3 -0
  37. package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts.map +1 -0
  38. package/dist/components/core/dashboard/PrimeDataTableWrapper.js +21 -0
  39. package/dist/components/core/dashboard/PrimeDataTableWrapper.js.map +1 -0
  40. package/dist/components/core/dashboard/PrimeDataTableWrapper.tsx +40 -0
  41. package/dist/components/core/dashboard/SolidDashboard.d.ts +0 -1
  42. package/dist/components/core/dashboard/SolidDashboard.d.ts.map +1 -1
  43. package/dist/components/core/dashboard/SolidDashboard.js +51 -22
  44. package/dist/components/core/dashboard/SolidDashboard.js.map +1 -1
  45. package/dist/components/core/dashboard/SolidDashboard.module.css +6 -2
  46. package/dist/components/core/dashboard/SolidDashboard.tsx +133 -56
  47. package/dist/components/core/dashboard/SolidDashboardBody.d.ts +13 -1
  48. package/dist/components/core/dashboard/SolidDashboardBody.d.ts.map +1 -1
  49. package/dist/components/core/dashboard/SolidDashboardBody.js +134 -48
  50. package/dist/components/core/dashboard/SolidDashboardBody.js.map +1 -1
  51. package/dist/components/core/dashboard/SolidDashboardBody.tsx +143 -91
  52. package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts.map +1 -1
  53. package/dist/components/core/dashboard/SolidQuestionRenderer.js +1 -1
  54. package/dist/components/core/dashboard/SolidQuestionRenderer.js.map +1 -1
  55. package/dist/components/core/dashboard/SolidQuestionRenderer.tsx +12 -10
  56. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts.map +1 -1
  57. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js +29 -2
  58. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js.map +1 -1
  59. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +33 -3
  60. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts +10 -0
  61. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts.map +1 -0
  62. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js +16 -0
  63. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js.map +1 -0
  64. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.ts +19 -0
  65. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts +8 -0
  66. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts.map +1 -0
  67. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js +64 -0
  68. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js.map +1 -0
  69. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.ts +30 -0
  70. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts +8 -0
  71. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts.map +1 -0
  72. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js +62 -0
  73. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js.map +1 -0
  74. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.ts +29 -0
  75. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +2 -2
  76. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  77. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +2 -2
  78. package/dist/components/core/form/SolidFormView.js +1 -1
  79. package/dist/components/core/form/SolidFormView.js.map +1 -1
  80. package/dist/components/core/form/SolidFormView.tsx +1 -1
  81. package/dist/components/core/kanban/SolidKanbanView.js +2 -2
  82. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  83. package/dist/components/core/kanban/SolidKanbanView.tsx +2 -2
  84. package/dist/components/core/list/PLAN.md +92 -0
  85. package/dist/components/core/list/SolidDataTable.d.ts +58 -0
  86. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -0
  87. package/dist/components/core/list/SolidDataTable.js +141 -0
  88. package/dist/components/core/list/SolidDataTable.js.map +1 -0
  89. package/dist/components/core/list/SolidDataTable.tsx +314 -0
  90. package/dist/components/core/list/SolidDataTablePagination.d.ts +15 -0
  91. package/dist/components/core/list/SolidDataTablePagination.d.ts.map +1 -0
  92. package/dist/components/core/list/SolidDataTablePagination.js +22 -0
  93. package/dist/components/core/list/SolidDataTablePagination.js.map +1 -0
  94. package/dist/components/core/list/SolidDataTablePagination.tsx +71 -0
  95. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  96. package/dist/components/core/list/SolidListView.js +14 -11
  97. package/dist/components/core/list/SolidListView.js.map +1 -1
  98. package/dist/components/core/list/SolidListView.tsx +8 -7
  99. package/dist/components/core/list/columns/SolidDateColumn.d.ts +2 -0
  100. package/dist/components/core/list/columns/SolidDateColumn.d.ts.map +1 -1
  101. package/dist/components/core/list/columns/SolidDateColumn.js +9 -1
  102. package/dist/components/core/list/columns/SolidDateColumn.js.map +1 -1
  103. package/dist/components/core/list/columns/SolidDateColumn.tsx +13 -1
  104. package/dist/components/core/list/columns/SolidDatetimeColumn.js +1 -1
  105. package/dist/components/core/list/columns/SolidDatetimeColumn.js.map +1 -1
  106. package/dist/components/core/list/columns/SolidDatetimeColumn.tsx +1 -1
  107. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  108. package/dist/components/core/tree/SolidTreeView.js +277 -43
  109. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  110. package/dist/components/core/tree/SolidTreeView.tsx +436 -4
  111. package/dist/components/layout/AdminTopHeader.d.ts +2 -0
  112. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -0
  113. package/dist/components/layout/AdminTopHeader.js +68 -0
  114. package/dist/components/layout/AdminTopHeader.js.map +1 -0
  115. package/dist/components/layout/AdminTopHeader.tsx +135 -0
  116. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts +24 -0
  117. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -0
  118. package/dist/components/shad-cn-ui/SolidAutocomplete.js +224 -0
  119. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -0
  120. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +339 -0
  121. package/dist/components/shad-cn-ui/SolidButton.d.ts +14 -0
  122. package/dist/components/shad-cn-ui/SolidButton.d.ts.map +1 -0
  123. package/dist/components/shad-cn-ui/SolidButton.js +36 -0
  124. package/dist/components/shad-cn-ui/SolidButton.js.map +1 -0
  125. package/dist/components/shad-cn-ui/SolidButton.tsx +54 -0
  126. package/dist/components/shad-cn-ui/SolidInput.d.ts +5 -0
  127. package/dist/components/shad-cn-ui/SolidInput.d.ts.map +1 -0
  128. package/dist/components/shad-cn-ui/SolidInput.js +35 -0
  129. package/dist/components/shad-cn-ui/SolidInput.js.map +1 -0
  130. package/dist/components/shad-cn-ui/SolidInput.tsx +12 -0
  131. package/dist/components/shad-cn-ui/SolidNumberInput.d.ts +10 -0
  132. package/dist/components/shad-cn-ui/SolidNumberInput.d.ts.map +1 -0
  133. package/dist/components/shad-cn-ui/SolidNumberInput.js +33 -0
  134. package/dist/components/shad-cn-ui/SolidNumberInput.js.map +1 -0
  135. package/dist/components/shad-cn-ui/SolidNumberInput.tsx +24 -0
  136. package/dist/components/shad-cn-ui/SolidSelect.d.ts +16 -0
  137. package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +1 -0
  138. package/dist/components/shad-cn-ui/SolidSelect.js +26 -0
  139. package/dist/components/shad-cn-ui/SolidSelect.js.map +1 -0
  140. package/dist/components/shad-cn-ui/SolidSelect.tsx +65 -0
  141. package/dist/components/shad-cn-ui/SolidTabs.d.ts +18 -0
  142. package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -0
  143. package/dist/components/shad-cn-ui/SolidTabs.js +22 -0
  144. package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -0
  145. package/dist/components/shad-cn-ui/SolidTabs.tsx +73 -0
  146. package/dist/components/shad-cn-ui/index.d.ts +7 -0
  147. package/dist/components/shad-cn-ui/index.d.ts.map +1 -0
  148. package/dist/components/shad-cn-ui/index.js +7 -0
  149. package/dist/components/shad-cn-ui/index.js.map +1 -0
  150. package/dist/components/shad-cn-ui/index.ts +6 -0
  151. package/dist/components/solid-ui/SolidButton.d.ts +14 -0
  152. package/dist/components/solid-ui/SolidButton.d.ts.map +1 -0
  153. package/dist/components/solid-ui/SolidButton.js +36 -0
  154. package/dist/components/solid-ui/SolidButton.js.map +1 -0
  155. package/dist/components/solid-ui/SolidButton.tsx +54 -0
  156. package/dist/components/solid-ui/SolidTabs.d.ts +18 -0
  157. package/dist/components/solid-ui/SolidTabs.d.ts.map +1 -0
  158. package/dist/components/solid-ui/SolidTabs.js +22 -0
  159. package/dist/components/solid-ui/SolidTabs.js.map +1 -0
  160. package/dist/components/solid-ui/SolidTabs.tsx +73 -0
  161. package/dist/components/solid-ui/index.d.ts +3 -0
  162. package/dist/components/solid-ui/index.d.ts.map +1 -0
  163. package/dist/components/solid-ui/index.js +3 -0
  164. package/dist/components/solid-ui/index.js.map +1 -0
  165. package/dist/components/solid-ui/index.ts +2 -0
  166. package/dist/constants/error-messages.d.ts +3 -0
  167. package/dist/constants/error-messages.d.ts.map +1 -1
  168. package/dist/constants/error-messages.js +3 -0
  169. package/dist/constants/error-messages.js.map +1 -1
  170. package/dist/constants/error-messages.ts +24 -20
  171. package/dist/helpers/registry.d.ts.map +1 -1
  172. package/dist/helpers/registry.js +10 -0
  173. package/dist/helpers/registry.js.map +1 -1
  174. package/dist/helpers/registry.ts +12 -0
  175. package/dist/helpers/routePaths.d.ts +1 -1
  176. package/dist/helpers/routePaths.d.ts.map +1 -1
  177. package/dist/helpers/routePaths.js +2 -2
  178. package/dist/helpers/routePaths.js.map +1 -1
  179. package/dist/helpers/routePaths.ts +2 -2
  180. package/dist/index.d.ts +2 -0
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +2 -0
  183. package/dist/index.js.map +1 -1
  184. package/dist/index.ts +8 -0
  185. package/dist/redux/api/dashboardLayoutApi.d.ts +24 -0
  186. package/dist/redux/api/dashboardLayoutApi.d.ts.map +1 -0
  187. package/dist/redux/api/dashboardLayoutApi.js +34 -0
  188. package/dist/redux/api/dashboardLayoutApi.js.map +1 -0
  189. package/dist/redux/api/dashboardLayoutApi.ts +55 -0
  190. package/dist/redux/store/defaultStoreConfig.d.ts +4 -0
  191. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  192. package/dist/redux/store/defaultStoreConfig.js +3 -2
  193. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  194. package/dist/redux/store/defaultStoreConfig.ts +4 -2
  195. package/dist/resources/globals.css +8 -0
  196. package/dist/resources/images/errors/error-astronaut-404.png +0 -0
  197. package/dist/resources/shadcn-base.css +3200 -0
  198. package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
  199. package/dist/routes/pages/admin/core/DashboardPage.js +3 -7
  200. package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
  201. package/dist/routes/pages/admin/core/DashboardPage.tsx +2 -5
  202. package/dist/routes/pages/admin/core/FormPage.d.ts.map +1 -1
  203. package/dist/routes/pages/admin/core/FormPage.js +6 -1
  204. package/dist/routes/pages/admin/core/FormPage.js.map +1 -1
  205. package/dist/routes/pages/admin/core/FormPage.tsx +7 -1
  206. package/dist/routes/solidRoutes.js +1 -1
  207. package/dist/routes/solidRoutes.js.map +1 -1
  208. package/dist/routes/solidRoutes.tsx +1 -1
  209. package/package.json +13 -11
  210. package/dist/components/auth/SolidOTPVerify.d.ts +0 -3
  211. package/dist/components/auth/SolidOTPVerify.d.ts.map +0 -1
  212. package/dist/components/auth/SolidOTPVerify.js +0 -67
  213. package/dist/components/auth/SolidOTPVerify.js.map +0 -1
  214. package/dist/components/auth/SolidOTPVerify.tsx +0 -133
  215. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +0 -2
  216. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +0 -1
  217. package/dist/components/core/common/LoadDynamicJsxComponent.js +0 -50
  218. package/dist/components/core/common/LoadDynamicJsxComponent.js.map +0 -1
  219. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +0 -70
  220. package/dist/nextAuth/authProviders.d.ts +0 -4
  221. package/dist/nextAuth/authProviders.d.ts.map +0 -1
  222. package/dist/nextAuth/authProviders.js +0 -198
  223. package/dist/nextAuth/authProviders.js.map +0 -1
  224. package/dist/nextAuth/authProviders.tsx +0 -232
  225. package/dist/nextAuth/handleLogout.d.ts +0 -2
  226. package/dist/nextAuth/handleLogout.d.ts.map +0 -1
  227. package/dist/nextAuth/handleLogout.js +0 -36
  228. package/dist/nextAuth/handleLogout.js.map +0 -1
  229. package/dist/nextAuth/handleLogout.tsx +0 -39
  230. package/dist/nextAuth/refreshAccessToken.d.ts +0 -2
  231. package/dist/nextAuth/refreshAccessToken.d.ts.map +0 -1
  232. package/dist/nextAuth/refreshAccessToken.js +0 -24
  233. package/dist/nextAuth/refreshAccessToken.js.map +0 -1
  234. package/dist/nextAuth/refreshAccessToken.tsx +0 -28
  235. package/dist/redux/features/settingsSlice.d.ts +0 -20
  236. package/dist/redux/features/settingsSlice.d.ts.map +0 -1
  237. package/dist/redux/features/settingsSlice.js +0 -39
  238. package/dist/redux/features/settingsSlice.js.map +0 -1
  239. package/dist/redux/features/settingsSlice.ts +0 -60
@@ -0,0 +1,141 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
+ import React from "react";
23
+ export function Column(_props) {
24
+ return null;
25
+ }
26
+ var cx = function () {
27
+ var parts = [];
28
+ for (var _i = 0; _i < arguments.length; _i++) {
29
+ parts[_i] = arguments[_i];
30
+ }
31
+ return parts.filter(Boolean).join(" ");
32
+ };
33
+ function renderHeaderNode(header) {
34
+ if (typeof header === "function")
35
+ return header();
36
+ return header !== null && header !== void 0 ? header : null;
37
+ }
38
+ function normalizeColumns(children) {
39
+ return React.Children.toArray(children).filter(function (child) {
40
+ return React.isValidElement(child);
41
+ });
42
+ }
43
+ function resolveSortIcon(active, order) {
44
+ if (!active || order === 0)
45
+ return "pi pi-sort-alt";
46
+ return order === 1 ? "pi pi-sort-amount-up-alt" : "pi pi-sort-amount-down";
47
+ }
48
+ function nextSortOrder(active, order, removableSort) {
49
+ if (removableSort === void 0) { removableSort = true; }
50
+ if (!active || order === 0)
51
+ return 1;
52
+ if (order === 1)
53
+ return -1;
54
+ return removableSort ? 0 : 1;
55
+ }
56
+ export function SolidDataTable(_a) {
57
+ var value = _a.value, children = _a.children, _b = _a.size, size = _b === void 0 ? "normal" : _b, viewportHeight = _a.viewportHeight, _c = _a.dataKey, dataKey = _c === void 0 ? "id" : _c, emptyMessage = _a.emptyMessage, _d = _a.rows, rows = _d === void 0 ? 25 : _d, _e = _a.first, first = _e === void 0 ? 0 : _e, _f = _a.totalRecords, totalRecords = _f === void 0 ? 0 : _f, _g = _a.rowsPerPageOptions, rowsPerPageOptions = _g === void 0 ? [10, 25, 50, 100] : _g, onPage = _a.onPage, onSort = _a.onSort, sortField = _a.sortField, _h = _a.sortOrder, sortOrder = _h === void 0 ? 0 : _h, _j = _a.removableSort, removableSort = _j === void 0 ? true : _j, _k = _a.selection, selection = _k === void 0 ? [] : _k, selectionMode = _a.selectionMode, onSelectionChange = _a.onSelectionChange, onRowClick = _a.onRowClick, rowClassName = _a.rowClassName, tableClassName = _a.tableClassName, paginatorClassName = _a.paginatorClassName, _l = _a.currentPageReportTemplate, currentPageReportTemplate = _l === void 0 ? "{first} - {last} of {totalRecords}" : _l;
58
+ var columns = normalizeColumns(children);
59
+ var pageRows = value !== null && value !== void 0 ? value : [];
60
+ var selectedKeys = new Set((selection || []).map(function (row) { return String(row === null || row === void 0 ? void 0 : row[dataKey]); }));
61
+ var allSelected = pageRows.length > 0 && pageRows.every(function (row) { return selectedKeys.has(String(row === null || row === void 0 ? void 0 : row[dataKey])); });
62
+ var start = totalRecords === 0 ? 0 : first + 1;
63
+ var end = Math.min(first + rows, totalRecords);
64
+ var currentPage = rows > 0 ? Math.floor(first / rows) + 1 : 1;
65
+ var totalPages = rows > 0 ? Math.max(1, Math.ceil(totalRecords / rows)) : 1;
66
+ var report = currentPageReportTemplate
67
+ .replace("{first}", String(start))
68
+ .replace("{last}", String(end))
69
+ .replace("{totalRecords}", String(totalRecords));
70
+ var emitSelection = function (nextSelection) {
71
+ onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange({ value: nextSelection });
72
+ };
73
+ var toggleSelectAll = function (checked) {
74
+ if (!checked) {
75
+ var pageKeys_1 = new Set(pageRows.map(function (row) { return String(row === null || row === void 0 ? void 0 : row[dataKey]); }));
76
+ emitSelection((selection || []).filter(function (row) { return !pageKeys_1.has(String(row === null || row === void 0 ? void 0 : row[dataKey])); }));
77
+ return;
78
+ }
79
+ var merged = __spreadArray([], (selection || []), true);
80
+ var mergedKeys = new Set(merged.map(function (row) { return String(row === null || row === void 0 ? void 0 : row[dataKey]); }));
81
+ pageRows.forEach(function (row) {
82
+ var key = String(row === null || row === void 0 ? void 0 : row[dataKey]);
83
+ if (!mergedKeys.has(key))
84
+ merged.push(row);
85
+ });
86
+ emitSelection(merged);
87
+ };
88
+ var toggleRowSelection = function (rowData, checked) {
89
+ var key = String(rowData === null || rowData === void 0 ? void 0 : rowData[dataKey]);
90
+ if (!checked) {
91
+ emitSelection((selection || []).filter(function (row) { return String(row === null || row === void 0 ? void 0 : row[dataKey]) !== key; }));
92
+ return;
93
+ }
94
+ emitSelection(__spreadArray(__spreadArray([], (selection || []), true), [rowData], false));
95
+ };
96
+ var densityClass = size === "small"
97
+ ? "solid-table-density-compact"
98
+ : size === "large"
99
+ ? "solid-table-density-comfortable"
100
+ : "solid-table-density-cozy";
101
+ return (_jsxs("div", { className: cx("solid-data-table-root w-full min-h-0", densityClass), style: {
102
+ height: viewportHeight || "100%",
103
+ maxHeight: viewportHeight || "100%",
104
+ }, children: [_jsx("div", { className: "solid-data-table-viewport min-h-0 rounded-md border border-border/60 bg-background", children: _jsxs("table", { className: cx("w-full text-sm border-collapse", tableClassName), children: [_jsx("thead", { className: "solid-data-table-head sticky top-0 z-2", children: _jsx("tr", { children: columns.map(function (column, index) {
105
+ var props = column.props;
106
+ var isSelectionColumn = props.selectionMode === "multiple";
107
+ var isSortable = Boolean(props.sortable && props.field && !isSelectionColumn);
108
+ var isActiveSort = isSortable && sortField === props.field;
109
+ var iconClass = resolveSortIcon(Boolean(isActiveSort), sortOrder);
110
+ return (_jsx("th", { className: cx("solid-data-table-th text-left text-foreground whitespace-nowrap", isSelectionColumn ? "solid-data-table-selection-col" : undefined, props.headerClassName), style: __assign(__assign({}, props.style), props.headerStyle), children: isSelectionColumn ? (_jsx("input", { type: "checkbox", checked: allSelected, onChange: function (e) { return toggleSelectAll(e.currentTarget.checked); }, "aria-label": "Select all rows" })) : (_jsxs("button", { type: "button", className: cx("solid-table-header-button", isSortable ? "is-sortable" : undefined), onClick: function () {
111
+ if (!isSortable)
112
+ return;
113
+ var nextOrder = nextSortOrder(Boolean(isActiveSort), sortOrder, removableSort);
114
+ onSort === null || onSort === void 0 ? void 0 : onSort({
115
+ sortField: nextOrder === 0 ? undefined : props.field,
116
+ sortOrder: nextOrder,
117
+ });
118
+ }, children: [renderHeaderNode(props.header), isSortable ? _jsx("i", { className: iconClass, "aria-hidden": "true" }) : null] })) }, "header-".concat(index)));
119
+ }) }) }), _jsx("tbody", { children: pageRows.length === 0 ? (_jsx("tr", { children: _jsx("td", { className: "px-3 py-6 text-center text-muted-foreground", colSpan: Math.max(columns.length, 1), children: emptyMessage || "No records found" }) })) : (pageRows.map(function (rowData) {
120
+ var key = String(rowData === null || rowData === void 0 ? void 0 : rowData[dataKey]);
121
+ var rowSelected = selectedKeys.has(key);
122
+ return (_jsx("tr", { className: cx("solid-data-table-row", rowClassName === null || rowClassName === void 0 ? void 0 : rowClassName(rowData)), onClick: function (event) {
123
+ var target = event.target;
124
+ if (target.closest("button,a,input,label,[data-no-row-click='true']"))
125
+ return;
126
+ onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick({ data: rowData });
127
+ }, children: columns.map(function (column, index) {
128
+ var props = column.props;
129
+ var isSelectionColumn = props.selectionMode === "multiple";
130
+ var content = isSelectionColumn
131
+ ? (_jsx("input", { type: "checkbox", checked: rowSelected, onChange: function (e) { return toggleRowSelection(rowData, e.currentTarget.checked); }, onClick: function (e) { return e.stopPropagation(); }, "aria-label": "Select row" }))
132
+ : props.body
133
+ ? props.body(rowData)
134
+ : props.field
135
+ ? rowData === null || rowData === void 0 ? void 0 : rowData[props.field]
136
+ : null;
137
+ return (_jsx("td", { className: cx("solid-data-table-td align-top text-foreground", isSelectionColumn ? "solid-data-table-selection-col" : undefined, props.className), style: props.style, children: content }, "cell-".concat(key, "-").concat(index)));
138
+ }) }, key));
139
+ })) })] }) }), typeof onPage === "function" ? (_jsxs("div", { className: cx("w-full solid-table-paginator solid-table-paginator-align-end flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background", paginatorClassName), children: [_jsxs("div", { className: "solid-paginator-meta flex items-center gap-2 ml-auto", children: [_jsx("span", { className: "solid-paginator-label", children: "Rows" }), _jsx("select", { value: rows, onChange: function (e) { return onPage({ first: 0, rows: Number(e.target.value) }); }, className: "solid-paginator-select", children: rowsPerPageOptions.map(function (option) { return (_jsx("option", { value: option, children: option }, option)); }) }), _jsx("span", { className: "solid-paginator-report", children: report })] }), _jsxs("div", { className: "solid-paginator-actions flex items-center gap-2", children: [_jsx("button", { type: "button", className: "solid-paginator-btn", onClick: function () { return onPage({ first: Math.max(0, first - rows), rows: rows }); }, disabled: currentPage <= 1, children: "Previous" }), _jsx("button", { type: "button", className: "solid-paginator-btn", onClick: function () { return onPage({ first: Math.min((totalPages - 1) * rows, first + rows), rows: rows }); }, disabled: currentPage >= totalPages, children: "Next" })] })] })) : null] }));
140
+ }
141
+ //# sourceMappingURL=SolidDataTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidDataTable.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nexport type DataTableStateEvent = {\n sortField?: string;\n sortOrder?: 1 | -1 | 0;\n};\n\ntype HeaderRenderer = React.ReactNode | (() => React.ReactNode);\ntype BodyRenderer = (rowData: any) => React.ReactNode;\n\nexport type SolidColumnProps = {\n field?: string;\n header?: HeaderRenderer;\n body?: BodyRenderer;\n sortable?: boolean;\n selectionMode?: \"multiple\" | \"single\" | null;\n headerStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n className?: string;\n headerClassName?: string;\n frozen?: boolean;\n alignFrozen?: \"left\" | \"right\";\n [key: string]: any;\n};\n\nexport function Column(_props: SolidColumnProps) {\n return null;\n}\n\ntype SolidDataTableProps = {\n value: any[];\n children: React.ReactNode;\n size?: \"small\" | \"normal\" | \"large\";\n viewportHeight?: string;\n dataKey?: string;\n emptyMessage?: React.ReactNode;\n rows?: number;\n first?: number;\n totalRecords?: number;\n rowsPerPageOptions?: number[];\n onPage?: (event: { first: number; rows: number }) => void;\n onSort?: (event: DataTableStateEvent) => void;\n sortField?: string;\n sortOrder?: 1 | -1 | 0;\n removableSort?: boolean;\n selection?: any[];\n selectionMode?: \"checkbox\" | null;\n onSelectionChange?: (event: { value: any[] }) => void;\n onRowClick?: (event: { data: any }) => void;\n rowClassName?: (rowData: any) => string;\n tableClassName?: string;\n paginatorClassName?: string;\n currentPageReportTemplate?: string;\n [key: string]: any;\n};\n\nconst cx = (...parts: Array<string | undefined | false>) => parts.filter(Boolean).join(\" \");\n\nfunction renderHeaderNode(header?: HeaderRenderer) {\n if (typeof header === \"function\") return header();\n return header ?? null;\n}\n\nfunction normalizeColumns(children: React.ReactNode): React.ReactElement<SolidColumnProps>[] {\n return React.Children.toArray(children).filter((child): child is React.ReactElement<SolidColumnProps> => {\n return React.isValidElement(child);\n });\n}\n\nfunction resolveSortIcon(active: boolean, order: 1 | -1 | 0): string {\n if (!active || order === 0) return \"pi pi-sort-alt\";\n return order === 1 ? \"pi pi-sort-amount-up-alt\" : \"pi pi-sort-amount-down\";\n}\n\nfunction nextSortOrder(active: boolean, order: 1 | -1 | 0, removableSort = true): 1 | -1 | 0 {\n if (!active || order === 0) return 1;\n if (order === 1) return -1;\n return removableSort ? 0 : 1;\n}\n\nexport function SolidDataTable({\n value,\n children,\n size = \"normal\",\n viewportHeight,\n dataKey = \"id\",\n emptyMessage,\n rows = 25,\n first = 0,\n totalRecords = 0,\n rowsPerPageOptions = [10, 25, 50, 100],\n onPage,\n onSort,\n sortField,\n sortOrder = 0,\n removableSort = true,\n selection = [],\n selectionMode,\n onSelectionChange,\n onRowClick,\n rowClassName,\n tableClassName,\n paginatorClassName,\n currentPageReportTemplate = \"{first} - {last} of {totalRecords}\",\n}: SolidDataTableProps) {\n const columns = normalizeColumns(children);\n const pageRows = value ?? [];\n\n const selectedKeys = new Set((selection || []).map((row: any) => String(row?.[dataKey])));\n const allSelected = pageRows.length > 0 && pageRows.every((row: any) => selectedKeys.has(String(row?.[dataKey])));\n\n const start = totalRecords === 0 ? 0 : first + 1;\n const end = Math.min(first + rows, totalRecords);\n const currentPage = rows > 0 ? Math.floor(first / rows) + 1 : 1;\n const totalPages = rows > 0 ? Math.max(1, Math.ceil(totalRecords / rows)) : 1;\n\n const report = currentPageReportTemplate\n .replace(\"{first}\", String(start))\n .replace(\"{last}\", String(end))\n .replace(\"{totalRecords}\", String(totalRecords));\n\n const emitSelection = (nextSelection: any[]) => {\n onSelectionChange?.({ value: nextSelection });\n };\n\n const toggleSelectAll = (checked: boolean) => {\n if (!checked) {\n const pageKeys = new Set(pageRows.map((row: any) => String(row?.[dataKey])));\n emitSelection((selection || []).filter((row: any) => !pageKeys.has(String(row?.[dataKey]))));\n return;\n }\n const merged = [...(selection || [])];\n const mergedKeys = new Set(merged.map((row: any) => String(row?.[dataKey])));\n pageRows.forEach((row: any) => {\n const key = String(row?.[dataKey]);\n if (!mergedKeys.has(key)) merged.push(row);\n });\n emitSelection(merged);\n };\n\n const toggleRowSelection = (rowData: any, checked: boolean) => {\n const key = String(rowData?.[dataKey]);\n if (!checked) {\n emitSelection((selection || []).filter((row: any) => String(row?.[dataKey]) !== key));\n return;\n }\n emitSelection([...(selection || []), rowData]);\n };\n\n const densityClass =\n size === \"small\"\n ? \"solid-table-density-compact\"\n : size === \"large\"\n ? \"solid-table-density-comfortable\"\n : \"solid-table-density-cozy\";\n\n return (\n <div\n className={cx(\"solid-data-table-root w-full min-h-0\", densityClass)}\n style={{\n height: viewportHeight || \"100%\",\n maxHeight: viewportHeight || \"100%\",\n }}\n >\n <div className=\"solid-data-table-viewport min-h-0 rounded-md border border-border/60 bg-background\">\n <table className={cx(\"w-full text-sm border-collapse\", tableClassName)}>\n <thead className=\"solid-data-table-head sticky top-0 z-2\">\n <tr>\n {columns.map((column, index) => {\n const props = column.props;\n const isSelectionColumn = props.selectionMode === \"multiple\";\n const isSortable = Boolean(props.sortable && props.field && !isSelectionColumn);\n const isActiveSort = isSortable && sortField === props.field;\n const iconClass = resolveSortIcon(Boolean(isActiveSort), sortOrder);\n return (\n <th\n key={`header-${index}`}\n className={cx(\n \"solid-data-table-th text-left text-foreground whitespace-nowrap\",\n isSelectionColumn ? \"solid-data-table-selection-col\" : undefined,\n props.headerClassName\n )}\n style={{ ...props.style, ...props.headerStyle }}\n >\n {isSelectionColumn ? (\n <input\n type=\"checkbox\"\n checked={allSelected}\n onChange={(e) => toggleSelectAll(e.currentTarget.checked)}\n aria-label=\"Select all rows\"\n />\n ) : (\n <button\n type=\"button\"\n className={cx(\"solid-table-header-button\", isSortable ? \"is-sortable\" : undefined)}\n onClick={() => {\n if (!isSortable) return;\n const nextOrder = nextSortOrder(Boolean(isActiveSort), sortOrder, removableSort);\n onSort?.({\n sortField: nextOrder === 0 ? undefined : props.field,\n sortOrder: nextOrder,\n });\n }}\n >\n {renderHeaderNode(props.header)}\n {isSortable ? <i className={iconClass} aria-hidden=\"true\" /> : null}\n </button>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {pageRows.length === 0 ? (\n <tr>\n <td className=\"px-3 py-6 text-center text-muted-foreground\" colSpan={Math.max(columns.length, 1)}>\n {emptyMessage || \"No records found\"}\n </td>\n </tr>\n ) : (\n pageRows.map((rowData: any) => {\n const key = String(rowData?.[dataKey]);\n const rowSelected = selectedKeys.has(key);\n return (\n <tr\n key={key}\n className={cx(\"solid-data-table-row\", rowClassName?.(rowData))}\n onClick={(event) => {\n const target = event.target as HTMLElement;\n if (target.closest(\"button,a,input,label,[data-no-row-click='true']\")) return;\n onRowClick?.({ data: rowData });\n }}\n >\n {columns.map((column, index) => {\n const props = column.props;\n const isSelectionColumn = props.selectionMode === \"multiple\";\n const content = isSelectionColumn\n ? (\n <input\n type=\"checkbox\"\n checked={rowSelected}\n onChange={(e) => toggleRowSelection(rowData, e.currentTarget.checked)}\n onClick={(e) => e.stopPropagation()}\n aria-label=\"Select row\"\n />\n )\n : props.body\n ? props.body(rowData)\n : props.field\n ? rowData?.[props.field]\n : null;\n return (\n <td\n key={`cell-${key}-${index}`}\n className={cx(\n \"solid-data-table-td align-top text-foreground\",\n isSelectionColumn ? \"solid-data-table-selection-col\" : undefined,\n props.className\n )}\n style={props.style}\n >\n {content}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {typeof onPage === \"function\" ? (\n <div\n className={cx(\"w-full solid-table-paginator solid-table-paginator-align-end flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background\", paginatorClassName)}\n >\n <div className=\"solid-paginator-meta flex items-center gap-2 ml-auto\">\n <span className=\"solid-paginator-label\">Rows</span>\n <select\n value={rows}\n onChange={(e) => onPage({ first: 0, rows: Number(e.target.value) })}\n className=\"solid-paginator-select\"\n >\n {rowsPerPageOptions.map((option) => (\n <option key={option} value={option}>{option}</option>\n ))}\n </select>\n <span className=\"solid-paginator-report\">{report}</span>\n </div>\n <div className=\"solid-paginator-actions flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => onPage({ first: Math.max(0, first - rows), rows })}\n disabled={currentPage <= 1}\n >\n Previous\n </button>\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => onPage({ first: Math.min((totalPages - 1) * rows, first + rows), rows })}\n disabled={currentPage >= totalPages}\n >\n Next\n </button>\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n"]}
@@ -0,0 +1,314 @@
1
+ import React from "react";
2
+
3
+ export type DataTableStateEvent = {
4
+ sortField?: string;
5
+ sortOrder?: 1 | -1 | 0;
6
+ };
7
+
8
+ type HeaderRenderer = React.ReactNode | (() => React.ReactNode);
9
+ type BodyRenderer = (rowData: any) => React.ReactNode;
10
+
11
+ export type SolidColumnProps = {
12
+ field?: string;
13
+ header?: HeaderRenderer;
14
+ body?: BodyRenderer;
15
+ sortable?: boolean;
16
+ selectionMode?: "multiple" | "single" | null;
17
+ headerStyle?: React.CSSProperties;
18
+ style?: React.CSSProperties;
19
+ className?: string;
20
+ headerClassName?: string;
21
+ frozen?: boolean;
22
+ alignFrozen?: "left" | "right";
23
+ [key: string]: any;
24
+ };
25
+
26
+ export function Column(_props: SolidColumnProps) {
27
+ return null;
28
+ }
29
+
30
+ type SolidDataTableProps = {
31
+ value: any[];
32
+ children: React.ReactNode;
33
+ size?: "small" | "normal" | "large";
34
+ viewportHeight?: string;
35
+ dataKey?: string;
36
+ emptyMessage?: React.ReactNode;
37
+ rows?: number;
38
+ first?: number;
39
+ totalRecords?: number;
40
+ rowsPerPageOptions?: number[];
41
+ onPage?: (event: { first: number; rows: number }) => void;
42
+ onSort?: (event: DataTableStateEvent) => void;
43
+ sortField?: string;
44
+ sortOrder?: 1 | -1 | 0;
45
+ removableSort?: boolean;
46
+ selection?: any[];
47
+ selectionMode?: "checkbox" | null;
48
+ onSelectionChange?: (event: { value: any[] }) => void;
49
+ onRowClick?: (event: { data: any }) => void;
50
+ rowClassName?: (rowData: any) => string;
51
+ tableClassName?: string;
52
+ paginatorClassName?: string;
53
+ currentPageReportTemplate?: string;
54
+ [key: string]: any;
55
+ };
56
+
57
+ const cx = (...parts: Array<string | undefined | false>) => parts.filter(Boolean).join(" ");
58
+
59
+ function renderHeaderNode(header?: HeaderRenderer) {
60
+ if (typeof header === "function") return header();
61
+ return header ?? null;
62
+ }
63
+
64
+ function normalizeColumns(children: React.ReactNode): React.ReactElement<SolidColumnProps>[] {
65
+ return React.Children.toArray(children).filter((child): child is React.ReactElement<SolidColumnProps> => {
66
+ return React.isValidElement(child);
67
+ });
68
+ }
69
+
70
+ function resolveSortIcon(active: boolean, order: 1 | -1 | 0): string {
71
+ if (!active || order === 0) return "pi pi-sort-alt";
72
+ return order === 1 ? "pi pi-sort-amount-up-alt" : "pi pi-sort-amount-down";
73
+ }
74
+
75
+ function nextSortOrder(active: boolean, order: 1 | -1 | 0, removableSort = true): 1 | -1 | 0 {
76
+ if (!active || order === 0) return 1;
77
+ if (order === 1) return -1;
78
+ return removableSort ? 0 : 1;
79
+ }
80
+
81
+ export function SolidDataTable({
82
+ value,
83
+ children,
84
+ size = "normal",
85
+ viewportHeight,
86
+ dataKey = "id",
87
+ emptyMessage,
88
+ rows = 25,
89
+ first = 0,
90
+ totalRecords = 0,
91
+ rowsPerPageOptions = [10, 25, 50, 100],
92
+ onPage,
93
+ onSort,
94
+ sortField,
95
+ sortOrder = 0,
96
+ removableSort = true,
97
+ selection = [],
98
+ selectionMode,
99
+ onSelectionChange,
100
+ onRowClick,
101
+ rowClassName,
102
+ tableClassName,
103
+ paginatorClassName,
104
+ currentPageReportTemplate = "{first} - {last} of {totalRecords}",
105
+ }: SolidDataTableProps) {
106
+ const columns = normalizeColumns(children);
107
+ const pageRows = value ?? [];
108
+
109
+ const selectedKeys = new Set((selection || []).map((row: any) => String(row?.[dataKey])));
110
+ const allSelected = pageRows.length > 0 && pageRows.every((row: any) => selectedKeys.has(String(row?.[dataKey])));
111
+
112
+ const start = totalRecords === 0 ? 0 : first + 1;
113
+ const end = Math.min(first + rows, totalRecords);
114
+ const currentPage = rows > 0 ? Math.floor(first / rows) + 1 : 1;
115
+ const totalPages = rows > 0 ? Math.max(1, Math.ceil(totalRecords / rows)) : 1;
116
+
117
+ const report = currentPageReportTemplate
118
+ .replace("{first}", String(start))
119
+ .replace("{last}", String(end))
120
+ .replace("{totalRecords}", String(totalRecords));
121
+
122
+ const emitSelection = (nextSelection: any[]) => {
123
+ onSelectionChange?.({ value: nextSelection });
124
+ };
125
+
126
+ const toggleSelectAll = (checked: boolean) => {
127
+ if (!checked) {
128
+ const pageKeys = new Set(pageRows.map((row: any) => String(row?.[dataKey])));
129
+ emitSelection((selection || []).filter((row: any) => !pageKeys.has(String(row?.[dataKey]))));
130
+ return;
131
+ }
132
+ const merged = [...(selection || [])];
133
+ const mergedKeys = new Set(merged.map((row: any) => String(row?.[dataKey])));
134
+ pageRows.forEach((row: any) => {
135
+ const key = String(row?.[dataKey]);
136
+ if (!mergedKeys.has(key)) merged.push(row);
137
+ });
138
+ emitSelection(merged);
139
+ };
140
+
141
+ const toggleRowSelection = (rowData: any, checked: boolean) => {
142
+ const key = String(rowData?.[dataKey]);
143
+ if (!checked) {
144
+ emitSelection((selection || []).filter((row: any) => String(row?.[dataKey]) !== key));
145
+ return;
146
+ }
147
+ emitSelection([...(selection || []), rowData]);
148
+ };
149
+
150
+ const densityClass =
151
+ size === "small"
152
+ ? "solid-table-density-compact"
153
+ : size === "large"
154
+ ? "solid-table-density-comfortable"
155
+ : "solid-table-density-cozy";
156
+
157
+ return (
158
+ <div
159
+ className={cx("solid-data-table-root w-full min-h-0", densityClass)}
160
+ style={{
161
+ height: viewportHeight || "100%",
162
+ maxHeight: viewportHeight || "100%",
163
+ }}
164
+ >
165
+ <div className="solid-data-table-viewport min-h-0 rounded-md border border-border/60 bg-background">
166
+ <table className={cx("w-full text-sm border-collapse", tableClassName)}>
167
+ <thead className="solid-data-table-head sticky top-0 z-2">
168
+ <tr>
169
+ {columns.map((column, index) => {
170
+ const props = column.props;
171
+ const isSelectionColumn = props.selectionMode === "multiple";
172
+ const isSortable = Boolean(props.sortable && props.field && !isSelectionColumn);
173
+ const isActiveSort = isSortable && sortField === props.field;
174
+ const iconClass = resolveSortIcon(Boolean(isActiveSort), sortOrder);
175
+ return (
176
+ <th
177
+ key={`header-${index}`}
178
+ className={cx(
179
+ "solid-data-table-th text-left text-foreground whitespace-nowrap",
180
+ isSelectionColumn ? "solid-data-table-selection-col" : undefined,
181
+ props.headerClassName
182
+ )}
183
+ style={{ ...props.style, ...props.headerStyle }}
184
+ >
185
+ {isSelectionColumn ? (
186
+ <input
187
+ type="checkbox"
188
+ checked={allSelected}
189
+ onChange={(e) => toggleSelectAll(e.currentTarget.checked)}
190
+ aria-label="Select all rows"
191
+ />
192
+ ) : (
193
+ <button
194
+ type="button"
195
+ className={cx("solid-table-header-button", isSortable ? "is-sortable" : undefined)}
196
+ onClick={() => {
197
+ if (!isSortable) return;
198
+ const nextOrder = nextSortOrder(Boolean(isActiveSort), sortOrder, removableSort);
199
+ onSort?.({
200
+ sortField: nextOrder === 0 ? undefined : props.field,
201
+ sortOrder: nextOrder,
202
+ });
203
+ }}
204
+ >
205
+ {renderHeaderNode(props.header)}
206
+ {isSortable ? <i className={iconClass} aria-hidden="true" /> : null}
207
+ </button>
208
+ )}
209
+ </th>
210
+ );
211
+ })}
212
+ </tr>
213
+ </thead>
214
+ <tbody>
215
+ {pageRows.length === 0 ? (
216
+ <tr>
217
+ <td className="px-3 py-6 text-center text-muted-foreground" colSpan={Math.max(columns.length, 1)}>
218
+ {emptyMessage || "No records found"}
219
+ </td>
220
+ </tr>
221
+ ) : (
222
+ pageRows.map((rowData: any) => {
223
+ const key = String(rowData?.[dataKey]);
224
+ const rowSelected = selectedKeys.has(key);
225
+ return (
226
+ <tr
227
+ key={key}
228
+ className={cx("solid-data-table-row", rowClassName?.(rowData))}
229
+ onClick={(event) => {
230
+ const target = event.target as HTMLElement;
231
+ if (target.closest("button,a,input,label,[data-no-row-click='true']")) return;
232
+ onRowClick?.({ data: rowData });
233
+ }}
234
+ >
235
+ {columns.map((column, index) => {
236
+ const props = column.props;
237
+ const isSelectionColumn = props.selectionMode === "multiple";
238
+ const content = isSelectionColumn
239
+ ? (
240
+ <input
241
+ type="checkbox"
242
+ checked={rowSelected}
243
+ onChange={(e) => toggleRowSelection(rowData, e.currentTarget.checked)}
244
+ onClick={(e) => e.stopPropagation()}
245
+ aria-label="Select row"
246
+ />
247
+ )
248
+ : props.body
249
+ ? props.body(rowData)
250
+ : props.field
251
+ ? rowData?.[props.field]
252
+ : null;
253
+ return (
254
+ <td
255
+ key={`cell-${key}-${index}`}
256
+ className={cx(
257
+ "solid-data-table-td align-top text-foreground",
258
+ isSelectionColumn ? "solid-data-table-selection-col" : undefined,
259
+ props.className
260
+ )}
261
+ style={props.style}
262
+ >
263
+ {content}
264
+ </td>
265
+ );
266
+ })}
267
+ </tr>
268
+ );
269
+ })
270
+ )}
271
+ </tbody>
272
+ </table>
273
+ </div>
274
+
275
+ {typeof onPage === "function" ? (
276
+ <div
277
+ className={cx("w-full solid-table-paginator solid-table-paginator-align-end flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background", paginatorClassName)}
278
+ >
279
+ <div className="solid-paginator-meta flex items-center gap-2 ml-auto">
280
+ <span className="solid-paginator-label">Rows</span>
281
+ <select
282
+ value={rows}
283
+ onChange={(e) => onPage({ first: 0, rows: Number(e.target.value) })}
284
+ className="solid-paginator-select"
285
+ >
286
+ {rowsPerPageOptions.map((option) => (
287
+ <option key={option} value={option}>{option}</option>
288
+ ))}
289
+ </select>
290
+ <span className="solid-paginator-report">{report}</span>
291
+ </div>
292
+ <div className="solid-paginator-actions flex items-center gap-2">
293
+ <button
294
+ type="button"
295
+ className="solid-paginator-btn"
296
+ onClick={() => onPage({ first: Math.max(0, first - rows), rows })}
297
+ disabled={currentPage <= 1}
298
+ >
299
+ Previous
300
+ </button>
301
+ <button
302
+ type="button"
303
+ className="solid-paginator-btn"
304
+ onClick={() => onPage({ first: Math.min((totalPages - 1) * rows, first + rows), rows })}
305
+ disabled={currentPage >= totalPages}
306
+ >
307
+ Next
308
+ </button>
309
+ </div>
310
+ </div>
311
+ ) : null}
312
+ </div>
313
+ );
314
+ }
@@ -0,0 +1,15 @@
1
+ type SolidDataTablePaginationProps = {
2
+ rows: number;
3
+ first: number;
4
+ totalRecords: number;
5
+ rowsPerPageOptions?: number[];
6
+ onPage: (event: {
7
+ first: number;
8
+ rows: number;
9
+ }) => void;
10
+ currentPageReportTemplate?: string;
11
+ className?: string;
12
+ };
13
+ export declare function SolidDataTablePagination({ rows, first, totalRecords, rowsPerPageOptions, onPage, currentPageReportTemplate, className, }: SolidDataTablePaginationProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=SolidDataTablePagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidDataTablePagination.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTablePagination.tsx"],"names":[],"mappings":"AAEA,KAAK,6BAA6B,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACzD,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,kBAAsC,EACtC,MAAM,EACN,yBAAgE,EAChE,SAAS,GACV,EAAE,6BAA6B,2CA+C/B"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ var cx = function () {
3
+ var parts = [];
4
+ for (var _i = 0; _i < arguments.length; _i++) {
5
+ parts[_i] = arguments[_i];
6
+ }
7
+ return parts.filter(Boolean).join(" ");
8
+ };
9
+ export function SolidDataTablePagination(_a) {
10
+ var rows = _a.rows, first = _a.first, totalRecords = _a.totalRecords, _b = _a.rowsPerPageOptions, rowsPerPageOptions = _b === void 0 ? [10, 25, 50, 100] : _b, onPage = _a.onPage, _c = _a.currentPageReportTemplate, currentPageReportTemplate = _c === void 0 ? "{first} - {last} of {totalRecords}" : _c, className = _a.className;
11
+ var safeRows = rows > 0 ? rows : 25;
12
+ var start = totalRecords === 0 ? 0 : first + 1;
13
+ var end = Math.min(first + safeRows, totalRecords);
14
+ var currentPage = Math.floor(first / safeRows) + 1;
15
+ var totalPages = Math.max(1, Math.ceil(totalRecords / safeRows));
16
+ var report = currentPageReportTemplate
17
+ .replace("{first}", String(start))
18
+ .replace("{last}", String(end))
19
+ .replace("{totalRecords}", String(totalRecords));
20
+ return (_jsxs("div", { className: cx("w-full solid-table-paginator flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background", className), children: [_jsxs("div", { className: "solid-paginator-meta flex items-center gap-2 ml-auto", children: [_jsx("span", { className: "solid-paginator-label", children: "Rows" }), _jsx("select", { value: safeRows, onChange: function (e) { return onPage({ first: 0, rows: Number(e.target.value) }); }, className: "solid-paginator-select", children: rowsPerPageOptions.map(function (option) { return (_jsx("option", { value: option, children: option }, option)); }) }), _jsx("span", { className: "solid-paginator-report", children: report })] }), _jsxs("div", { className: "solid-paginator-actions flex items-center gap-2", children: [_jsx("button", { type: "button", className: "solid-paginator-btn", onClick: function () { return onPage({ first: Math.max(0, first - safeRows), rows: safeRows }); }, disabled: currentPage <= 1, children: "Previous" }), _jsx("button", { type: "button", className: "solid-paginator-btn", onClick: function () { return onPage({ first: Math.min((totalPages - 1) * safeRows, first + safeRows), rows: safeRows }); }, disabled: currentPage >= totalPages, children: "Next" })] })] }));
21
+ }
22
+ //# sourceMappingURL=SolidDataTablePagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidDataTablePagination.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTablePagination.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\ntype SolidDataTablePaginationProps = {\n rows: number;\n first: number;\n totalRecords: number;\n rowsPerPageOptions?: number[];\n onPage: (event: { first: number; rows: number }) => void;\n currentPageReportTemplate?: string;\n className?: string;\n};\n\nconst cx = (...parts: Array<string | undefined | false>) => parts.filter(Boolean).join(\" \");\n\nexport function SolidDataTablePagination({\n rows,\n first,\n totalRecords,\n rowsPerPageOptions = [10, 25, 50, 100],\n onPage,\n currentPageReportTemplate = \"{first} - {last} of {totalRecords}\",\n className,\n}: SolidDataTablePaginationProps) {\n const safeRows = rows > 0 ? rows : 25;\n const start = totalRecords === 0 ? 0 : first + 1;\n const end = Math.min(first + safeRows, totalRecords);\n const currentPage = Math.floor(first / safeRows) + 1;\n const totalPages = Math.max(1, Math.ceil(totalRecords / safeRows));\n\n const report = currentPageReportTemplate\n .replace(\"{first}\", String(start))\n .replace(\"{last}\", String(end))\n .replace(\"{totalRecords}\", String(totalRecords));\n\n return (\n <div className={cx(\"w-full solid-table-paginator flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background\", className)}>\n <div className=\"solid-paginator-meta flex items-center gap-2 ml-auto\">\n <span className=\"solid-paginator-label\">Rows</span>\n <select\n value={safeRows}\n onChange={(e) => onPage({ first: 0, rows: Number(e.target.value) })}\n className=\"solid-paginator-select\"\n >\n {rowsPerPageOptions.map((option) => (\n <option key={option} value={option}>{option}</option>\n ))}\n </select>\n <span className=\"solid-paginator-report\">{report}</span>\n </div>\n <div className=\"solid-paginator-actions flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => onPage({ first: Math.max(0, first - safeRows), rows: safeRows })}\n disabled={currentPage <= 1}\n >\n Previous\n </button>\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => onPage({ first: Math.min((totalPages - 1) * safeRows, first + safeRows), rows: safeRows })}\n disabled={currentPage >= totalPages}\n >\n Next\n </button>\n </div>\n </div>\n );\n}\n\n"]}
@@ -0,0 +1,71 @@
1
+ import React from "react";
2
+
3
+ type SolidDataTablePaginationProps = {
4
+ rows: number;
5
+ first: number;
6
+ totalRecords: number;
7
+ rowsPerPageOptions?: number[];
8
+ onPage: (event: { first: number; rows: number }) => void;
9
+ currentPageReportTemplate?: string;
10
+ className?: string;
11
+ };
12
+
13
+ const cx = (...parts: Array<string | undefined | false>) => parts.filter(Boolean).join(" ");
14
+
15
+ export function SolidDataTablePagination({
16
+ rows,
17
+ first,
18
+ totalRecords,
19
+ rowsPerPageOptions = [10, 25, 50, 100],
20
+ onPage,
21
+ currentPageReportTemplate = "{first} - {last} of {totalRecords}",
22
+ className,
23
+ }: SolidDataTablePaginationProps) {
24
+ const safeRows = rows > 0 ? rows : 25;
25
+ const start = totalRecords === 0 ? 0 : first + 1;
26
+ const end = Math.min(first + safeRows, totalRecords);
27
+ const currentPage = Math.floor(first / safeRows) + 1;
28
+ const totalPages = Math.max(1, Math.ceil(totalRecords / safeRows));
29
+
30
+ const report = currentPageReportTemplate
31
+ .replace("{first}", String(start))
32
+ .replace("{last}", String(end))
33
+ .replace("{totalRecords}", String(totalRecords));
34
+
35
+ return (
36
+ <div className={cx("w-full solid-table-paginator flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background", className)}>
37
+ <div className="solid-paginator-meta flex items-center gap-2 ml-auto">
38
+ <span className="solid-paginator-label">Rows</span>
39
+ <select
40
+ value={safeRows}
41
+ onChange={(e) => onPage({ first: 0, rows: Number(e.target.value) })}
42
+ className="solid-paginator-select"
43
+ >
44
+ {rowsPerPageOptions.map((option) => (
45
+ <option key={option} value={option}>{option}</option>
46
+ ))}
47
+ </select>
48
+ <span className="solid-paginator-report">{report}</span>
49
+ </div>
50
+ <div className="solid-paginator-actions flex items-center gap-2">
51
+ <button
52
+ type="button"
53
+ className="solid-paginator-btn"
54
+ onClick={() => onPage({ first: Math.max(0, first - safeRows), rows: safeRows })}
55
+ disabled={currentPage <= 1}
56
+ >
57
+ Previous
58
+ </button>
59
+ <button
60
+ type="button"
61
+ className="solid-paginator-btn"
62
+ onClick={() => onPage({ first: Math.min((totalPages - 1) * safeRows, first + safeRows), rows: safeRows })}
63
+ disabled={currentPage >= totalPages}
64
+ >
65
+ Next
66
+ </button>
67
+ </div>
68
+ </div>
69
+ );
70
+ }
71
+
@@ -1 +1 @@
1
- {"version":3,"file":"SolidListView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListView.tsx"],"names":[],"mappings":";AAgCA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,gDAAgD,CAAC;AAyBxD,eAAO,MAAM,+BAA+B,WAgB3C,CAAC;AAGF,eAAO,MAAM,oCAAoC,QAAS,MAAM,QAgB/D,CAAC;AAEF,eAAO,MAAM,6BAA6B,gBAAiB,MAAM,kBAUhE,CAAC;AAGF,eAAO,MAAM,kCAAkC,QAAS,MAAM,eAAe,MAAM,kBAUlF,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6BAA6B,CAAC,EAAE,GAAG,CAAC;IACpC,8BAA8B,CAAC,EAAE,GAAG,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE;QACpB,uBAAuB,CAAC,EAAE,GAAG,CAAC;QAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC;QACvB,sBAAsB,CAAC,EAAE,GAAG,CAAC;QAC7B,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC,KAAK,IAAI,CAAC;IACX;;;;OAIG;IACH,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,OAAO,EAAE,CAAC,iBAAiB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;KAAE,EAAE,KAAK,IAAI,CAAC;IACzE;;;OAGG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C;;;OAGG;IACH,QAAQ,EAAE,MAAM;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;SAAE,EAAE,CAAC;QAClD,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,GAAG,CAAC;QACb,gBAAgB,EAAE,GAAG,CAAC;QACtB,QAAQ,EAAE,GAAG,EAAE,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,aAAa,qHA41DxB,CAAC"}
1
+ {"version":3,"file":"SolidListView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListView.tsx"],"names":[],"mappings":";AAgCA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,gDAAgD,CAAC;AAyBxD,eAAO,MAAM,+BAA+B,WAgB3C,CAAC;AAGF,eAAO,MAAM,oCAAoC,QAAS,MAAM,QAgB/D,CAAC;AAEF,eAAO,MAAM,6BAA6B,gBAAiB,MAAM,kBAUhE,CAAC;AAGF,eAAO,MAAM,kCAAkC,QAAS,MAAM,eAAe,MAAM,kBAUlF,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6BAA6B,CAAC,EAAE,GAAG,CAAC;IACpC,8BAA8B,CAAC,EAAE,GAAG,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE;QACpB,uBAAuB,CAAC,EAAE,GAAG,CAAC;QAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC;QACvB,sBAAsB,CAAC,EAAE,GAAG,CAAC;QAC7B,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC,KAAK,IAAI,CAAC;IACX;;;;OAIG;IACH,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,OAAO,EAAE,CAAC,iBAAiB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;KAAE,EAAE,KAAK,IAAI,CAAC;IACzE;;;OAGG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C;;;OAGG;IACH,QAAQ,EAAE,MAAM;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;SAAE,EAAE,CAAC;QAClD,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,GAAG,CAAC;QACb,gBAAgB,EAAE,GAAG,CAAC;QACtB,QAAQ,EAAE,GAAG,EAAE,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,aAAa,qHA61DxB,CAAC"}