@k2b/ui 0.49.0 → 0.50.0

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 (265) hide show
  1. package/dist/base.css +40 -2
  2. package/dist/browser/actions/ContextMenu.js +3 -0
  3. package/dist/browser/actions/ContextMenu.js.map +1 -1
  4. package/dist/browser/charts/core/area.js +190 -0
  5. package/dist/browser/charts/core/area.js.map +1 -0
  6. package/dist/browser/charts/core/calendar.js +186 -0
  7. package/dist/browser/charts/core/calendar.js.map +1 -0
  8. package/dist/browser/charts/core/chart-map-data.js +9 -0
  9. package/dist/browser/charts/core/chart-map-data.js.map +1 -0
  10. package/dist/browser/charts/core/index.js +12 -0
  11. package/dist/browser/charts/core/index.js.map +1 -0
  12. package/dist/browser/charts/core/inspection.js +9 -0
  13. package/dist/browser/charts/core/inspection.js.map +1 -0
  14. package/dist/browser/charts/core/registry.js +28 -0
  15. package/dist/browser/charts/core/registry.js.map +1 -0
  16. package/dist/browser/charts/core/render.js +103 -0
  17. package/dist/browser/charts/core/render.js.map +1 -0
  18. package/dist/browser/charts/core/snapshot.js +65 -0
  19. package/dist/browser/charts/core/snapshot.js.map +1 -0
  20. package/dist/browser/charts/core/svg.js +2542 -0
  21. package/dist/browser/charts/core/svg.js.map +1 -0
  22. package/dist/browser/charts/core/termination.test-fixture.js +162 -0
  23. package/dist/browser/charts/core/termination.test-fixture.js.map +1 -0
  24. package/dist/browser/charts/core/text.js +13 -0
  25. package/dist/browser/charts/core/text.js.map +1 -0
  26. package/dist/browser/charts/core/types.js +8 -0
  27. package/dist/browser/charts/core/types.js.map +1 -0
  28. package/dist/browser/charts.js +4 -2
  29. package/dist/browser/charts.js.map +1 -1
  30. package/dist/browser/content/BalanceSummary.js +106 -0
  31. package/dist/browser/content/BalanceSummary.js.map +1 -0
  32. package/dist/browser/content/Chart.js +134 -115
  33. package/dist/browser/content/Chart.js.map +1 -1
  34. package/dist/browser/content/ChartExplorer.js +366 -122
  35. package/dist/browser/content/ChartExplorer.js.map +1 -1
  36. package/dist/browser/content/ChartSnapshotView.js +16 -9
  37. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  38. package/dist/browser/content/DataTable.js +676 -293
  39. package/dist/browser/content/DataTable.js.map +1 -1
  40. package/dist/browser/content/DataTableTools.js +119 -0
  41. package/dist/browser/content/DataTableTools.js.map +1 -0
  42. package/dist/browser/content/FlowAmount.js +82 -0
  43. package/dist/browser/content/FlowAmount.js.map +1 -0
  44. package/dist/browser/content/balance-summary-messages.js +26 -0
  45. package/dist/browser/content/balance-summary-messages.js.map +1 -0
  46. package/dist/browser/content/chart-bar.js +6 -6
  47. package/dist/browser/content/chart-bar.js.map +1 -1
  48. package/dist/browser/content/chart-calendar.js +43 -0
  49. package/dist/browser/content/chart-calendar.js.map +1 -0
  50. package/dist/browser/content/chart-inspection-core.js +164 -37
  51. package/dist/browser/content/chart-inspection-core.js.map +1 -1
  52. package/dist/browser/content/chart-inspection.js.map +1 -1
  53. package/dist/browser/content/chart-line-gaps.js +2 -2
  54. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  55. package/dist/browser/content/chart-map-viewport.js.map +1 -1
  56. package/dist/browser/content/chart-message-catalog.js +164 -0
  57. package/dist/browser/content/chart-message-catalog.js.map +1 -0
  58. package/dist/browser/content/chart-messages.js +2 -138
  59. package/dist/browser/content/chart-messages.js.map +1 -1
  60. package/dist/browser/content/chart-snapshot.js +1 -62
  61. package/dist/browser/content/chart-snapshot.js.map +1 -1
  62. package/dist/browser/content/chart-state-timeline.js +1 -1
  63. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  64. package/dist/browser/content/chart-svg.js +2 -1
  65. package/dist/browser/content/chart-svg.js.map +1 -1
  66. package/dist/browser/content/chart-time-axis.js +139 -0
  67. package/dist/browser/content/chart-time-axis.js.map +1 -0
  68. package/dist/browser/content/data-table-columns.js +160 -0
  69. package/dist/browser/content/data-table-columns.js.map +1 -0
  70. package/dist/browser/content/data-table-messages.js +38 -2
  71. package/dist/browser/content/data-table-messages.js.map +1 -1
  72. package/dist/browser/content/flow-amount-messages.js +26 -0
  73. package/dist/browser/content/flow-amount-messages.js.map +1 -0
  74. package/dist/browser/content/index.js +4 -0
  75. package/dist/browser/content/index.js.map +1 -1
  76. package/dist/browser/inputs/DatePicker.js +5 -4
  77. package/dist/browser/inputs/DatePicker.js.map +1 -1
  78. package/dist/browser/inputs/SelectChip.js +50 -17
  79. package/dist/browser/inputs/SelectChip.js.map +1 -1
  80. package/dist/browser/inputs/date-picker.js +13 -0
  81. package/dist/browser/inputs/date-picker.js.map +1 -1
  82. package/dist/browser/intl/Format.js +31 -8
  83. package/dist/browser/intl/Format.js.map +1 -1
  84. package/dist/browser/layout/AppWorkspace.js +7 -1
  85. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  86. package/dist/browser/surfaces/BudgetList.js +281 -0
  87. package/dist/browser/surfaces/BudgetList.js.map +1 -0
  88. package/dist/browser/surfaces/ProgressBar.js +134 -21
  89. package/dist/browser/surfaces/ProgressBar.js.map +1 -1
  90. package/dist/browser/surfaces/StatCell.js +320 -144
  91. package/dist/browser/surfaces/StatCell.js.map +1 -1
  92. package/dist/browser/surfaces/StatGrid.js +75 -57
  93. package/dist/browser/surfaces/StatGrid.js.map +1 -1
  94. package/dist/browser/surfaces/budget-messages.js +64 -0
  95. package/dist/browser/surfaces/budget-messages.js.map +1 -0
  96. package/dist/browser/surfaces/delta-badge.js +65 -0
  97. package/dist/browser/surfaces/delta-badge.js.map +1 -0
  98. package/dist/browser/surfaces/index.js +2 -1
  99. package/dist/browser/surfaces/index.js.map +1 -1
  100. package/dist/browser/surfaces/person-color.js +2 -2
  101. package/dist/browser/surfaces/person-color.js.map +1 -1
  102. package/dist/browser/surfaces/stat-cell-messages.js +41 -0
  103. package/dist/browser/surfaces/stat-cell-messages.js.map +1 -0
  104. package/dist/browser/widgets/Dashboard.js +137 -0
  105. package/dist/browser/widgets/Dashboard.js.map +1 -0
  106. package/dist/browser/widgets/index.js +1 -0
  107. package/dist/browser/widgets/index.js.map +1 -1
  108. package/dist/ssr/actions/ContextMenu.js +3 -0
  109. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  110. package/dist/ssr/charts/core/area.js +190 -0
  111. package/dist/ssr/charts/core/area.js.map +1 -0
  112. package/dist/ssr/charts/core/calendar.js +186 -0
  113. package/dist/ssr/charts/core/calendar.js.map +1 -0
  114. package/dist/ssr/charts/core/chart-map-data.js +9 -0
  115. package/dist/ssr/charts/core/chart-map-data.js.map +1 -0
  116. package/dist/ssr/charts/core/index.js +12 -0
  117. package/dist/ssr/charts/core/index.js.map +1 -0
  118. package/dist/ssr/charts/core/inspection.js +9 -0
  119. package/dist/ssr/charts/core/inspection.js.map +1 -0
  120. package/dist/ssr/charts/core/registry.js +28 -0
  121. package/dist/ssr/charts/core/registry.js.map +1 -0
  122. package/dist/ssr/charts/core/render.js +103 -0
  123. package/dist/ssr/charts/core/render.js.map +1 -0
  124. package/dist/ssr/charts/core/snapshot.js +65 -0
  125. package/dist/ssr/charts/core/snapshot.js.map +1 -0
  126. package/dist/ssr/charts/core/svg.js +2542 -0
  127. package/dist/ssr/charts/core/svg.js.map +1 -0
  128. package/dist/ssr/charts/core/termination.test-fixture.js +162 -0
  129. package/dist/ssr/charts/core/termination.test-fixture.js.map +1 -0
  130. package/dist/ssr/charts/core/text.js +13 -0
  131. package/dist/ssr/charts/core/text.js.map +1 -0
  132. package/dist/ssr/charts/core/types.js +8 -0
  133. package/dist/ssr/charts/core/types.js.map +1 -0
  134. package/dist/ssr/charts.js +4 -2
  135. package/dist/ssr/charts.js.map +1 -1
  136. package/dist/ssr/content/BalanceSummary.js +75 -0
  137. package/dist/ssr/content/BalanceSummary.js.map +1 -0
  138. package/dist/ssr/content/Chart.js +90 -95
  139. package/dist/ssr/content/Chart.js.map +1 -1
  140. package/dist/ssr/content/ChartExplorer.js +190 -46
  141. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  142. package/dist/ssr/content/ChartSnapshotView.js +5 -1
  143. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  144. package/dist/ssr/content/DataTable.js +287 -78
  145. package/dist/ssr/content/DataTable.js.map +1 -1
  146. package/dist/ssr/content/DataTableTools.js +106 -0
  147. package/dist/ssr/content/DataTableTools.js.map +1 -0
  148. package/dist/ssr/content/FlowAmount.js +58 -0
  149. package/dist/ssr/content/FlowAmount.js.map +1 -0
  150. package/dist/ssr/content/balance-summary-messages.js +26 -0
  151. package/dist/ssr/content/balance-summary-messages.js.map +1 -0
  152. package/dist/ssr/content/chart-bar.js +6 -6
  153. package/dist/ssr/content/chart-bar.js.map +1 -1
  154. package/dist/ssr/content/chart-calendar.js +43 -0
  155. package/dist/ssr/content/chart-calendar.js.map +1 -0
  156. package/dist/ssr/content/chart-inspection-core.js +164 -37
  157. package/dist/ssr/content/chart-inspection-core.js.map +1 -1
  158. package/dist/ssr/content/chart-inspection.js.map +1 -1
  159. package/dist/ssr/content/chart-line-gaps.js +2 -2
  160. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  161. package/dist/ssr/content/chart-map-viewport.js.map +1 -1
  162. package/dist/ssr/content/chart-message-catalog.js +164 -0
  163. package/dist/ssr/content/chart-message-catalog.js.map +1 -0
  164. package/dist/ssr/content/chart-messages.js +2 -138
  165. package/dist/ssr/content/chart-messages.js.map +1 -1
  166. package/dist/ssr/content/chart-snapshot.js +1 -62
  167. package/dist/ssr/content/chart-snapshot.js.map +1 -1
  168. package/dist/ssr/content/chart-state-timeline.js +1 -1
  169. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  170. package/dist/ssr/content/chart-svg.js +2 -1
  171. package/dist/ssr/content/chart-svg.js.map +1 -1
  172. package/dist/ssr/content/chart-time-axis.js +139 -0
  173. package/dist/ssr/content/chart-time-axis.js.map +1 -0
  174. package/dist/ssr/content/data-table-columns.js +160 -0
  175. package/dist/ssr/content/data-table-columns.js.map +1 -0
  176. package/dist/ssr/content/data-table-messages.js +38 -2
  177. package/dist/ssr/content/data-table-messages.js.map +1 -1
  178. package/dist/ssr/content/flow-amount-messages.js +26 -0
  179. package/dist/ssr/content/flow-amount-messages.js.map +1 -0
  180. package/dist/ssr/content/index.js +4 -0
  181. package/dist/ssr/content/index.js.map +1 -1
  182. package/dist/ssr/inputs/DatePicker.js +5 -4
  183. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  184. package/dist/ssr/inputs/SelectChip.js +26 -9
  185. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  186. package/dist/ssr/inputs/date-picker.js +13 -0
  187. package/dist/ssr/inputs/date-picker.js.map +1 -1
  188. package/dist/ssr/intl/Format.js +22 -2
  189. package/dist/ssr/intl/Format.js.map +1 -1
  190. package/dist/ssr/layout/AppWorkspace.js +7 -1
  191. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  192. package/dist/ssr/surfaces/BudgetList.js +170 -0
  193. package/dist/ssr/surfaces/BudgetList.js.map +1 -0
  194. package/dist/ssr/surfaces/ProgressBar.js +96 -5
  195. package/dist/ssr/surfaces/ProgressBar.js.map +1 -1
  196. package/dist/ssr/surfaces/StatCell.js +157 -51
  197. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  198. package/dist/ssr/surfaces/StatGrid.js +24 -35
  199. package/dist/ssr/surfaces/StatGrid.js.map +1 -1
  200. package/dist/ssr/surfaces/budget-messages.js +64 -0
  201. package/dist/ssr/surfaces/budget-messages.js.map +1 -0
  202. package/dist/ssr/surfaces/delta-badge.js +41 -0
  203. package/dist/ssr/surfaces/delta-badge.js.map +1 -0
  204. package/dist/ssr/surfaces/index.js +2 -1
  205. package/dist/ssr/surfaces/index.js.map +1 -1
  206. package/dist/ssr/surfaces/person-color.js +2 -2
  207. package/dist/ssr/surfaces/person-color.js.map +1 -1
  208. package/dist/ssr/surfaces/stat-cell-messages.js +41 -0
  209. package/dist/ssr/surfaces/stat-cell-messages.js.map +1 -0
  210. package/dist/ssr/widgets/Dashboard.js +84 -0
  211. package/dist/ssr/widgets/Dashboard.js.map +1 -0
  212. package/dist/ssr/widgets/index.js +1 -0
  213. package/dist/ssr/widgets/index.js.map +1 -1
  214. package/dist/styles.css +1 -1
  215. package/dist/types/charts/core/area.d.ts +62 -0
  216. package/dist/types/charts/core/calendar.d.ts +57 -0
  217. package/dist/types/charts/core/chart-map-data.d.ts +3 -0
  218. package/dist/types/charts/core/index.d.ts +11 -0
  219. package/dist/types/charts/core/inspection.d.ts +16 -0
  220. package/dist/types/charts/core/registry.d.ts +27 -0
  221. package/dist/types/charts/core/render.d.ts +40 -0
  222. package/dist/types/charts/core/snapshot.d.ts +27 -0
  223. package/dist/types/charts/core/svg.d.ts +714 -0
  224. package/dist/types/charts/core/termination.test-fixture.d.ts +1 -0
  225. package/dist/types/charts/core/text.d.ts +5 -0
  226. package/dist/types/charts/core/types.d.ts +31 -0
  227. package/dist/types/charts.d.ts +4 -2
  228. package/dist/types/content/BalanceSummary.d.ts +29 -0
  229. package/dist/types/content/Chart.d.ts +26 -36
  230. package/dist/types/content/ChartExplorer.d.ts +43 -2
  231. package/dist/types/content/ChartSnapshotView.d.ts +1 -0
  232. package/dist/types/content/DataTable.d.ts +28 -0
  233. package/dist/types/content/DataTableTools.d.ts +44 -0
  234. package/dist/types/content/FlowAmount.d.ts +28 -0
  235. package/dist/types/content/balance-summary-messages.d.ts +11 -0
  236. package/dist/types/content/chart-bar.d.ts +1 -1
  237. package/dist/types/content/chart-calendar.d.ts +4 -0
  238. package/dist/types/content/chart-inspection-core.d.ts +21 -16
  239. package/dist/types/content/chart-inspection.d.ts +5 -1
  240. package/dist/types/content/chart-map-viewport.d.ts +1 -1
  241. package/dist/types/content/chart-message-catalog.d.ts +84 -0
  242. package/dist/types/content/chart-messages.d.ts +2 -33
  243. package/dist/types/content/chart-snapshot.d.ts +1 -26
  244. package/dist/types/content/chart-svg.d.ts +1 -1
  245. package/dist/types/content/chart-time-axis.d.ts +26 -0
  246. package/dist/types/content/data-table-columns.d.ts +72 -0
  247. package/dist/types/content/data-table-messages.d.ts +18 -0
  248. package/dist/types/content/flow-amount-messages.d.ts +11 -0
  249. package/dist/types/content/index.d.ts +10 -2
  250. package/dist/types/inputs/SelectChip.d.ts +2 -0
  251. package/dist/types/inputs/date-picker.d.ts +6 -0
  252. package/dist/types/intl/Format.d.ts +5 -0
  253. package/dist/types/layout/AppWorkspace.d.ts +5 -0
  254. package/dist/types/surfaces/BudgetList.d.ts +42 -0
  255. package/dist/types/surfaces/ProgressBar.d.ts +38 -2
  256. package/dist/types/surfaces/StatCell.d.ts +35 -2
  257. package/dist/types/surfaces/StatGrid.d.ts +3 -1
  258. package/dist/types/surfaces/budget-messages.d.ts +30 -0
  259. package/dist/types/surfaces/delta-badge.d.ts +10 -0
  260. package/dist/types/surfaces/index.d.ts +4 -3
  261. package/dist/types/surfaces/person-color.d.ts +2 -2
  262. package/dist/types/surfaces/stat-cell-messages.d.ts +19 -0
  263. package/dist/types/widgets/Dashboard.d.ts +42 -0
  264. package/dist/types/widgets/index.d.ts +1 -0
  265. package/package.json +7 -1
@@ -1,5 +1,5 @@
1
- import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
2
1
  import { memo as _$memo } from "solid-js/web";
2
+ import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
3
3
  import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
4
4
  import { createComponent as _$createComponent } from "solid-js/web";
5
5
  import { ssr as _$ssr } from "solid-js/web";
@@ -10,22 +10,37 @@ var _tmpl$ = ["<span class=\"k2b-data-table__header-title\">", "</span>"],
10
10
  _tmpl$4 = ["<a", " class=\"k2b-data-table__header-content k2b-data-table__sort\"", ">", "</a>"],
11
11
  _tmpl$5 = ["<button type=\"button\" class=\"k2b-data-table__header-content k2b-data-table__sort\"", ">", "</button>"],
12
12
  _tmpl$6 = ["<div class=\"k2b-data-table__header-content\"", ">", "</div>"],
13
- _tmpl$7 = ["<caption class=\"k2b-sr-only\">", "</caption>"],
14
- _tmpl$8 = ["<tr aria-hidden=\"true\"><td class=\"k2b-data-table__fill\"", "></td></tr>"],
15
- _tmpl$9 = "<div class=\"k2b-data-table__sentinel\" aria-hidden=\"true\"></div>",
16
- _tmpl$0 = ["<div role=\"region\"", " tabindex=\"0\" class=\"", "\"", "><table", ">", "<thead class=\"k2b-data-table__head\"", "><tr class=\"k2b-data-table__head-row\">", "</tr></thead><tbody>", "</tbody>", "</table>", "</div>"],
17
- _tmpl$1 = ["<th scope=\"col\" class=\"", "\"", ">", "</th>"],
18
- _tmpl$10 = ["<tr><td class=\"k2b-data-table__empty\"", ">", "</td></tr>"],
19
- _tmpl$11 = ["<tr class=\"k2b-data-table__row\" data-loading=\"true\" aria-hidden=\"true\">", "</tr>"],
20
- _tmpl$12 = ["<td", "><span class=\"k2b-data-table__skeleton\"></span></td>"],
21
- _tmpl$13 = ["<tr class=\"", "\"", ">", "</tr>"],
22
- _tmpl$14 = ["<td class=\"", "\"", "><div", ">", "</div></td>"],
23
- _tmpl$15 = ["<tfoot class=\"k2b-data-table__foot\" data-sticky=\"true\"><tr class=\"k2b-data-table__foot-row\">", "</tr></tfoot>"],
24
- _tmpl$16 = ["<td class=\"k2b-data-table__footer-cell\"", ">", "</td>"],
25
- _tmpl$17 = ["<div class=\"k2b-data-table__scrollbar\"", " aria-hidden=\"true\"><span style=\"", "\"></span></div>"],
26
- _tmpl$18 = ["<div class=\"", "\">", "</div>"],
27
- _tmpl$19 = ["<span", ">", "</span>"],
28
- _tmpl$20 = ["<footer class=\"", "\">", "</footer>"];
13
+ _tmpl$7 = ["<span class=\"k2b-data-table__bar\">", "<span class=\"k2b-data-table__bar-track\" aria-hidden=\"true\"><span style=\"", "\"></span></span></span>"],
14
+ _tmpl$8 = ["<td class=\"k2b-data-table__details-toggle\"><button type=\"button\" class=\"k2b-data-table__details-button\"", "><i class=\"", "\" aria-hidden=\"true\"></i></button></td>"],
15
+ _tmpl$9 = ["<tr class=\"", "\"", ">", "", "</tr>"],
16
+ _tmpl$0 = ["<tr class=\"k2b-data-table__details\"", "", "><td", "><dl>", "</dl></td></tr>"],
17
+ _tmpl$1 = ["<td class=\"", "\"", "><div", ">", "</div></td>"],
18
+ _tmpl$10 = ["<div", "><dt>", "</dt><dd>", "</dd></div>"],
19
+ _tmpl$11 = ["<caption class=\"k2b-sr-only\">", "</caption>"],
20
+ _tmpl$12 = ["<th scope=\"col\" class=\"k2b-data-table__details-toggle\"><span class=\"k2b-sr-only\">", "</span></th>"],
21
+ _tmpl$13 = "<div class=\"k2b-data-table__sentinel\" aria-hidden=\"true\"></div>",
22
+ _tmpl$14 = ["<div role=\"region\"", " tabindex=\"0\" class=\"", "\"", "><table", ">", "<thead class=\"k2b-data-table__head\"", "><tr class=\"k2b-data-table__head-row\">", "", "</tr></thead>", "", "</table>", "</div>"],
23
+ _tmpl$15 = ["<th scope=\"col\" class=\"", "\"", ">", "</th>"],
24
+ _tmpl$16 = ["<tr aria-hidden=\"true\"><td class=\"k2b-data-table__fill\"", "></td></tr>"],
25
+ _tmpl$17 = ["<tbody>", "</tbody>"],
26
+ _tmpl$18 = ["<tr>", "</tr>"],
27
+ _tmpl$19 = ["<td class=\"k2b-data-table__empty\"", ">", "</td>"],
28
+ _tmpl$20 = ["<button type=\"button\" class=\"k2b-data-table__clear-query\">", "</button>"],
29
+ _tmpl$21 = ["<td class=\"k2b-data-table__no-match\"", ">", " ", "</td>"],
30
+ _tmpl$22 = "<td class=\"k2b-data-table__details-toggle\"></td>",
31
+ _tmpl$23 = ["<tr class=\"k2b-data-table__row\" data-loading=\"true\" aria-hidden=\"true\">", "", "</tr>"],
32
+ _tmpl$24 = ["<td", "><span class=\"k2b-data-table__skeleton\"></span></td>"],
33
+ _tmpl$25 = ["<tbody>", "", "</tbody>"],
34
+ _tmpl$26 = ["<tbody aria-hidden=\"true\"><tr><td class=\"k2b-data-table__fill\"", "></td></tr></tbody>"],
35
+ _tmpl$27 = ["<tbody class=\"k2b-data-table__group\"><tr class=\"k2b-data-table__group-row\"><th scope=\"rowgroup\"", ">", "<span class=\"k2b-data-table__group-count\"><span aria-hidden=\"true\">", "</span><span class=\"k2b-sr-only\">, ", "</span></span></th></tr>", "</tbody>"],
36
+ _tmpl$28 = "<td class=\"k2b-data-table__footer-cell k2b-data-table__details-toggle\"></td>",
37
+ _tmpl$29 = ["<tr class=\"k2b-data-table__details\" data-footer=\"true\"><td", "><dl>", "</dl></td></tr>"],
38
+ _tmpl$30 = ["<tfoot class=\"k2b-data-table__foot\" data-sticky=\"true\"><tr class=\"k2b-data-table__foot-row\">", "", "</tr>", "</tfoot>"],
39
+ _tmpl$31 = ["<td class=\"k2b-data-table__footer-cell\"", ">", "</td>"],
40
+ _tmpl$32 = ["<div class=\"k2b-data-table__scrollbar\"", " aria-hidden=\"true\"><span style=\"", "\"></span></div>"],
41
+ _tmpl$33 = ["<div class=\"", "\">", "</div>"],
42
+ _tmpl$34 = ["<span", ">", "</span>"],
43
+ _tmpl$35 = ["<footer class=\"", "\">", "</footer>"];
29
44
  import { createContext, createEffect, createMemo, createSignal, createUniqueId, For, Match, on, onCleanup, onMount, Show, Switch, useContext } from "solid-js";
30
45
  import { Dynamic } from "solid-js/web";
31
46
  import { announce } from "../feedback/announce";
@@ -33,15 +48,20 @@ import { suppressTextSelection } from "../internal/text-selection";
33
48
  import { useLocale } from "../intl/locale";
34
49
  import { useUiMessages } from "../intl/messages";
35
50
  import { PanelHeader } from "../layout/PanelHeader";
51
+ import { DeltaBadge } from "../surfaces/delta-badge";
36
52
  import { Paper } from "../surfaces/Paper";
37
53
  import Placeholder from "../surfaces/Placeholder";
54
+ import { StatusBadge } from "../surfaces/StatusBadge";
55
+ import { formatTableNumber, groupRows, isEmptyCell, isNumericColumnType, readTableValue, tableCellText } from "./data-table-columns";
38
56
  import { useDataTableMessages } from "./data-table-messages";
57
+ import { FlowAmount } from "./FlowAmount";
39
58
  const DataTablePanelContext = createContext();
40
- const defaultRender = (value, locale, messages) => {
59
+ const defaultRender = (value, locale, numbers, messages) => {
41
60
  if (value === null || value === undefined || value === "") return "—";
42
61
  if (value instanceof Date) return value.toLocaleString(locale);
43
62
  if (typeof value === "boolean") return value ? messages.yes : messages.no;
44
- if (typeof value === "number" || typeof value === "bigint") return String(value);
63
+ // Numbers read in the reader's language: grouping and decimal mark follow the locale, at most three decimals.
64
+ if (typeof value === "number" || typeof value === "bigint") return numbers.format(Object.is(value, -0) ? 0 : value);
45
65
  if (typeof value === "string") return value;
46
66
  return JSON.stringify(value);
47
67
  };
@@ -190,17 +210,14 @@ function DataTableRoot(props) {
190
210
  suppressTextSelection(event.pointerId);
191
211
  scrollFromPointer(event, axis);
192
212
  };
193
- const valueOf = (row, col) => {
194
- if (typeof col.value === "function") return col.value(row);
195
- if (col.value) return row[col.value];
196
- return undefined;
197
- };
213
+ const valueOf = (row, col) => readTableValue(row, col);
198
214
  const columnPresentation = createMemo(() => {
199
215
  const presentation = new Map();
200
216
  for (const col of props.columns) {
201
- let numeric = false;
202
- let date = false;
203
- if (col.align === undefined || col.nowrap === undefined) {
217
+ // A typed column says what it holds; only an untyped one is read from its first value.
218
+ let numeric = isNumericColumnType(col.type);
219
+ let date = col.type === "date";
220
+ if (!col.type && (col.align === undefined || col.nowrap === undefined)) {
204
221
  for (const row of props.rows) {
205
222
  const value = valueOf(row, col);
206
223
  if (value === null || value === undefined || value === "") continue;
@@ -223,6 +240,44 @@ function DataTableRoot(props) {
223
240
  return align === "left" ? undefined : align;
224
241
  };
225
242
  const nowrapAttr = col => columnPresentation().get(col.id)?.nowrap ? "true" : undefined;
243
+ /** Text columns wrap inside their cell; every other value keeps one line. */
244
+ const wrapAttr = col => col.type === "text" && col.nowrap !== true ? "true" : undefined;
245
+ const priorityAttr = col => col.priority === 2 || col.priority === 3 ? String(col.priority) : undefined;
246
+ /** The lowest priority present: 3 shows the details toggle below 560 px, 2 below 420 px. */
247
+ const detailsPriority = createMemo(() => {
248
+ const priorities = props.columns.map(col => col.priority ?? 1);
249
+ return priorities.includes(3) ? "3" : priorities.includes(2) ? "2" : undefined;
250
+ });
251
+ const hiddenColumns = () => props.columns.filter(col => priorityAttr(col));
252
+ const columnCount = () => props.columns.length + (detailsPriority() ? 1 : 0);
253
+ const [openDetails, setOpenDetails] = createSignal(new Set());
254
+ const toggleDetails = row => setOpenDetails(open => {
255
+ const next = new Set(open);
256
+ if (!next.delete(row)) next.add(row);
257
+ return next;
258
+ });
259
+ /** A bar column fills its track at `max`, or else at its largest value. */
260
+ const barMax = createMemo(() => {
261
+ const max = new Map();
262
+ for (const col of props.columns) {
263
+ if (col.type !== "bar") continue;
264
+ if (col.max !== undefined && col.max > 0) {
265
+ max.set(col.id, col.max);
266
+ continue;
267
+ }
268
+ let largest = 0;
269
+ for (const row of props.rows) {
270
+ const value = Number(valueOf(row, col));
271
+ if (Number.isFinite(value)) largest = Math.max(largest, Math.abs(value));
272
+ }
273
+ max.set(col.id, largest);
274
+ }
275
+ return max;
276
+ });
277
+ const groups = createMemo(() => {
278
+ const col = props.groupBy ? props.columns.find(entry => entry.id === props.groupBy) : undefined;
279
+ return col ? groupRows(props.rows, col, locale()) : null;
280
+ });
226
281
  const sortKeyOf = col => col.sortable === true ? col.id : typeof col.sortable === "string" ? col.sortable : null;
227
282
 
228
283
  /**
@@ -280,8 +335,51 @@ function DataTableRoot(props) {
280
335
  }
281
336
  });
282
337
  };
283
- const renderValueDefault = value => defaultRender(value, locale(), messages());
284
- const renderCellDefault = (row, col) => renderValueDefault(valueOf(row, col));
338
+ const numberFormat = createMemo(() => new Intl.NumberFormat(locale()));
339
+ const renderValueDefault = value => defaultRender(value, locale(), numberFormat(), messages());
340
+ /** A typed column shows its value the way its type reads; an untyped one falls back to the plain rendering. */
341
+ const renderTypedValue = (col, value) => {
342
+ if (!col.type || isEmptyCell(value)) return renderValueDefault(value);
343
+ if (col.type === "status") {
344
+ const state = col.states?.[String(value)];
345
+ return state ? _$createComponent(StatusBadge, {
346
+ get tone() {
347
+ return state.tone;
348
+ },
349
+ get label() {
350
+ return state.label;
351
+ },
352
+ variant: "dot"
353
+ }) : String(value);
354
+ }
355
+ if (col.type === "flow" && col.format?.currency && Number.isFinite(Number(value))) return _$createComponent(FlowAmount, {
356
+ get value() {
357
+ return Number(value);
358
+ },
359
+ get currency() {
360
+ return col.format.currency;
361
+ },
362
+ get decimals() {
363
+ return col.format.decimals;
364
+ }
365
+ });
366
+ if (col.type === "delta" && Number.isFinite(Number(value))) return _$createComponent(DeltaBadge, {
367
+ get delta() {
368
+ return {
369
+ value: Number(value),
370
+ unit: col.delta?.unit,
371
+ better: col.delta?.better
372
+ };
373
+ }
374
+ });
375
+ if (col.type === "bar") {
376
+ const number = Number(value);
377
+ const max = barMax().get(col.id) ?? 0;
378
+ if (!Number.isFinite(number)) return String(value);
379
+ return _$ssr(_tmpl$7, _$escape(formatTableNumber(number, col, locale())), _$ssrStyleProperty("width:", `${max > 0 ? _$escape(Math.min(100, Math.abs(number) / max * 100), true) : 0}%`));
380
+ }
381
+ return tableCellText(value, col, locale());
382
+ };
285
383
  const onRowKeyDown = (event, row) => {
286
384
  if (!isInteractive()) return;
287
385
  if (isNestedRowControl(event)) return;
@@ -305,6 +403,53 @@ function DataTableRoot(props) {
305
403
  if (typeof props.rowClass === "function") return props.rowClass(row) ?? "";
306
404
  return props.rowClass ?? "";
307
405
  };
406
+
407
+ // A heading given as a JSX node lives in the head; each details line needs its own copy, so it takes text or a fresh call.
408
+ const detailLabel = col => typeof col.header === "function" ? col.header({
409
+ col
410
+ }) : typeof col.header === "string" || typeof col.header === "number" ? col.header : col.id;
411
+ const cellContent = (row, col, value) => props.renderCell ? props.renderCell({
412
+ row,
413
+ col,
414
+ value,
415
+ render: v => renderTypedValue(col, v)
416
+ }) : renderTypedValue(col, value);
417
+
418
+ /** `last` marks the final row of its body when details rows follow every row, so the frame keeps the only edge. */
419
+ const renderRow = (row, last) => {
420
+ const id = () => rowId(row);
421
+ const isSelected = () => props.selection ? props.selection.selected().has(id() ?? "") : props.selectedRowId && id() === props.selectedRowId;
422
+ const detailsId = `k2b-data-table-${createUniqueId()}-details`;
423
+ const open = () => openDetails().has(row);
424
+ return [_$ssr(_tmpl$9, `k2b-data-table__row ${_$escape(rowClass(row), true)}`, _$ssrAttribute("data-hover", shouldHoverRows() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-clickable", shouldHoverRows() && isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-selected", isSelected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-details-open", open() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-last", detailsPriority() && last() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("aria-selected", props.selection ? !!isSelected() : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", props.selection ? props.selection.focused() === id() ? 0 : -1 : isInteractive() ? 0 : _$escape(undefined, true), false), _$escape(_$createComponent(For, {
425
+ get each() {
426
+ return props.columns;
427
+ },
428
+ children: (col, index) => {
429
+ const value = () => valueOf(row, col);
430
+ return _$ssr(_tmpl$1, `${_$escape(col.cellClass ?? "", true)} ${_$escape(col.class ?? "", true)}`, _$ssrAttribute("data-nowrap", _$escape(nowrapAttr(col), true), false) + _$ssrAttribute("data-wrap", _$escape(wrapAttr(col), true), false) + _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false) + _$ssrAttribute("data-valign", props.verticalAlign && props.verticalAlign !== "middle" ? _$escape(props.verticalAlign, true) : _$escape(undefined, true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false), _$ssrAttribute("class", _$escape(cellContentClass(), true), false), _$escape(cellContent(row, col, value())));
431
+ }
432
+ })), _$escape(_$createComponent(Show, {
433
+ get when() {
434
+ return detailsPriority();
435
+ },
436
+ get children() {
437
+ return _$ssr(_tmpl$8, _$ssrAttribute("aria-expanded", _$escape(open(), true), false) + _$ssrAttribute("aria-controls", _$escape(detailsId, true), false) + _$ssrAttribute("aria-label", _$escape(dataTableMessages().showDetails, true), false), `ti ${open() ? "ti-chevron-up" : "ti-chevron-down"}`);
438
+ }
439
+ }))), _$createComponent(Show, {
440
+ get when() {
441
+ return detailsPriority();
442
+ },
443
+ get children() {
444
+ return _$ssr(_tmpl$0, _$ssrAttribute("id", _$escape(detailsId, true), false), _$ssrAttribute("hidden", !open(), true), _$ssrAttribute("colspan", _$escape(columnCount(), true), false), _$escape(_$createComponent(For, {
445
+ get each() {
446
+ return hiddenColumns();
447
+ },
448
+ children: col => _$ssr(_tmpl$10, _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false), _$escape(detailLabel(col)), _$escape(cellContent(row, col, valueOf(row, col))))
449
+ })));
450
+ }
451
+ })];
452
+ };
308
453
  onMount(() => {
309
454
  if (typeof IntersectionObserver === "undefined" || !loadMoreRef) return;
310
455
  // The viewport root notices the end whichever element scrolls; `isNearBottom` decides.
@@ -372,6 +517,9 @@ function DataTableRoot(props) {
372
517
  get ["data-has-footer"]() {
373
518
  return props.footer ? "true" : undefined;
374
519
  },
520
+ get ["data-priorities"]() {
521
+ return detailsPriority();
522
+ },
375
523
  get ["data-overflow-x"]() {
376
524
  return scrollbars().x.overflow ? "true" : undefined;
377
525
  },
@@ -386,35 +534,59 @@ function DataTableRoot(props) {
386
534
  },
387
535
  onMouseLeave: () => setHoveredColumn(null),
388
536
  get children() {
389
- return [_$ssr(_tmpl$0, _$ssrAttribute("aria-label", labelledBy() ? _$escape(undefined, true) : _$escape(props.ariaLabel ?? dataTableMessages().dataTable, true), false) + _$ssrAttribute("aria-labelledby", _$escape(labelledBy(), true), false) + _$ssrAttribute("aria-busy", props.loading ? "true" : _$escape(undefined, true), false), `k2b-table-wrap${props.scrollClass ? ` ${_$escape(props.scrollClass, true)}` : ""}`, _$ssrAttribute("data-density", props.density === "compact" ? "compact" : _$escape(undefined, true), false) + _$ssrAttribute("data-has-footer", props.footer ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-surface", _$escape(surface(), true), false) + _$ssrAttribute("data-scroll-preserve", _$escape(props.scrollPreserveKey || undefined, true), false), _$ssrAttribute("class", _$escape(tableClass(), true), false) + _$ssrAttribute("data-fill", props.fillHeight ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
537
+ return [_$ssr(_tmpl$14, _$ssrAttribute("aria-label", labelledBy() ? _$escape(undefined, true) : _$escape(props.ariaLabel ?? dataTableMessages().dataTable, true), false) + _$ssrAttribute("aria-labelledby", _$escape(labelledBy(), true), false) + _$ssrAttribute("aria-busy", props.loading ? "true" : _$escape(undefined, true), false), `k2b-table-wrap${props.scrollClass ? ` ${_$escape(props.scrollClass, true)}` : ""}`, _$ssrAttribute("data-density", props.density === "compact" ? "compact" : _$escape(undefined, true), false) + _$ssrAttribute("data-has-footer", props.footer ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-surface", _$escape(surface(), true), false) + _$ssrAttribute("data-scroll-preserve", _$escape(props.scrollPreserveKey || undefined, true), false), _$ssrAttribute("class", _$escape(tableClass(), true), false) + _$ssrAttribute("data-fill", props.fillHeight ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
390
538
  get when() {
391
539
  return props.loading;
392
540
  },
393
541
  get children() {
394
- return _$ssr(_tmpl$7, _$escape(dataTableMessages().loadingRows));
542
+ return _$ssr(_tmpl$11, _$escape(dataTableMessages().loadingRows));
395
543
  }
396
544
  })), _$ssrAttribute("data-sticky", props.stickyHeader === false ? _$escape(undefined, true) : "true", false), _$escape(_$createComponent(For, {
397
545
  get each() {
398
546
  return props.columns;
399
547
  },
400
- children: (col, index) => _$ssr(_tmpl$1, `${_$escape(col.headerClass ?? "", true)} ${_$escape(col.class ?? "", true)}`, _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false) + _$ssrAttribute("aria-sort", _$escape(ariaSortFor(col), true), false), props.renderHeader ? _$escape(props.renderHeader({
548
+ children: (col, index) => _$ssr(_tmpl$15, `${_$escape(col.headerClass ?? "", true)} ${_$escape(col.class ?? "", true)}`, _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false) + _$ssrAttribute("aria-sort", _$escape(ariaSortFor(col), true), false), props.renderHeader ? _$escape(props.renderHeader({
401
549
  col,
402
550
  render: () => renderHeaderDefault(col)
403
551
  })) : _$escape(renderHeaderDefault(col)))
552
+ })), _$escape(_$createComponent(Show, {
553
+ get when() {
554
+ return detailsPriority();
555
+ },
556
+ get children() {
557
+ return _$ssr(_tmpl$12, _$escape(dataTableMessages().details));
558
+ }
404
559
  })), _$escape(_$createComponent(Show, {
405
560
  get when() {
406
561
  return props.rows.length > 0;
407
562
  },
408
563
  get fallback() {
409
- return _$createComponent(Show, {
564
+ return _$ssr(_tmpl$17, _$escape(_$createComponent(Show, {
410
565
  get when() {
411
566
  return props.loading;
412
567
  },
413
568
  get fallback() {
414
- return _$ssr(_tmpl$10, _$ssrAttribute("colspan", _$escape(props.columns.length, true), false), _$escape(_$createComponent(Placeholder, {
415
- get description() {
416
- return props.empty ?? dataTableMessages().noRecords;
417
- }
569
+ return _$ssr(_tmpl$18, _$escape(_$createComponent(Show, {
570
+ get when() {
571
+ return props.query?.trim();
572
+ },
573
+ get fallback() {
574
+ return _$ssr(_tmpl$19, _$ssrAttribute("colspan", _$escape(columnCount(), true), false), _$escape(_$createComponent(Placeholder, {
575
+ get description() {
576
+ return props.empty ?? dataTableMessages().noRecords;
577
+ }
578
+ })));
579
+ },
580
+ children: query => _$ssr(_tmpl$21, _$ssrAttribute("colspan", _$escape(columnCount(), true), false), _$escape(dataTableMessages().noMatch({
581
+ query: query()
582
+ })), _$escape(_$createComponent(Show, {
583
+ get when() {
584
+ return props.onClearQuery;
585
+ },
586
+ get children() {
587
+ return _$ssr(_tmpl$20, _$escape(dataTableMessages().clearSearch));
588
+ }
589
+ })))
418
590
  })));
419
591
  },
420
592
  get children() {
@@ -424,73 +596,110 @@ function DataTableRoot(props) {
424
596
  length: loadingRows()
425
597
  });
426
598
  },
427
- children: () => _$ssr(_tmpl$11, _$escape(_$createComponent(For, {
599
+ children: () => _$ssr(_tmpl$23, _$escape(_$createComponent(For, {
428
600
  get each() {
429
601
  return props.columns;
430
602
  },
431
- children: col => _$ssr(_tmpl$12, _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false))
603
+ children: col => _$ssr(_tmpl$24, _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false))
604
+ })), _$escape(_$createComponent(Show, {
605
+ get when() {
606
+ return detailsPriority();
607
+ },
608
+ get children() {
609
+ return _$ssr(_tmpl$22);
610
+ }
432
611
  })))
433
612
  }), _$createComponent(Show, {
434
613
  get when() {
435
614
  return props.fillHeight;
436
615
  },
437
616
  get children() {
438
- return _$ssr(_tmpl$8, _$ssrAttribute("colspan", _$escape(props.columns.length, true), false));
617
+ return _$ssr(_tmpl$16, _$ssrAttribute("colspan", _$escape(columnCount(), true), false));
439
618
  }
440
619
  })];
441
620
  }
442
- });
621
+ })));
443
622
  },
444
623
  get children() {
445
- return [_$createComponent(For, {
446
- get each() {
447
- return props.rows;
624
+ return _$createComponent(Show, {
625
+ get when() {
626
+ return groups();
448
627
  },
449
- children: row => {
450
- const id = () => rowId(row);
451
- const isSelected = () => props.selection ? props.selection.selected().has(id() ?? "") : props.selectedRowId && id() === props.selectedRowId;
452
- return _$ssr(_tmpl$13, `k2b-data-table__row ${_$escape(rowClass(row), true)}`, _$ssrAttribute("data-hover", shouldHoverRows() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-clickable", shouldHoverRows() && isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-selected", isSelected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("aria-selected", props.selection ? !!isSelected() : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", props.selection ? props.selection.focused() === id() ? 0 : -1 : isInteractive() ? 0 : _$escape(undefined, true), false), _$escape(_$createComponent(For, {
628
+ get fallback() {
629
+ return _$ssr(_tmpl$25, _$escape(_$createComponent(For, {
453
630
  get each() {
454
- return props.columns;
631
+ return props.rows;
632
+ },
633
+ children: (row, index) => renderRow(row, () => index() === props.rows.length - 1)
634
+ })), _$escape(_$createComponent(Show, {
635
+ get when() {
636
+ return props.fillHeight;
455
637
  },
456
- children: (col, index) => {
457
- const value = () => valueOf(row, col);
458
- return _$ssr(_tmpl$14, `${_$escape(col.cellClass ?? "", true)} ${_$escape(col.class ?? "", true)}`, _$ssrAttribute("data-nowrap", _$escape(nowrapAttr(col), true), false) + _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-valign", props.verticalAlign && props.verticalAlign !== "middle" ? _$escape(props.verticalAlign, true) : _$escape(undefined, true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false), _$ssrAttribute("class", _$escape(cellContentClass(), true), false), props.renderCell ? _$escape(props.renderCell({
459
- row,
460
- col,
461
- value: value(),
462
- render: v => renderCellDefault(row, {
463
- ...col,
464
- value: () => v
465
- })
466
- })) : _$escape(renderValueDefault(value())));
638
+ get children() {
639
+ return _$ssr(_tmpl$16, _$ssrAttribute("colspan", _$escape(columnCount(), true), false));
467
640
  }
468
641
  })));
469
- }
470
- }), _$createComponent(Show, {
471
- get when() {
472
- return props.fillHeight;
473
642
  },
474
- get children() {
475
- return _$ssr(_tmpl$8, _$ssrAttribute("colspan", _$escape(props.columns.length, true), false));
476
- }
477
- })];
643
+ children: list => [_$createComponent(For, {
644
+ get each() {
645
+ return list();
646
+ },
647
+ children: group => _$ssr(_tmpl$27, _$ssrAttribute("colspan", _$escape(columnCount(), true), false), _$escape(group.label || "—"), _$escape(group.rows.length), _$escape(dataTableMessages().rowCount({
648
+ count: group.rows.length
649
+ })), _$escape(_$createComponent(For, {
650
+ get each() {
651
+ return group.rows;
652
+ },
653
+ children: (row, index) => renderRow(row, () => index() === group.rows.length - 1)
654
+ })))
655
+ }), _$createComponent(Show, {
656
+ get when() {
657
+ return props.fillHeight;
658
+ },
659
+ get children() {
660
+ return _$ssr(_tmpl$26, _$ssrAttribute("colspan", _$escape(columnCount(), true), false));
661
+ }
662
+ })]
663
+ });
478
664
  }
479
665
  })), _$escape(_$createComponent(Show, {
480
666
  get when() {
481
667
  return props.footer;
482
668
  },
483
- children: footer => _$ssr(_tmpl$15, _$escape(_$createComponent(For, {
669
+ children: footer => _$ssr(_tmpl$30, _$escape(_$createComponent(For, {
484
670
  get each() {
485
671
  return props.columns;
486
672
  },
487
673
  children: (col, index) => {
488
674
  const value = () => footer().values?.[col.id];
489
- return _$ssr(_tmpl$16, _$ssrAttribute("data-nowrap", _$escape(nowrapAttr(col), true), false) + _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false), footer().renderCell ? _$escape(footer().renderCell({
675
+ return _$ssr(_tmpl$31, _$ssrAttribute("data-nowrap", _$escape(nowrapAttr(col), true), false) + _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false), footer().renderCell ? _$escape(footer().renderCell({
490
676
  col,
491
677
  value: value(),
492
- render: renderValueDefault
493
- })) : _$escape(renderValueDefault(value())));
678
+ render: v => renderTypedValue(col, v)
679
+ })) : _$escape(renderTypedValue(col, value())));
680
+ }
681
+ })), _$escape(_$createComponent(Show, {
682
+ get when() {
683
+ return detailsPriority();
684
+ },
685
+ get children() {
686
+ return _$ssr(_tmpl$28);
687
+ }
688
+ })), _$escape(_$createComponent(Show, {
689
+ get when() {
690
+ return detailsPriority();
691
+ },
692
+ get children() {
693
+ return _$ssr(_tmpl$29, _$ssrAttribute("colspan", _$escape(columnCount(), true), false), _$escape(_$createComponent(For, {
694
+ get each() {
695
+ return hiddenColumns();
696
+ },
697
+ children: col => _$ssr(_tmpl$10, _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false), _$escape(detailLabel(col)), footer().renderCell ? _$escape(footer().renderCell({
698
+ col,
699
+ value: footer().values?.[col.id],
700
+ render: v => renderTypedValue(col, v)
701
+ })) : _$escape(renderTypedValue(col, footer().values?.[col.id])))
702
+ })));
494
703
  }
495
704
  })))
496
705
  })), _$escape(_$createComponent(Show, {
@@ -498,11 +707,11 @@ function DataTableRoot(props) {
498
707
  return shouldRenderLoadMoreSentinel();
499
708
  },
500
709
  get children() {
501
- return _$ssr(_tmpl$9);
710
+ return _$ssr(_tmpl$13);
502
711
  }
503
712
  }))), _$createComponent(For, {
504
713
  each: ["y", "x"],
505
- children: axis => _$ssr(_tmpl$17, _$ssrAttribute("data-axis", _$escape(axis, true), false) + _$ssrAttribute("data-overflow", scrollbars()[axis].overflow ? "true" : _$escape(undefined, true), false), _$ssrStyleProperty("--k2b-data-table-scroll-offset:", `${_$escape(scrollbars()[axis].offset, true)}px`) + _$ssrStyleProperty(";--k2b-data-table-scroll-size:", `${_$escape(scrollbars()[axis].size, true)}px`))
714
+ children: axis => _$ssr(_tmpl$32, _$ssrAttribute("data-axis", _$escape(axis, true), false) + _$ssrAttribute("data-overflow", scrollbars()[axis].overflow ? "true" : _$escape(undefined, true), false), _$ssrStyleProperty("--k2b-data-table-scroll-offset:", `${_$escape(scrollbars()[axis].offset, true)}px`) + _$ssrStyleProperty(";--k2b-data-table-scroll-size:", `${_$escape(scrollbars()[axis].size, true)}px`))
506
715
  })];
507
716
  }
508
717
  });
@@ -535,9 +744,9 @@ const DataTablePanel = props => {
535
744
  const DataTableHeader = props => {
536
745
  const panel = useContext(DataTablePanelContext);
537
746
  panel?.registerHeading();
538
- return _$ssr(_tmpl$18, `k2b-data-panel__header ${_$escape(props.class ?? "", true)}`, _$escape(_$createComponent(PanelHeader, {
747
+ return _$ssr(_tmpl$33, `k2b-data-panel__header ${_$escape(props.class ?? "", true)}`, _$escape(_$createComponent(PanelHeader, {
539
748
  get title() {
540
- return _$ssr(_tmpl$19, _$ssrAttribute("id", _$escape(panel?.headingId, true), false), _$escape(props.title));
749
+ return _$ssr(_tmpl$34, _$ssrAttribute("id", _$escape(panel?.headingId, true), false), _$escape(props.title));
541
750
  },
542
751
  get subtitle() {
543
752
  return props.subtitle;
@@ -553,8 +762,8 @@ const DataTableHeader = props => {
553
762
  }
554
763
  })));
555
764
  };
556
- const DataTableControls = props => _$ssr(_tmpl$18, `k2b-data-panel__controls ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
557
- const DataTablePanelFooter = props => _$ssr(_tmpl$20, `k2b-data-panel__footer ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
765
+ const DataTableControls = props => _$ssr(_tmpl$33, `k2b-data-panel__controls ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
766
+ const DataTablePanelFooter = props => _$ssr(_tmpl$35, `k2b-data-panel__footer ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
558
767
  const DataTable = DataTableRoot;
559
768
  DataTable.Panel = DataTablePanel;
560
769
  DataTable.Header = DataTableHeader;