@smwb/ui-solid 0.12.1 → 0.13.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 (841) hide show
  1. package/README.md +74 -0
  2. package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
  3. package/dist/assets/styles/less/components/card/card.entry.css +1 -1
  4. package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
  5. package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
  6. package/dist/assets/styles/less/components/dagView/dagView.entry.css +1 -0
  7. package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
  8. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
  9. package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
  10. package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
  11. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  12. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  13. package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
  14. package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
  15. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  16. package/dist/components/base/animateHeight/animateHeight.js +41 -42
  17. package/dist/components/base/animateHeight/animateHeight.js.map +1 -1
  18. package/dist/components/base/icon/icon.d.ts +6 -2
  19. package/dist/components/base/icon/icon.js +41 -41
  20. package/dist/components/base/icon/icon.js.map +1 -1
  21. package/dist/components/base/ripple/ripple.d.ts +3 -0
  22. package/dist/components/base/ripple/ripple.js +46 -34
  23. package/dist/components/base/ripple/ripple.js.map +1 -1
  24. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  25. package/dist/components/dataDisplay/avatar/avatar.js +37 -33
  26. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  27. package/dist/components/dataDisplay/card/card.d.ts +32 -1
  28. package/dist/components/dataDisplay/card/card.js +47 -34
  29. package/dist/components/dataDisplay/card/card.js.map +1 -1
  30. package/dist/components/dataDisplay/carousel/carousel.js +92 -88
  31. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  32. package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
  33. package/dist/components/dataDisplay/chat/chatIconButton.js +23 -13
  34. package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  35. package/dist/components/dataDisplay/chat/chatLayout.d.ts +2 -0
  36. package/dist/components/dataDisplay/chat/chatLayout.js +33 -29
  37. package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
  38. package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +2 -0
  39. package/dist/components/dataDisplay/chat/chatOverlayLayout.js +19 -17
  40. package/dist/components/dataDisplay/chat/chatOverlayLayout.js.map +1 -1
  41. package/dist/components/dataDisplay/chip/chip.d.ts +32 -0
  42. package/dist/components/dataDisplay/chip/chip.js +104 -63
  43. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  44. package/dist/components/dataDisplay/chipGroup/chipGroup.js +44 -39
  45. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  46. package/dist/components/dataDisplay/dagView/dagLayout.d.ts +74 -0
  47. package/dist/components/dataDisplay/dagView/dagLayout.js +284 -0
  48. package/dist/components/dataDisplay/dagView/dagLayout.js.map +1 -0
  49. package/dist/components/dataDisplay/dagView/dagView.d.ts +151 -0
  50. package/dist/components/dataDisplay/dagView/dagView.js +488 -0
  51. package/dist/components/dataDisplay/dagView/dagView.js.map +1 -0
  52. package/dist/components/dataDisplay/dagView/index.d.ts +4 -0
  53. package/dist/components/dataDisplay/dagView/panZoom.d.ts +75 -0
  54. package/dist/components/dataDisplay/dagView/panZoom.js +161 -0
  55. package/dist/components/dataDisplay/dagView/panZoom.js.map +1 -0
  56. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
  57. package/dist/components/dataDisplay/descriptionList/descriptionList.js +20 -24
  58. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  59. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +114 -81
  60. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  61. package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
  62. package/dist/components/dataDisplay/kanban/kanban.js +71 -61
  63. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
  64. package/dist/components/dataDisplay/lazyImage/lazyImage.js +14 -12
  65. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  66. package/dist/components/dataDisplay/list/list.d.ts +2 -0
  67. package/dist/components/dataDisplay/list/list.js +16 -12
  68. package/dist/components/dataDisplay/list/list.js.map +1 -1
  69. package/dist/components/dataDisplay/list/listItem.js +20 -18
  70. package/dist/components/dataDisplay/list/listItem.js.map +1 -1
  71. package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
  72. package/dist/components/dataDisplay/meter/meter.js +15 -13
  73. package/dist/components/dataDisplay/meter/meter.js.map +1 -1
  74. package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
  75. package/dist/components/dataDisplay/personChip/personChip.js +12 -10
  76. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
  77. package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
  78. package/dist/components/dataDisplay/stat/stat.js +41 -43
  79. package/dist/components/dataDisplay/stat/stat.js.map +1 -1
  80. package/dist/components/dataDisplay/table/table.d.ts +10 -1
  81. package/dist/components/dataDisplay/table/table.js +46 -22
  82. package/dist/components/dataDisplay/table/table.js.map +1 -1
  83. package/dist/components/dataDisplay/table/tableBody.js +25 -12
  84. package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
  85. package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
  86. package/dist/components/dataDisplay/table/tableCell.js +15 -14
  87. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  88. package/dist/components/dataDisplay/table/tableColumns.d.ts +146 -0
  89. package/dist/components/dataDisplay/table/tableColumns.js +254 -0
  90. package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
  91. package/dist/components/dataDisplay/table/tableEntities.d.ts +4 -0
  92. package/dist/components/dataDisplay/table/tableEntities.js +6 -0
  93. package/dist/components/dataDisplay/table/tableEntities.js.map +1 -0
  94. package/dist/components/dataDisplay/table/tableHead.js +29 -11
  95. package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
  96. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +23 -1
  97. package/dist/components/dataDisplay/table/tableHeadCell.js +51 -26
  98. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  99. package/dist/components/dataDisplay/table/tableHtmlText.d.ts +8 -0
  100. package/dist/components/dataDisplay/table/tableHtmlText.js +121 -0
  101. package/dist/components/dataDisplay/table/tableHtmlText.js.map +1 -0
  102. package/dist/components/dataDisplay/table/tableRow.d.ts +2 -0
  103. package/dist/components/dataDisplay/table/tableRow.js +28 -13
  104. package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
  105. package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
  106. package/dist/components/dataDisplay/thumbCard/thumbCard.js +86 -58
  107. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  108. package/dist/components/dataDisplay/treeView/treeView.d.ts +2 -0
  109. package/dist/components/dataDisplay/treeView/treeView.js +4 -2
  110. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  111. package/dist/components/dataDisplay/typography/typography.js +22 -26
  112. package/dist/components/dataDisplay/typography/typography.js.map +1 -1
  113. package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
  114. package/dist/components/feedBack/emptyState/emptyState.js +20 -16
  115. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
  116. package/dist/components/feedBack/message/message.d.ts +2 -0
  117. package/dist/components/feedBack/message/message.js +17 -13
  118. package/dist/components/feedBack/message/message.js.map +1 -1
  119. package/dist/components/feedBack/modal/modal.js +20 -16
  120. package/dist/components/feedBack/modal/modal.js.map +1 -1
  121. package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
  122. package/dist/components/feedBack/skeleton/skeleton.js +43 -35
  123. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  124. package/dist/components/feedBack/snackbar/snackbar.js +24 -20
  125. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  126. package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
  127. package/dist/components/feedBack/tooltip/tooltip.js +65 -41
  128. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  129. package/dist/components/inputs/button/button.d.ts +2 -0
  130. package/dist/components/inputs/button/button.js +48 -20
  131. package/dist/components/inputs/button/button.js.map +1 -1
  132. package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
  133. package/dist/components/inputs/buttonGroups/buttonGroup.js +14 -10
  134. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  135. package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
  136. package/dist/components/inputs/checkbox/checkbox.js +59 -36
  137. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  138. package/dist/components/inputs/datePicker/datePicker.js +108 -97
  139. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  140. package/dist/components/inputs/datePicker/datePickerActionLabel.js +19 -17
  141. package/dist/components/inputs/datePicker/datePickerActionLabel.js.map +1 -1
  142. package/dist/components/inputs/datePicker/datePickerDay.js +41 -25
  143. package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
  144. package/dist/components/inputs/datePicker/datePickerIconButton.js +24 -14
  145. package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  146. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +90 -79
  147. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  148. package/dist/components/inputs/floatingButton/floatingButton.js +26 -16
  149. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  150. package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
  151. package/dist/components/inputs/radioButton/radioButton.js +48 -34
  152. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  153. package/dist/components/inputs/rating/rating.d.ts +9 -0
  154. package/dist/components/inputs/rating/rating.js +74 -53
  155. package/dist/components/inputs/rating/rating.js.map +1 -1
  156. package/dist/components/inputs/selectField/dropdownMenu.d.ts +21 -1
  157. package/dist/components/inputs/selectField/dropdownMenu.js +268 -143
  158. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  159. package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
  160. package/dist/components/inputs/selectField/optionNavigation.js +37 -0
  161. package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
  162. package/dist/components/inputs/selectField/selectField.d.ts +32 -1
  163. package/dist/components/inputs/selectField/selectField.js +297 -126
  164. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  165. package/dist/components/inputs/slider/slider.d.ts +25 -3
  166. package/dist/components/inputs/slider/slider.js +320 -197
  167. package/dist/components/inputs/slider/slider.js.map +1 -1
  168. package/dist/components/inputs/textField/textField.d.ts +9 -1
  169. package/dist/components/inputs/textField/textField.js +104 -51
  170. package/dist/components/inputs/textField/textField.js.map +1 -1
  171. package/dist/components/inputs/textField/textFieldWrapper.d.ts +14 -0
  172. package/dist/components/inputs/textField/textFieldWrapper.js +52 -45
  173. package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
  174. package/dist/components/inputs/timePicker/timePicker.js +73 -62
  175. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  176. package/dist/components/inputs/toggle/toggle.d.ts +4 -0
  177. package/dist/components/inputs/toggle/toggle.js +43 -31
  178. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  179. package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
  180. package/dist/components/inputs/valueSlider/valueSlider.js +32 -27
  181. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  182. package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
  183. package/dist/components/layout/appLayout/appLayout.js +32 -30
  184. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  185. package/dist/components/layout/divider/divider.d.ts +2 -0
  186. package/dist/components/layout/divider/divider.js +22 -20
  187. package/dist/components/layout/divider/divider.js.map +1 -1
  188. package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
  189. package/dist/components/layout/floatingWindow/floatingWindow.js +171 -168
  190. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  191. package/dist/components/layout/grid/grid.d.ts +8 -0
  192. package/dist/components/layout/grid/grid.js +52 -44
  193. package/dist/components/layout/grid/grid.js.map +1 -1
  194. package/dist/components/layout/page/page.d.ts +2 -0
  195. package/dist/components/layout/page/page.js +14 -12
  196. package/dist/components/layout/page/page.js.map +1 -1
  197. package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
  198. package/dist/components/layout/pageHeader/pageHeader.js +23 -21
  199. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  200. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
  201. package/dist/components/layout/sectionHeader/sectionHeader.js +38 -36
  202. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  203. package/dist/components/layout/sheet/sheet.d.ts +2 -0
  204. package/dist/components/layout/sheet/sheet.js +50 -48
  205. package/dist/components/layout/sheet/sheet.js.map +1 -1
  206. package/dist/components/layout/stack/stack.d.ts +2 -0
  207. package/dist/components/layout/stack/stack.js +26 -24
  208. package/dist/components/layout/stack/stack.js.map +1 -1
  209. package/dist/components/navigation/appBar/appBar.d.ts +2 -0
  210. package/dist/components/navigation/appBar/appBar.js +18 -16
  211. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  212. package/dist/components/navigation/bottomBar/bottomBar.js +125 -120
  213. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  214. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
  215. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +18 -14
  216. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  217. package/dist/components/navigation/menu/menu.d.ts +6 -0
  218. package/dist/components/navigation/menu/menu.js.map +1 -1
  219. package/dist/components/navigation/menu/menuComponent.js +12 -23
  220. package/dist/components/navigation/menu/menuComponent.js.map +1 -1
  221. package/dist/components/navigation/menu/menuContext.d.ts +2 -0
  222. package/dist/components/navigation/menu/menuContext.js.map +1 -1
  223. package/dist/components/navigation/menu/menuFloating.js +54 -46
  224. package/dist/components/navigation/menu/menuFloating.js.map +1 -1
  225. package/dist/components/navigation/menu/menuItem.d.ts +4 -0
  226. package/dist/components/navigation/menu/menuItem.js +58 -33
  227. package/dist/components/navigation/menu/menuItem.js.map +1 -1
  228. package/dist/components/navigation/menu/menuList.d.ts +4 -0
  229. package/dist/components/navigation/menu/menuList.js +34 -16
  230. package/dist/components/navigation/menu/menuList.js.map +1 -1
  231. package/dist/components/navigation/menu/menuSubmenu.d.ts +8 -1
  232. package/dist/components/navigation/menu/menuSubmenu.js +58 -38
  233. package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
  234. package/dist/components/navigation/pagination/pagination.d.ts +2 -0
  235. package/dist/components/navigation/pagination/pagination.js +28 -24
  236. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  237. package/dist/components/navigation/sidebar/sidebar.js +27 -25
  238. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  239. package/dist/components/navigation/stepper/stepper.d.ts +2 -0
  240. package/dist/components/navigation/stepper/stepper.js +46 -42
  241. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  242. package/dist/components/navigation/tabs/tab/tab.js +46 -35
  243. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  244. package/dist/components/navigation/tabs/tabs.d.ts +7 -0
  245. package/dist/components/navigation/tabs/tabs.js +90 -75
  246. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  247. package/dist/components/navigation/tabs/tabsContext.d.ts +6 -4
  248. package/dist/components/navigation/tabs/tabsContext.js.map +1 -1
  249. package/dist/connects/rt/table/table.d.ts +16 -1
  250. package/dist/headless/components/base/animateHeight/animateHeight.js +41 -42
  251. package/dist/headless/components/base/animateHeight/animateHeight.js.map +1 -1
  252. package/dist/headless/components/base/icon/icon.js +40 -40
  253. package/dist/headless/components/base/icon/icon.js.map +1 -1
  254. package/dist/headless/components/base/ripple/ripple.js +46 -34
  255. package/dist/headless/components/base/ripple/ripple.js.map +1 -1
  256. package/dist/headless/components/dataDisplay/avatar/avatar.js +37 -33
  257. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  258. package/dist/headless/components/dataDisplay/card/card.js +44 -31
  259. package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
  260. package/dist/headless/components/dataDisplay/carousel/carousel.js +102 -98
  261. package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
  262. package/dist/headless/components/dataDisplay/chat/chatIconButton.js +23 -13
  263. package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  264. package/dist/headless/components/dataDisplay/chat/chatLayout.js +33 -29
  265. package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
  266. package/dist/headless/components/dataDisplay/chat/chatOverlayLayout.js +19 -17
  267. package/dist/headless/components/dataDisplay/chat/chatOverlayLayout.js.map +1 -1
  268. package/dist/headless/components/dataDisplay/chip/chip.js +104 -63
  269. package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
  270. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +44 -39
  271. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  272. package/dist/headless/components/dataDisplay/dagView/dagLayout.js +284 -0
  273. package/dist/headless/components/dataDisplay/dagView/dagLayout.js.map +1 -0
  274. package/dist/headless/components/dataDisplay/dagView/dagView.js +486 -0
  275. package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -0
  276. package/dist/headless/components/dataDisplay/dagView/panZoom.js +161 -0
  277. package/dist/headless/components/dataDisplay/dagView/panZoom.js.map +1 -0
  278. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +15 -19
  279. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  280. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +114 -81
  281. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  282. package/dist/headless/components/dataDisplay/kanban/kanban.js +71 -61
  283. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
  284. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +14 -12
  285. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  286. package/dist/headless/components/dataDisplay/list/list.js +16 -12
  287. package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
  288. package/dist/headless/components/dataDisplay/list/listItem.js +20 -18
  289. package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
  290. package/dist/headless/components/dataDisplay/meter/meter.js +14 -12
  291. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
  292. package/dist/headless/components/dataDisplay/personChip/personChip.js +12 -10
  293. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
  294. package/dist/headless/components/dataDisplay/stat/stat.js +43 -45
  295. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
  296. package/dist/headless/components/dataDisplay/table/table.js +47 -23
  297. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  298. package/dist/headless/components/dataDisplay/table/tableBody.js +25 -12
  299. package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
  300. package/dist/headless/components/dataDisplay/table/tableCell.js +15 -14
  301. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  302. package/dist/headless/components/dataDisplay/table/tableColumns.js +254 -0
  303. package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
  304. package/dist/headless/components/dataDisplay/table/tableEntities.js +6 -0
  305. package/dist/headless/components/dataDisplay/table/tableEntities.js.map +1 -0
  306. package/dist/headless/components/dataDisplay/table/tableHead.js +29 -11
  307. package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
  308. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +51 -26
  309. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  310. package/dist/headless/components/dataDisplay/table/tableHtmlText.js +121 -0
  311. package/dist/headless/components/dataDisplay/table/tableHtmlText.js.map +1 -0
  312. package/dist/headless/components/dataDisplay/table/tableRow.js +28 -13
  313. package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
  314. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +86 -58
  315. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  316. package/dist/headless/components/dataDisplay/treeView/treeView.js +4 -2
  317. package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
  318. package/dist/headless/components/dataDisplay/typography/typography.js +21 -25
  319. package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
  320. package/dist/headless/components/feedBack/emptyState/emptyState.js +9 -5
  321. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
  322. package/dist/headless/components/feedBack/message/message.js +17 -13
  323. package/dist/headless/components/feedBack/message/message.js.map +1 -1
  324. package/dist/headless/components/feedBack/modal/modal.js +20 -16
  325. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  326. package/dist/headless/components/feedBack/skeleton/skeleton.js +43 -35
  327. package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
  328. package/dist/headless/components/feedBack/snackbar/snackbar.js +30 -26
  329. package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
  330. package/dist/headless/components/feedBack/tooltip/tooltip.js +63 -39
  331. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  332. package/dist/headless/components/inputs/button/button.js +51 -23
  333. package/dist/headless/components/inputs/button/button.js.map +1 -1
  334. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +22 -18
  335. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  336. package/dist/headless/components/inputs/checkbox/checkbox.js +59 -36
  337. package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
  338. package/dist/headless/components/inputs/datePicker/datePicker.js +106 -95
  339. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  340. package/dist/headless/components/inputs/datePicker/datePickerActionLabel.js +19 -17
  341. package/dist/headless/components/inputs/datePicker/datePickerActionLabel.js.map +1 -1
  342. package/dist/headless/components/inputs/datePicker/datePickerDay.js +41 -25
  343. package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
  344. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +24 -14
  345. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  346. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +90 -79
  347. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  348. package/dist/headless/components/inputs/floatingButton/floatingButton.js +25 -15
  349. package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
  350. package/dist/headless/components/inputs/radioButton/radioButton.js +48 -34
  351. package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
  352. package/dist/headless/components/inputs/rating/rating.js +74 -53
  353. package/dist/headless/components/inputs/rating/rating.js.map +1 -1
  354. package/dist/headless/components/inputs/selectField/dropdownMenu.js +268 -143
  355. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  356. package/dist/headless/components/inputs/selectField/optionNavigation.js +37 -0
  357. package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
  358. package/dist/headless/components/inputs/selectField/selectField.js +297 -126
  359. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  360. package/dist/headless/components/inputs/slider/slider.js +320 -197
  361. package/dist/headless/components/inputs/slider/slider.js.map +1 -1
  362. package/dist/headless/components/inputs/textField/textField.js +104 -51
  363. package/dist/headless/components/inputs/textField/textField.js.map +1 -1
  364. package/dist/headless/components/inputs/textField/textFieldWrapper.js +52 -45
  365. package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
  366. package/dist/headless/components/inputs/timePicker/timePicker.js +74 -63
  367. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  368. package/dist/headless/components/inputs/toggle/toggle.js +42 -30
  369. package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
  370. package/dist/headless/components/inputs/valueSlider/valueSlider.js +33 -28
  371. package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
  372. package/dist/headless/components/layout/appLayout/appLayout.js +29 -27
  373. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  374. package/dist/headless/components/layout/divider/divider.js +19 -17
  375. package/dist/headless/components/layout/divider/divider.js.map +1 -1
  376. package/dist/headless/components/layout/floatingWindow/floatingWindow.js +185 -182
  377. package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  378. package/dist/headless/components/layout/grid/grid.js +54 -46
  379. package/dist/headless/components/layout/grid/grid.js.map +1 -1
  380. package/dist/headless/components/layout/page/page.js +12 -10
  381. package/dist/headless/components/layout/page/page.js.map +1 -1
  382. package/dist/headless/components/layout/pageHeader/pageHeader.js +22 -20
  383. package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
  384. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +39 -37
  385. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  386. package/dist/headless/components/layout/sheet/sheet.js +50 -48
  387. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  388. package/dist/headless/components/layout/stack/stack.js +23 -21
  389. package/dist/headless/components/layout/stack/stack.js.map +1 -1
  390. package/dist/headless/components/navigation/appBar/appBar.js +15 -13
  391. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  392. package/dist/headless/components/navigation/bottomBar/bottomBar.js +125 -120
  393. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  394. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +13 -9
  395. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  396. package/dist/headless/components/navigation/menu/menu.js.map +1 -1
  397. package/dist/headless/components/navigation/menu/menuComponent.js +12 -23
  398. package/dist/headless/components/navigation/menu/menuComponent.js.map +1 -1
  399. package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
  400. package/dist/headless/components/navigation/menu/menuFloating.js +54 -46
  401. package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
  402. package/dist/headless/components/navigation/menu/menuItem.js +58 -33
  403. package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
  404. package/dist/headless/components/navigation/menu/menuList.js +34 -16
  405. package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
  406. package/dist/headless/components/navigation/menu/menuSubmenu.js +58 -38
  407. package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
  408. package/dist/headless/components/navigation/pagination/pagination.js +23 -19
  409. package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
  410. package/dist/headless/components/navigation/sidebar/sidebar.js +14 -12
  411. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  412. package/dist/headless/components/navigation/stepper/stepper.js +38 -34
  413. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  414. package/dist/headless/components/navigation/tabs/tab/tab.js +48 -37
  415. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  416. package/dist/headless/components/navigation/tabs/tabs.js +91 -76
  417. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  418. package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
  419. package/dist/headless/index.js +224 -220
  420. package/dist/headless/index.js.map +1 -1
  421. package/dist/headless/primitives/createDismissOnEscape.js +14 -0
  422. package/dist/headless/primitives/createDismissOnEscape.js.map +1 -0
  423. package/dist/headless/primitives/createFocusTrap.js +1 -0
  424. package/dist/headless/primitives/createFocusTrap.js.map +1 -1
  425. package/dist/headless/primitives/createHelperText.js +14 -0
  426. package/dist/headless/primitives/createHelperText.js.map +1 -0
  427. package/dist/headless/primitives/mergeStyle.js +9 -0
  428. package/dist/headless/primitives/mergeStyle.js.map +1 -0
  429. package/dist/headless/primitives/overlayLayer.js +14 -7
  430. package/dist/headless/primitives/overlayLayer.js.map +1 -1
  431. package/dist/headless/source/components/base/animateHeight/animateHeight.jsx +7 -11
  432. package/dist/headless/source/components/base/animateHeight/animateHeight.jsx.map +1 -1
  433. package/dist/headless/source/components/base/icon/icon.jsx +10 -12
  434. package/dist/headless/source/components/base/icon/icon.jsx.map +1 -1
  435. package/dist/headless/source/components/base/ripple/ripple.jsx +16 -4
  436. package/dist/headless/source/components/base/ripple/ripple.jsx.map +1 -1
  437. package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +14 -7
  438. package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
  439. package/dist/headless/source/components/dataDisplay/card/card.jsx +31 -12
  440. package/dist/headless/source/components/dataDisplay/card/card.jsx.map +1 -1
  441. package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx +9 -3
  442. package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
  443. package/dist/headless/source/components/dataDisplay/chart/chart.jsx +5 -4
  444. package/dist/headless/source/components/dataDisplay/chart/chart.jsx.map +1 -1
  445. package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx +13 -3
  446. package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx.map +1 -1
  447. package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx +6 -7
  448. package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx.map +1 -1
  449. package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx +5 -6
  450. package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx.map +1 -1
  451. package/dist/headless/source/components/dataDisplay/chip/chip.jsx +55 -19
  452. package/dist/headless/source/components/dataDisplay/chip/chip.jsx.map +1 -1
  453. package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx +14 -11
  454. package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
  455. package/dist/headless/source/components/dataDisplay/dagView/dagLayout.js +383 -0
  456. package/dist/headless/source/components/dataDisplay/dagView/dagLayout.js.map +7 -0
  457. package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx +639 -0
  458. package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx.map +1 -0
  459. package/dist/headless/source/components/dataDisplay/dagView/index.js +10 -0
  460. package/dist/headless/source/components/dataDisplay/dagView/index.js.map +7 -0
  461. package/dist/headless/source/components/dataDisplay/dagView/panZoom.js +247 -0
  462. package/dist/headless/source/components/dataDisplay/dagView/panZoom.js.map +7 -0
  463. package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx +4 -6
  464. package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -1
  465. package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +83 -9
  466. package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
  467. package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx +20 -10
  468. package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx.map +1 -1
  469. package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx +1 -1
  470. package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
  471. package/dist/headless/source/components/dataDisplay/list/list.jsx +3 -3
  472. package/dist/headless/source/components/dataDisplay/list/list.jsx.map +1 -1
  473. package/dist/headless/source/components/dataDisplay/list/listItem.jsx +11 -10
  474. package/dist/headless/source/components/dataDisplay/list/listItem.jsx.map +1 -1
  475. package/dist/headless/source/components/dataDisplay/meter/meter.jsx +3 -2
  476. package/dist/headless/source/components/dataDisplay/meter/meter.jsx.map +1 -1
  477. package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx +3 -2
  478. package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx.map +1 -1
  479. package/dist/headless/source/components/dataDisplay/stat/stat.jsx +7 -8
  480. package/dist/headless/source/components/dataDisplay/stat/stat.jsx.map +1 -1
  481. package/dist/headless/source/components/dataDisplay/table/table.jsx +18 -1
  482. package/dist/headless/source/components/dataDisplay/table/table.jsx.map +1 -1
  483. package/dist/headless/source/components/dataDisplay/table/tableBody.jsx +6 -1
  484. package/dist/headless/source/components/dataDisplay/table/tableBody.jsx.map +1 -1
  485. package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +13 -4
  486. package/dist/headless/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
  487. package/dist/headless/source/components/dataDisplay/table/tableColumns.jsx +311 -0
  488. package/dist/headless/source/components/dataDisplay/table/tableColumns.jsx.map +1 -0
  489. package/dist/headless/source/components/dataDisplay/table/tableEntities.js +7 -0
  490. package/dist/headless/source/components/dataDisplay/table/tableEntities.js.map +7 -0
  491. package/dist/headless/source/components/dataDisplay/table/tableHead.jsx +14 -1
  492. package/dist/headless/source/components/dataDisplay/table/tableHead.jsx.map +1 -1
  493. package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +51 -33
  494. package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
  495. package/dist/headless/source/components/dataDisplay/table/tableHtmlText.js +140 -0
  496. package/dist/headless/source/components/dataDisplay/table/tableHtmlText.js.map +7 -0
  497. package/dist/headless/source/components/dataDisplay/table/tableRow.jsx +11 -5
  498. package/dist/headless/source/components/dataDisplay/table/tableRow.jsx.map +1 -1
  499. package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx +48 -19
  500. package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
  501. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +9 -2
  502. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  503. package/dist/headless/source/components/dataDisplay/typography/typography.jsx +2 -6
  504. package/dist/headless/source/components/dataDisplay/typography/typography.jsx.map +1 -1
  505. package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx +12 -2
  506. package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx.map +1 -1
  507. package/dist/headless/source/components/feedBack/message/message.jsx +5 -4
  508. package/dist/headless/source/components/feedBack/message/message.jsx.map +1 -1
  509. package/dist/headless/source/components/feedBack/modal/modal.jsx +5 -2
  510. package/dist/headless/source/components/feedBack/modal/modal.jsx.map +1 -1
  511. package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx +12 -5
  512. package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
  513. package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx +3 -3
  514. package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
  515. package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +52 -5
  516. package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
  517. package/dist/headless/source/components/inputs/button/button.jsx +8 -3
  518. package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
  519. package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx +4 -3
  520. package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
  521. package/dist/headless/source/components/inputs/checkbox/checkbox.jsx +27 -4
  522. package/dist/headless/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
  523. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +13 -0
  524. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  525. package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx +4 -1
  526. package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx.map +1 -1
  527. package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx +12 -12
  528. package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx.map +1 -1
  529. package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx +13 -3
  530. package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx.map +1 -1
  531. package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx +13 -0
  532. package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
  533. package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx +12 -1
  534. package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
  535. package/dist/headless/source/components/inputs/radioButton/radioButton.jsx +16 -4
  536. package/dist/headless/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
  537. package/dist/headless/source/components/inputs/rating/rating.jsx +49 -20
  538. package/dist/headless/source/components/inputs/rating/rating.jsx.map +1 -1
  539. package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx +222 -61
  540. package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
  541. package/dist/headless/source/components/inputs/selectField/optionNavigation.js +51 -0
  542. package/dist/headless/source/components/inputs/selectField/optionNavigation.js.map +7 -0
  543. package/dist/headless/source/components/inputs/selectField/selectField.jsx +318 -92
  544. package/dist/headless/source/components/inputs/selectField/selectField.jsx.map +1 -1
  545. package/dist/headless/source/components/inputs/slider/slider.jsx +89 -18
  546. package/dist/headless/source/components/inputs/slider/slider.jsx.map +1 -1
  547. package/dist/headless/source/components/inputs/textField/textField.jsx +47 -9
  548. package/dist/headless/source/components/inputs/textField/textField.jsx.map +1 -1
  549. package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +20 -6
  550. package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
  551. package/dist/headless/source/components/inputs/timePicker/timePicker.jsx +13 -0
  552. package/dist/headless/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
  553. package/dist/headless/source/components/inputs/toggle/toggle.jsx +14 -2
  554. package/dist/headless/source/components/inputs/toggle/toggle.jsx.map +1 -1
  555. package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx +7 -2
  556. package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
  557. package/dist/headless/source/components/layout/appLayout/appLayout.jsx +8 -6
  558. package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  559. package/dist/headless/source/components/layout/divider/divider.jsx +6 -5
  560. package/dist/headless/source/components/layout/divider/divider.jsx.map +1 -1
  561. package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx +17 -11
  562. package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
  563. package/dist/headless/source/components/layout/grid/grid.jsx +20 -8
  564. package/dist/headless/source/components/layout/grid/grid.jsx.map +1 -1
  565. package/dist/headless/source/components/layout/page/page.jsx +10 -2
  566. package/dist/headless/source/components/layout/page/page.jsx.map +1 -1
  567. package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +3 -2
  568. package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
  569. package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx +5 -5
  570. package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -1
  571. package/dist/headless/source/components/layout/sheet/sheet.jsx +6 -8
  572. package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
  573. package/dist/headless/source/components/layout/stack/stack.jsx +15 -11
  574. package/dist/headless/source/components/layout/stack/stack.jsx.map +1 -1
  575. package/dist/headless/source/components/navigation/appBar/appBar.jsx +3 -2
  576. package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
  577. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +48 -40
  578. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  579. package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx +9 -2
  580. package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
  581. package/dist/headless/source/components/navigation/menu/menu.jsx.map +1 -1
  582. package/dist/headless/source/components/navigation/menu/menuComponent.jsx +3 -4
  583. package/dist/headless/source/components/navigation/menu/menuComponent.jsx.map +1 -1
  584. package/dist/headless/source/components/navigation/menu/menuContext.js.map +2 -2
  585. package/dist/headless/source/components/navigation/menu/menuFloating.jsx +26 -4
  586. package/dist/headless/source/components/navigation/menu/menuFloating.jsx.map +1 -1
  587. package/dist/headless/source/components/navigation/menu/menuItem.jsx +22 -2
  588. package/dist/headless/source/components/navigation/menu/menuItem.jsx.map +1 -1
  589. package/dist/headless/source/components/navigation/menu/menuList.jsx +19 -7
  590. package/dist/headless/source/components/navigation/menu/menuList.jsx.map +1 -1
  591. package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx +36 -4
  592. package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx.map +1 -1
  593. package/dist/headless/source/components/navigation/pagination/pagination.jsx +4 -3
  594. package/dist/headless/source/components/navigation/pagination/pagination.jsx.map +1 -1
  595. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +1 -1
  596. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  597. package/dist/headless/source/components/navigation/stepper/stepper.jsx +14 -9
  598. package/dist/headless/source/components/navigation/stepper/stepper.jsx.map +1 -1
  599. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +12 -16
  600. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  601. package/dist/headless/source/components/navigation/tabs/tabs.jsx +34 -10
  602. package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
  603. package/dist/headless/source/components/navigation/tabs/tabsContext.js.map +2 -2
  604. package/dist/headless/source/connects/rt/table/table.jsx +7 -2
  605. package/dist/headless/source/connects/rt/table/table.jsx.map +1 -1
  606. package/dist/headless/source/index.js +3 -0
  607. package/dist/headless/source/index.js.map +2 -2
  608. package/dist/headless/source/primitives/createDismissOnEscape.js +17 -0
  609. package/dist/headless/source/primitives/createDismissOnEscape.js.map +7 -0
  610. package/dist/headless/source/primitives/createFocusTrap.js +1 -0
  611. package/dist/headless/source/primitives/createFocusTrap.js.map +2 -2
  612. package/dist/headless/source/primitives/createHelperText.js +16 -0
  613. package/dist/headless/source/primitives/createHelperText.js.map +7 -0
  614. package/dist/headless/source/primitives/mergeStyle.js +15 -0
  615. package/dist/headless/source/primitives/mergeStyle.js.map +7 -0
  616. package/dist/headless/source/primitives/overlayLayer.js +10 -2
  617. package/dist/headless/source/primitives/overlayLayer.js.map +2 -2
  618. package/dist/headless/source/utils/controlProps.js +22 -0
  619. package/dist/headless/source/utils/controlProps.js.map +7 -0
  620. package/dist/headless/source/utils/ownClick.js +41 -0
  621. package/dist/headless/source/utils/ownClick.js.map +7 -0
  622. package/dist/headless/utils/controlProps.js +20 -0
  623. package/dist/headless/utils/controlProps.js.map +1 -0
  624. package/dist/headless/utils/ownClick.js +39 -0
  625. package/dist/headless/utils/ownClick.js.map +1 -0
  626. package/dist/index.d.ts +2 -0
  627. package/dist/index.js +224 -220
  628. package/dist/index.js.map +1 -1
  629. package/dist/primitives/createDismissOnEscape.d.ts +12 -0
  630. package/dist/primitives/createDismissOnEscape.js +14 -0
  631. package/dist/primitives/createDismissOnEscape.js.map +1 -0
  632. package/dist/primitives/createFocusTrap.d.ts +2 -0
  633. package/dist/primitives/createFocusTrap.js +1 -0
  634. package/dist/primitives/createFocusTrap.js.map +1 -1
  635. package/dist/primitives/createHelperText.d.ts +26 -0
  636. package/dist/primitives/createHelperText.js +14 -0
  637. package/dist/primitives/createHelperText.js.map +1 -0
  638. package/dist/primitives/mergeStyle.d.ts +19 -0
  639. package/dist/primitives/mergeStyle.js +9 -0
  640. package/dist/primitives/mergeStyle.js.map +1 -0
  641. package/dist/primitives/overlayLayer.d.ts +15 -3
  642. package/dist/primitives/overlayLayer.js +14 -7
  643. package/dist/primitives/overlayLayer.js.map +1 -1
  644. package/dist/source/components/base/animateHeight/animateHeight.jsx +7 -11
  645. package/dist/source/components/base/animateHeight/animateHeight.jsx.map +1 -1
  646. package/dist/source/components/base/icon/icon.jsx +10 -12
  647. package/dist/source/components/base/icon/icon.jsx.map +1 -1
  648. package/dist/source/components/base/ripple/ripple.jsx +16 -4
  649. package/dist/source/components/base/ripple/ripple.jsx.map +1 -1
  650. package/dist/source/components/dataDisplay/avatar/avatar.jsx +14 -7
  651. package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
  652. package/dist/source/components/dataDisplay/card/card.jsx +31 -12
  653. package/dist/source/components/dataDisplay/card/card.jsx.map +1 -1
  654. package/dist/source/components/dataDisplay/carousel/carousel.jsx +9 -3
  655. package/dist/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
  656. package/dist/source/components/dataDisplay/chart/chart.jsx +5 -4
  657. package/dist/source/components/dataDisplay/chart/chart.jsx.map +1 -1
  658. package/dist/source/components/dataDisplay/chat/chatIconButton.jsx +13 -3
  659. package/dist/source/components/dataDisplay/chat/chatIconButton.jsx.map +1 -1
  660. package/dist/source/components/dataDisplay/chat/chatLayout.jsx +6 -7
  661. package/dist/source/components/dataDisplay/chat/chatLayout.jsx.map +1 -1
  662. package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx +5 -6
  663. package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx.map +1 -1
  664. package/dist/source/components/dataDisplay/chip/chip.jsx +55 -19
  665. package/dist/source/components/dataDisplay/chip/chip.jsx.map +1 -1
  666. package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx +14 -11
  667. package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
  668. package/dist/source/components/dataDisplay/dagView/dagLayout.js +383 -0
  669. package/dist/source/components/dataDisplay/dagView/dagLayout.js.map +7 -0
  670. package/dist/source/components/dataDisplay/dagView/dagView.jsx +641 -0
  671. package/dist/source/components/dataDisplay/dagView/dagView.jsx.map +1 -0
  672. package/dist/source/components/dataDisplay/dagView/index.js +10 -0
  673. package/dist/source/components/dataDisplay/dagView/index.js.map +7 -0
  674. package/dist/source/components/dataDisplay/dagView/panZoom.js +247 -0
  675. package/dist/source/components/dataDisplay/dagView/panZoom.js.map +7 -0
  676. package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx +4 -6
  677. package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -1
  678. package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +83 -9
  679. package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
  680. package/dist/source/components/dataDisplay/kanban/kanban.jsx +20 -10
  681. package/dist/source/components/dataDisplay/kanban/kanban.jsx.map +1 -1
  682. package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx +1 -1
  683. package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
  684. package/dist/source/components/dataDisplay/list/list.jsx +3 -3
  685. package/dist/source/components/dataDisplay/list/list.jsx.map +1 -1
  686. package/dist/source/components/dataDisplay/list/listItem.jsx +11 -10
  687. package/dist/source/components/dataDisplay/list/listItem.jsx.map +1 -1
  688. package/dist/source/components/dataDisplay/meter/meter.jsx +3 -2
  689. package/dist/source/components/dataDisplay/meter/meter.jsx.map +1 -1
  690. package/dist/source/components/dataDisplay/personChip/personChip.jsx +3 -2
  691. package/dist/source/components/dataDisplay/personChip/personChip.jsx.map +1 -1
  692. package/dist/source/components/dataDisplay/stat/stat.jsx +7 -8
  693. package/dist/source/components/dataDisplay/stat/stat.jsx.map +1 -1
  694. package/dist/source/components/dataDisplay/table/table.jsx +18 -1
  695. package/dist/source/components/dataDisplay/table/table.jsx.map +1 -1
  696. package/dist/source/components/dataDisplay/table/tableBody.jsx +6 -1
  697. package/dist/source/components/dataDisplay/table/tableBody.jsx.map +1 -1
  698. package/dist/source/components/dataDisplay/table/tableCell.jsx +13 -4
  699. package/dist/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
  700. package/dist/source/components/dataDisplay/table/tableColumns.jsx +311 -0
  701. package/dist/source/components/dataDisplay/table/tableColumns.jsx.map +1 -0
  702. package/dist/source/components/dataDisplay/table/tableEntities.js +7 -0
  703. package/dist/source/components/dataDisplay/table/tableEntities.js.map +7 -0
  704. package/dist/source/components/dataDisplay/table/tableHead.jsx +14 -1
  705. package/dist/source/components/dataDisplay/table/tableHead.jsx.map +1 -1
  706. package/dist/source/components/dataDisplay/table/tableHeadCell.jsx +51 -33
  707. package/dist/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
  708. package/dist/source/components/dataDisplay/table/tableHtmlText.js +140 -0
  709. package/dist/source/components/dataDisplay/table/tableHtmlText.js.map +7 -0
  710. package/dist/source/components/dataDisplay/table/tableRow.jsx +11 -5
  711. package/dist/source/components/dataDisplay/table/tableRow.jsx.map +1 -1
  712. package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx +48 -19
  713. package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
  714. package/dist/source/components/dataDisplay/treeView/treeView.jsx +9 -2
  715. package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  716. package/dist/source/components/dataDisplay/typography/typography.jsx +2 -6
  717. package/dist/source/components/dataDisplay/typography/typography.jsx.map +1 -1
  718. package/dist/source/components/feedBack/emptyState/emptyState.jsx +12 -2
  719. package/dist/source/components/feedBack/emptyState/emptyState.jsx.map +1 -1
  720. package/dist/source/components/feedBack/message/message.jsx +5 -4
  721. package/dist/source/components/feedBack/message/message.jsx.map +1 -1
  722. package/dist/source/components/feedBack/modal/modal.jsx +5 -2
  723. package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
  724. package/dist/source/components/feedBack/skeleton/skeleton.jsx +12 -5
  725. package/dist/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
  726. package/dist/source/components/feedBack/snackbar/snackbar.jsx +3 -3
  727. package/dist/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
  728. package/dist/source/components/feedBack/tooltip/tooltip.jsx +52 -5
  729. package/dist/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
  730. package/dist/source/components/inputs/button/button.jsx +8 -3
  731. package/dist/source/components/inputs/button/button.jsx.map +1 -1
  732. package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx +4 -3
  733. package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
  734. package/dist/source/components/inputs/checkbox/checkbox.jsx +27 -4
  735. package/dist/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
  736. package/dist/source/components/inputs/datePicker/datePicker.jsx +13 -0
  737. package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  738. package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx +4 -1
  739. package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx.map +1 -1
  740. package/dist/source/components/inputs/datePicker/datePickerDay.jsx +12 -12
  741. package/dist/source/components/inputs/datePicker/datePickerDay.jsx.map +1 -1
  742. package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx +13 -3
  743. package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx.map +1 -1
  744. package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx +13 -0
  745. package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
  746. package/dist/source/components/inputs/floatingButton/floatingButton.jsx +12 -1
  747. package/dist/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
  748. package/dist/source/components/inputs/radioButton/radioButton.jsx +16 -4
  749. package/dist/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
  750. package/dist/source/components/inputs/rating/rating.jsx +49 -20
  751. package/dist/source/components/inputs/rating/rating.jsx.map +1 -1
  752. package/dist/source/components/inputs/selectField/dropdownMenu.jsx +222 -61
  753. package/dist/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
  754. package/dist/source/components/inputs/selectField/optionNavigation.js +51 -0
  755. package/dist/source/components/inputs/selectField/optionNavigation.js.map +7 -0
  756. package/dist/source/components/inputs/selectField/selectField.jsx +318 -92
  757. package/dist/source/components/inputs/selectField/selectField.jsx.map +1 -1
  758. package/dist/source/components/inputs/slider/slider.jsx +89 -18
  759. package/dist/source/components/inputs/slider/slider.jsx.map +1 -1
  760. package/dist/source/components/inputs/textField/textField.jsx +47 -9
  761. package/dist/source/components/inputs/textField/textField.jsx.map +1 -1
  762. package/dist/source/components/inputs/textField/textFieldWrapper.jsx +20 -6
  763. package/dist/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
  764. package/dist/source/components/inputs/timePicker/timePicker.jsx +13 -0
  765. package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
  766. package/dist/source/components/inputs/toggle/toggle.jsx +14 -2
  767. package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
  768. package/dist/source/components/inputs/valueSlider/valueSlider.jsx +7 -2
  769. package/dist/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
  770. package/dist/source/components/layout/appLayout/appLayout.jsx +8 -6
  771. package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  772. package/dist/source/components/layout/divider/divider.jsx +6 -5
  773. package/dist/source/components/layout/divider/divider.jsx.map +1 -1
  774. package/dist/source/components/layout/floatingWindow/floatingWindow.jsx +17 -11
  775. package/dist/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
  776. package/dist/source/components/layout/grid/grid.jsx +20 -8
  777. package/dist/source/components/layout/grid/grid.jsx.map +1 -1
  778. package/dist/source/components/layout/page/page.jsx +10 -2
  779. package/dist/source/components/layout/page/page.jsx.map +1 -1
  780. package/dist/source/components/layout/pageHeader/pageHeader.jsx +3 -2
  781. package/dist/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
  782. package/dist/source/components/layout/sectionHeader/sectionHeader.jsx +5 -5
  783. package/dist/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -1
  784. package/dist/source/components/layout/sheet/sheet.jsx +6 -8
  785. package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
  786. package/dist/source/components/layout/stack/stack.jsx +15 -11
  787. package/dist/source/components/layout/stack/stack.jsx.map +1 -1
  788. package/dist/source/components/navigation/appBar/appBar.jsx +3 -2
  789. package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
  790. package/dist/source/components/navigation/bottomBar/bottomBar.jsx +48 -40
  791. package/dist/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  792. package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +9 -2
  793. package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
  794. package/dist/source/components/navigation/menu/menu.jsx.map +1 -1
  795. package/dist/source/components/navigation/menu/menuComponent.jsx +3 -4
  796. package/dist/source/components/navigation/menu/menuComponent.jsx.map +1 -1
  797. package/dist/source/components/navigation/menu/menuContext.js.map +2 -2
  798. package/dist/source/components/navigation/menu/menuFloating.jsx +26 -4
  799. package/dist/source/components/navigation/menu/menuFloating.jsx.map +1 -1
  800. package/dist/source/components/navigation/menu/menuItem.jsx +22 -2
  801. package/dist/source/components/navigation/menu/menuItem.jsx.map +1 -1
  802. package/dist/source/components/navigation/menu/menuList.jsx +19 -7
  803. package/dist/source/components/navigation/menu/menuList.jsx.map +1 -1
  804. package/dist/source/components/navigation/menu/menuSubmenu.jsx +36 -4
  805. package/dist/source/components/navigation/menu/menuSubmenu.jsx.map +1 -1
  806. package/dist/source/components/navigation/pagination/pagination.jsx +4 -3
  807. package/dist/source/components/navigation/pagination/pagination.jsx.map +1 -1
  808. package/dist/source/components/navigation/sidebar/sidebar.jsx +1 -1
  809. package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  810. package/dist/source/components/navigation/stepper/stepper.jsx +14 -9
  811. package/dist/source/components/navigation/stepper/stepper.jsx.map +1 -1
  812. package/dist/source/components/navigation/tabs/tab/tab.jsx +12 -16
  813. package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  814. package/dist/source/components/navigation/tabs/tabs.jsx +34 -10
  815. package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
  816. package/dist/source/components/navigation/tabs/tabsContext.js.map +2 -2
  817. package/dist/source/connects/rt/table/table.jsx +7 -2
  818. package/dist/source/connects/rt/table/table.jsx.map +1 -1
  819. package/dist/source/index.js +3 -0
  820. package/dist/source/index.js.map +2 -2
  821. package/dist/source/primitives/createDismissOnEscape.js +17 -0
  822. package/dist/source/primitives/createDismissOnEscape.js.map +7 -0
  823. package/dist/source/primitives/createFocusTrap.js +1 -0
  824. package/dist/source/primitives/createFocusTrap.js.map +2 -2
  825. package/dist/source/primitives/createHelperText.js +16 -0
  826. package/dist/source/primitives/createHelperText.js.map +7 -0
  827. package/dist/source/primitives/mergeStyle.js +15 -0
  828. package/dist/source/primitives/mergeStyle.js.map +7 -0
  829. package/dist/source/primitives/overlayLayer.js +10 -2
  830. package/dist/source/primitives/overlayLayer.js.map +2 -2
  831. package/dist/source/utils/controlProps.js +22 -0
  832. package/dist/source/utils/controlProps.js.map +7 -0
  833. package/dist/source/utils/ownClick.js +41 -0
  834. package/dist/source/utils/ownClick.js.map +7 -0
  835. package/dist/utils/controlProps.d.ts +17 -0
  836. package/dist/utils/controlProps.js +20 -0
  837. package/dist/utils/controlProps.js.map +1 -0
  838. package/dist/utils/ownClick.d.ts +16 -0
  839. package/dist/utils/ownClick.js +39 -0
  840. package/dist/utils/ownClick.js.map +1 -0
  841. package/package.json +9 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/personChip/personChip.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/personChip/personChip.entry.less\";\nimport { type JSX, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Avatar, type AvatarSize } from \"../avatar\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\n/** Up to two initials from a name: \"Anna Petrova\" → \"AP\", \"anna\" → \"A\". */\nexport function initialsOf(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n const first = (word: string | undefined): string => (word ? (Array.from(word)[0] ?? \"\") : \"\");\n return (first(words[0]) + (words.length > 1 ? first(words[words.length - 1]) : \"\")).toUpperCase();\n}\n\n/**\n * A steady background colour for a person's avatar, derived from a seed (an id\n * or the name): the same person always gets the same colour, on the server too.\n */\nexport function avatarColor(seed: string): string {\n let hash = 0;\n for (const char of seed) hash = (hash * 31 + (char.codePointAt(0) ?? 0)) >>> 0;\n return `hsl(${hash % 360} 42% 42%)`;\n}\n\nexport interface PersonChipProps extends Omit<JSX.HTMLAttributes<HTMLElement>, \"title\"> {\n /** The person's name: shown beside the avatar, and the source of its initials. */\n name: string;\n /** Avatar image; initials on a colour without it or when it fails. */\n src?: string;\n /** Link to the person's card. */\n href?: string;\n /** The avatar only; the name becomes its tooltip and accessible name. */\n compact?: boolean;\n /** Avatar size: a preset or pixels. 24px by default. */\n size?: AvatarSize | number;\n /** Seed for the avatar colour (an id); the name by default. */\n colorSeed?: string;\n /** A fixed avatar colour instead of the derived one. */\n color?: string;\n /** A second line under the name: a role, a date. */\n meta?: JSX.Element;\n ref?: Ref<HTMLElement>;\n}\n\n/** The name and the meta line. Meta is read here, where it renders: markup\n * created and not rendered (a compact chip) would have no server node. */\nfunction PersonText(props: { name: string; meta: JSX.Element }): JSX.Element {\n const meta = children(() => props.meta);\n return (\n <span class=\"smwb-person-chip__text\">\n <span class=\"smwb-person-chip__name\">{props.name}</span>\n <Show when={meta()}>\n <span class=\"smwb-person-chip__meta\">{meta()}</span>\n </Show>\n </span>\n );\n}\n\n/** A person: avatar and name, a link to their card when `href` is set. */\nexport function PersonChip(props: PersonChipProps): JSX.Element {\n const merged = mergeProps({ size: 24 as AvatarSize | number }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"name\",\n \"src\",\n \"href\",\n \"compact\",\n \"size\",\n \"colorSeed\",\n \"color\",\n \"meta\",\n \"ref\",\n ]);\n\n return (\n <Dynamic\n component={local.href ? \"a\" : \"span\"}\n {...rest}\n ref={mergeRefs(local.ref)}\n href={local.href}\n title={local.compact ? local.name : undefined}\n role={local.compact && !local.href ? \"img\" : undefined}\n aria-label={local.compact ? local.name : undefined}\n data-testid=\"person-chip\"\n class={cn(\"smwb-person-chip\", { \"smwb-person-chip_link\": !!local.href, \"smwb-person-chip_compact\": local.compact }, local.class)}\n >\n <Avatar\n class=\"smwb-person-chip__avatar\"\n size={local.size}\n src={local.src}\n color={local.color ?? avatarColor(local.colorSeed ?? local.name)}\n aria-hidden=\"true\"\n >\n {initialsOf(local.name)}\n </Avatar>\n <Show when={!local.compact}>\n <PersonText name={local.name} meta={local.meta} />\n </Show>\n </Dynamic>\n );\n}\n\nexport default PersonChip;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAmB,MAAM,UAAU,YAAY,kBAAkB;AACjE,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,cAA+B;AACxC,SAAS,iBAA2B;AAG7B,SAAS,WAAW,MAAsB;AAC/C,QAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO;AACrD,QAAM,QAAQ,CAAC,SAAsC,OAAQ,MAAM,KAAK,IAAI,EAAE,CAAC,KAAK,KAAM;AAC1F,UAAQ,MAAM,MAAM,CAAC,CAAC,KAAK,MAAM,SAAS,IAAI,MAAM,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,KAAK,YAAY;AAClG;AAMO,SAAS,YAAY,MAAsB;AAChD,MAAI,OAAO;AACX,aAAW,QAAQ,KAAM,QAAQ,OAAO,MAAM,KAAK,YAAY,CAAC,KAAK,OAAQ;AAC7E,SAAO,OAAO,OAAO,GAAG;AAC1B;AAwBA,SAAS,WAAW,OAAyD;AAC3E,QAAM,OAAO,SAAS,MAAM,MAAM,IAAI;AACtC,SACE,CAAC,KAAK,MAAM,yBAAyB;AAAA,MACnC,CAAC,KAAK,MAAM,0BAA0B,MAAM,KAAK,EAAhD,KAAuD;AAAA,MACxD,CAAC,KAAK,MAAM,KAAK,GAAG;AAAA,QAClB,CAAC,KAAK,MAAM,0BAA0B,KAAK,EAAE,EAA5C,KAAmD;AAAA,MACtD,EAFC,KAEM;AAAA,IACT,EALC;AAOL;AAGO,SAAS,WAAW,OAAqC;AAC9D,QAAM,SAAS,WAAW,EAAE,MAAM,GAA0B,GAAG,KAAK;AACpE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,CAAC;AAAA,IACC,WAAW,MAAM,OAAO,MAAM;AAAA,QAC1B;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,MAAM,MAAM;AAAA,IACZ,OAAO,MAAM,UAAU,MAAM,OAAO;AAAA,IACpC,MAAM,MAAM,WAAW,CAAC,MAAM,OAAO,QAAQ;AAAA,IAC7C,YAAY,MAAM,UAAU,MAAM,OAAO;AAAA,IACzC,YAAY;AAAA,IACZ,OAAO,GAAG,oBAAoB,EAAE,yBAAyB,CAAC,CAAC,MAAM,MAAM,4BAA4B,MAAM,QAAQ,GAAG,MAAM,KAAK;AAAA,GAChI;AAAA,MACC,CAAC;AAAA,IACC,MAAM;AAAA,IACN,MAAM,MAAM;AAAA,IACZ,KAAK,MAAM;AAAA,IACX,OAAO,MAAM,SAAS,YAAY,MAAM,aAAa,MAAM,IAAI;AAAA,IAC/D,YAAY;AAAA,GACb;AAAA,SACE,WAAW,MAAM,IAAI,EAAE;AAAA,MAC1B,EARC,OAQQ;AAAA,MACT,CAAC,KAAK,MAAM,CAAC,MAAM,SAAS;AAAA,QAC1B,CAAC,WAAW,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,MACpD,EAFC,KAEM;AAAA,IACT,EAvBC;AAyBL;AAEA,IAAO,qBAAQ;","names":[],"file":"personChip.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/personChip/personChip.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/personChip/personChip.entry.less\";\nimport { type JSX, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Avatar, type AvatarSize } from \"../avatar\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\n/** Up to two initials from a name: \"Anna Petrova\" → \"AP\", \"anna\" → \"A\". */\nexport function initialsOf(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n const first = (word: string | undefined): string => (word ? (Array.from(word)[0] ?? \"\") : \"\");\n return (first(words[0]) + (words.length > 1 ? first(words[words.length - 1]) : \"\")).toUpperCase();\n}\n\n/**\n * A steady background colour for a person's avatar, derived from a seed (an id\n * or the name): the same person always gets the same colour, on the server too.\n */\nexport function avatarColor(seed: string): string {\n let hash = 0;\n for (const char of seed) hash = (hash * 31 + (char.codePointAt(0) ?? 0)) >>> 0;\n return `hsl(${hash % 360} 42% 42%)`;\n}\n\nexport interface PersonChipProps extends Omit<JSX.HTMLAttributes<HTMLElement>, \"title\"> {\n /** The person's name: shown beside the avatar, and the source of its initials. */\n name: string;\n /** Avatar image; initials on a colour without it or when it fails. */\n src?: string;\n /** Link to the person's card. */\n href?: string;\n /** The avatar only; the name becomes its tooltip and accessible name. */\n compact?: boolean;\n /** Avatar size: a preset or pixels. 24px by default. */\n size?: AvatarSize | number;\n /** Seed for the avatar colour (an id); the name by default. */\n colorSeed?: string;\n /** A fixed avatar colour instead of the derived one. */\n color?: string;\n /** A second line under the name: a role, a date. */\n meta?: JSX.Element;\n /** Test id of the root; `person-chip` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLElement>;\n}\n\n/** The name and the meta line. Meta is read here, where it renders: markup\n * created and not rendered (a compact chip) would have no server node. */\nfunction PersonText(props: { name: string; meta: JSX.Element }): JSX.Element {\n const meta = children(() => props.meta);\n return (\n <span class=\"smwb-person-chip__text\">\n <span class=\"smwb-person-chip__name\">{props.name}</span>\n <Show when={meta()}>\n <span class=\"smwb-person-chip__meta\">{meta()}</span>\n </Show>\n </span>\n );\n}\n\n/** A person: avatar and name, a link to their card when `href` is set. */\nexport function PersonChip(props: PersonChipProps): JSX.Element {\n const merged = mergeProps({ size: 24 as AvatarSize | number }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"name\",\n \"src\",\n \"href\",\n \"compact\",\n \"size\",\n \"colorSeed\",\n \"color\",\n \"meta\",\n \"ref\",\n \"data-testid\",\n ]);\n\n return (\n <Dynamic\n component={local.href ? \"a\" : \"span\"}\n {...rest}\n ref={mergeRefs(local.ref)}\n href={local.href}\n title={local.compact ? local.name : undefined}\n role={local.compact && !local.href ? \"img\" : undefined}\n aria-label={local.compact ? local.name : undefined}\n data-testid={local[\"data-testid\"] ?? \"person-chip\"}\n class={cn(\"smwb-person-chip\", { \"smwb-person-chip_link\": !!local.href, \"smwb-person-chip_compact\": local.compact }, local.class)}\n >\n <Avatar\n class=\"smwb-person-chip__avatar\"\n size={local.size}\n src={local.src}\n color={local.color ?? avatarColor(local.colorSeed ?? local.name)}\n aria-hidden=\"true\"\n >\n {initialsOf(local.name)}\n </Avatar>\n <Show when={!local.compact}>\n <PersonText name={local.name} meta={local.meta} />\n </Show>\n </Dynamic>\n );\n}\n\nexport default PersonChip;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAmB,MAAM,UAAU,YAAY,kBAAkB;AACjE,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,cAA+B;AACxC,SAAS,iBAA2B;AAG7B,SAAS,WAAW,MAAsB;AAC/C,QAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO;AACrD,QAAM,QAAQ,CAAC,SAAsC,OAAQ,MAAM,KAAK,IAAI,EAAE,CAAC,KAAK,KAAM;AAC1F,UAAQ,MAAM,MAAM,CAAC,CAAC,KAAK,MAAM,SAAS,IAAI,MAAM,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,KAAK,YAAY;AAClG;AAMO,SAAS,YAAY,MAAsB;AAChD,MAAI,OAAO;AACX,aAAW,QAAQ,KAAM,QAAQ,OAAO,MAAM,KAAK,YAAY,CAAC,KAAK,OAAQ;AAC7E,SAAO,OAAO,OAAO,GAAG;AAC1B;AA0BA,SAAS,WAAW,OAAyD;AAC3E,QAAM,OAAO,SAAS,MAAM,MAAM,IAAI;AACtC,SACE,CAAC,KAAK,MAAM,yBAAyB;AAAA,MACnC,CAAC,KAAK,MAAM,0BAA0B,MAAM,KAAK,EAAhD,KAAuD;AAAA,MACxD,CAAC,KAAK,MAAM,KAAK,GAAG;AAAA,QAClB,CAAC,KAAK,MAAM,0BAA0B,KAAK,EAAE,EAA5C,KAAmD;AAAA,MACtD,EAFC,KAEM;AAAA,IACT,EALC;AAOL;AAGO,SAAS,WAAW,OAAqC;AAC9D,QAAM,SAAS,WAAW,EAAE,MAAM,GAA0B,GAAG,KAAK;AACpE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,CAAC;AAAA,IACC,WAAW,MAAM,OAAO,MAAM;AAAA,QAC1B;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,MAAM,MAAM;AAAA,IACZ,OAAO,MAAM,UAAU,MAAM,OAAO;AAAA,IACpC,MAAM,MAAM,WAAW,CAAC,MAAM,OAAO,QAAQ;AAAA,IAC7C,YAAY,MAAM,UAAU,MAAM,OAAO;AAAA,IACzC,aAAa,MAAM,aAAa,KAAK;AAAA,IACrC,OAAO,GAAG,oBAAoB,EAAE,yBAAyB,CAAC,CAAC,MAAM,MAAM,4BAA4B,MAAM,QAAQ,GAAG,MAAM,KAAK;AAAA,GAChI;AAAA,MACC,CAAC;AAAA,IACC,MAAM;AAAA,IACN,MAAM,MAAM;AAAA,IACZ,KAAK,MAAM;AAAA,IACX,OAAO,MAAM,SAAS,YAAY,MAAM,aAAa,MAAM,IAAI;AAAA,IAC/D,YAAY;AAAA,GACb;AAAA,SACE,WAAW,MAAM,IAAI,EAAE;AAAA,MAC1B,EARC,OAQQ;AAAA,MACT,CAAC,KAAK,MAAM,CAAC,MAAM,SAAS;AAAA,QAC1B,CAAC,WAAW,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,MACpD,EAFC,KAEM;AAAA,IACT,EAvBC;AAyBL;AAEA,IAAO,qBAAQ;","names":[],"file":"personChip.jsx"}
@@ -5,6 +5,7 @@ import { Dynamic } from "solid-js/web";
5
5
  import cn from "clsx";
6
6
  import { Icon } from "../../base/icon";
7
7
  import { mergeRefs } from "../../../primitives/mergeRefs";
8
+ import { mergeStyle } from "../../../primitives/mergeStyle";
8
9
  function Stat(props) {
9
10
  const merged = mergeProps({ tone: "neutral", variant: "tile" }, props);
10
11
  const [local, rest] = splitProps(merged, [
@@ -17,7 +18,8 @@ function Stat(props) {
17
18
  "variant",
18
19
  "href",
19
20
  "children",
20
- "ref"
21
+ "ref",
22
+ "data-testid"
21
23
  ]);
22
24
  const label = children(() => local.label);
23
25
  const value = children(() => local.value);
@@ -29,7 +31,7 @@ function Stat(props) {
29
31
  {...rest}
30
32
  ref={mergeRefs(local.ref)}
31
33
  href={local.href}
32
- data-testid="stat"
34
+ data-testid={local["data-testid"] ?? "stat"}
33
35
  class={cn(
34
36
  "smwb-stat",
35
37
  `smwb-stat_${local.variant}`,
@@ -55,12 +57,9 @@ function Stat(props) {
55
57
  }
56
58
  function StatGroup(props) {
57
59
  const [local, rest] = splitProps(props, ["class", "style", "minItemWidth", "children", "ref"]);
58
- const style = () => {
59
- if (local.minItemWidth === void 0) return local.style;
60
- const width = typeof local.minItemWidth === "number" ? `${local.minItemWidth}px` : local.minItemWidth;
61
- if (typeof local.style === "string") return `${local.style};--smwb-stat-min:${width}`;
62
- return { ...local.style, "--smwb-stat-min": width };
63
- };
60
+ const style = () => mergeStyle(local.style, {
61
+ "--smwb-stat-min": typeof local.minItemWidth === "number" ? `${local.minItemWidth}px` : local.minItemWidth
62
+ });
64
63
  return <div {...rest} ref={mergeRefs(local.ref)} class={cn("smwb-stat-group", local.class)} style={style()}>
65
64
  {local.children}
66
65
  </div>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/stat/stat.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/stat/stat.entry.less\";\nimport { type JSX, type ParentProps, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type StatTone = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface StatProps extends JSX.HTMLAttributes<HTMLElement> {\n /** What the figure counts. */\n label: JSX.Element;\n /** The figure — a number, or a short value such as \"3 / 14\". */\n value: JSX.Element;\n /** A line under the value: a comparison, a period, a caveat. */\n hint?: JSX.Element;\n /** An icon beside the figure: a Material Symbols name or an element. */\n icon?: string | JSX.Element;\n /** Colour of the accent (a tile's edge, the icon). `warning` and `error` colour the figure too. */\n tone?: StatTone;\n /** `tile`: a bordered card with an accent edge, for KPIs. `plain`: text only, for rows of small figures. */\n variant?: \"tile\" | \"plain\";\n /** Make the whole stat a link to what the figure is made of. */\n href?: string;\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * A figure with its label: a KPI tile on a dashboard, or a small stat in a row.\n * Children go under it — a meter, a sparkline, a note.\n */\nexport function Stat(props: ParentProps<StatProps>): JSX.Element {\n const merged = mergeProps({ tone: \"neutral\" as StatTone, variant: \"tile\" as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"label\",\n \"value\",\n \"hint\",\n \"icon\",\n \"tone\",\n \"variant\",\n \"href\",\n \"children\",\n \"ref\",\n ]);\n\n // Read each slot once: markup passed as a prop is created anew on every read,\n // and during hydration the copy made for a <Show> test has no server DOM node.\n const label = children(() => local.label);\n const value = children(() => local.value);\n const hint = children(() => local.hint);\n const icon = children(() => local.icon);\n const extra = children(() => local.children);\n\n return (\n <Dynamic\n component={local.href ? \"a\" : \"div\"}\n {...rest}\n ref={mergeRefs(local.ref)}\n href={local.href}\n data-testid=\"stat\"\n class={cn(\n \"smwb-stat\",\n `smwb-stat_${local.variant}`,\n `smwb-stat_tone-${local.tone}`,\n { \"smwb-stat_link\": !!local.href, \"smwb-stat_with-icon\": !!icon() },\n local.class\n )}\n >\n <Show when={icon()}>\n {(resolved) => (\n <span class=\"smwb-stat__icon\" aria-hidden=\"true\">\n {typeof resolved() === \"string\" ? <Icon name={resolved() as string} size={20} /> : resolved()}\n </span>\n )}\n </Show>\n <span class=\"smwb-stat__label\">{label()}</span>\n <span class=\"smwb-stat__value\">{value()}</span>\n <Show when={hint()}>\n <span class=\"smwb-stat__hint\">{hint()}</span>\n </Show>\n <Show when={extra()}>\n <div class=\"smwb-stat__extra\">{extra()}</div>\n </Show>\n </Dynamic>\n );\n}\n\nexport interface StatGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Narrowest a stat may get before the row wraps; a CSS length or px. 9rem by default. */\n minItemWidth?: number | string;\n ref?: Ref<HTMLDivElement>;\n}\n\n/** A responsive row of stats: as many columns as fit, each at least `minItemWidth` wide. */\nexport function StatGroup(props: ParentProps<StatGroupProps>): JSX.Element {\n const [local, rest] = splitProps(props, [\"class\", \"style\", \"minItemWidth\", \"children\", \"ref\"]);\n const style = (): JSX.CSSProperties | string | undefined => {\n if (local.minItemWidth === undefined) return local.style;\n const width = typeof local.minItemWidth === \"number\" ? `${local.minItemWidth}px` : local.minItemWidth;\n if (typeof local.style === \"string\") return `${local.style};--smwb-stat-min:${width}`;\n return { ...local.style, \"--smwb-stat-min\": width };\n };\n return (\n <div {...rest} ref={mergeRefs(local.ref)} class={cn(\"smwb-stat-group\", local.class)} style={style()}>\n {local.children}\n </div>\n );\n}\n\nexport default Stat;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,MAAM,UAAU,YAAY,kBAAkB;AACnF,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,YAAY;AACrB,SAAS,iBAA2B;AA0B7B,SAAS,KAAK,OAA4C;AAC/D,QAAM,SAAS,WAAW,EAAE,MAAM,WAAuB,SAAS,OAAgB,GAAG,KAAK;AAC1F,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAID,QAAM,QAAQ,SAAS,MAAM,MAAM,KAAK;AACxC,QAAM,QAAQ,SAAS,MAAM,MAAM,KAAK;AACxC,QAAM,OAAO,SAAS,MAAM,MAAM,IAAI;AACtC,QAAM,OAAO,SAAS,MAAM,MAAM,IAAI;AACtC,QAAM,QAAQ,SAAS,MAAM,MAAM,QAAQ;AAE3C,SACE,CAAC;AAAA,IACC,WAAW,MAAM,OAAO,MAAM;AAAA,QAC1B;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,MAAM,MAAM;AAAA,IACZ,YAAY;AAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA,aAAa,MAAM,OAAO;AAAA,MAC1B,kBAAkB,MAAM,IAAI;AAAA,MAC5B,EAAE,kBAAkB,CAAC,CAAC,MAAM,MAAM,uBAAuB,CAAC,CAAC,KAAK,EAAE;AAAA,MAClE,MAAM;AAAA,IACR;AAAA,GACD;AAAA,MACC,CAAC,KAAK,MAAM,KAAK,GAAG;AAAA,SACjB,CAAC,aACA,CAAC,KAAK,MAAM,kBAAkB,YAAY,OAAO;AAAA,aAC9C,OAAO,SAAS,MAAM,WAAW,CAAC,KAAK,MAAM,SAAS,GAAa,MAAM,IAAI,KAAK,SAAS,EAAE;AAAA,UAChG,EAFC,MAGD;AAAA,MACJ,EANC,KAMM;AAAA,MACP,CAAC,KAAK,MAAM,oBAAoB,MAAM,EAAE,EAAvC,KAA8C;AAAA,MAC/C,CAAC,KAAK,MAAM,oBAAoB,MAAM,EAAE,EAAvC,KAA8C;AAAA,MAC/C,CAAC,KAAK,MAAM,KAAK,GAAG;AAAA,QAClB,CAAC,KAAK,MAAM,mBAAmB,KAAK,EAAE,EAArC,KAA4C;AAAA,MAC/C,EAFC,KAEM;AAAA,MACP,CAAC,KAAK,MAAM,MAAM,GAAG;AAAA,QACnB,CAAC,IAAI,MAAM,oBAAoB,MAAM,EAAE,EAAtC,IAA4C;AAAA,MAC/C,EAFC,KAEM;AAAA,IACT,EA7BC;AA+BL;AASO,SAAS,UAAU,OAAiD;AACzE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO,CAAC,SAAS,SAAS,gBAAgB,YAAY,KAAK,CAAC;AAC7F,QAAM,QAAQ,MAA8C;AAC1D,QAAI,MAAM,iBAAiB,OAAW,QAAO,MAAM;AACnD,UAAM,QAAQ,OAAO,MAAM,iBAAiB,WAAW,GAAG,MAAM,YAAY,OAAO,MAAM;AACzF,QAAI,OAAO,MAAM,UAAU,SAAU,QAAO,GAAG,MAAM,KAAK,oBAAoB,KAAK;AACnF,WAAO,EAAE,GAAG,MAAM,OAAO,mBAAmB,MAAM;AAAA,EACpD;AACA,SACE,CAAC,QAAQ,MAAM,KAAK,UAAU,MAAM,GAAG,GAAG,OAAO,GAAG,mBAAmB,MAAM,KAAK,GAAG,OAAO,MAAM,GAAG;AAAA,OAClG,MAAM,SAAS;AAAA,IAClB,EAFC;AAIL;AAEA,IAAO,eAAQ;","names":[],"file":"stat.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/stat/stat.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/stat/stat.entry.less\";\nimport { type JSX, type ParentProps, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\n\nexport type StatTone = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface StatProps extends JSX.HTMLAttributes<HTMLElement> {\n /** What the figure counts. */\n label: JSX.Element;\n /** The figure — a number, or a short value such as \"3 / 14\". */\n value: JSX.Element;\n /** A line under the value: a comparison, a period, a caveat. */\n hint?: JSX.Element;\n /** An icon beside the figure: a Material Symbols name or an element. */\n icon?: string | JSX.Element;\n /** Colour of the accent (a tile's edge, the icon). `warning` and `error` colour the figure too. */\n tone?: StatTone;\n /** `tile`: a bordered card with an accent edge, for KPIs. `plain`: text only, for rows of small figures. */\n variant?: \"tile\" | \"plain\";\n /** Make the whole stat a link to what the figure is made of. */\n href?: string;\n /** Test id of the root; `stat` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * A figure with its label: a KPI tile on a dashboard, or a small stat in a row.\n * Children go under it — a meter, a sparkline, a note.\n */\nexport function Stat(props: ParentProps<StatProps>): JSX.Element {\n const merged = mergeProps({ tone: \"neutral\" as StatTone, variant: \"tile\" as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"label\",\n \"value\",\n \"hint\",\n \"icon\",\n \"tone\",\n \"variant\",\n \"href\",\n \"children\",\n \"ref\",\n \"data-testid\",\n ]);\n\n // Read each slot once: markup passed as a prop is created anew on every read,\n // and during hydration the copy made for a <Show> test has no server DOM node.\n const label = children(() => local.label);\n const value = children(() => local.value);\n const hint = children(() => local.hint);\n const icon = children(() => local.icon);\n const extra = children(() => local.children);\n\n return (\n <Dynamic\n component={local.href ? \"a\" : \"div\"}\n {...rest}\n ref={mergeRefs(local.ref)}\n href={local.href}\n data-testid={local[\"data-testid\"] ?? \"stat\"}\n class={cn(\n \"smwb-stat\",\n `smwb-stat_${local.variant}`,\n `smwb-stat_tone-${local.tone}`,\n { \"smwb-stat_link\": !!local.href, \"smwb-stat_with-icon\": !!icon() },\n local.class\n )}\n >\n <Show when={icon()}>\n {(resolved) => (\n <span class=\"smwb-stat__icon\" aria-hidden=\"true\">\n {typeof resolved() === \"string\" ? <Icon name={resolved() as string} size={20} /> : resolved()}\n </span>\n )}\n </Show>\n <span class=\"smwb-stat__label\">{label()}</span>\n <span class=\"smwb-stat__value\">{value()}</span>\n <Show when={hint()}>\n <span class=\"smwb-stat__hint\">{hint()}</span>\n </Show>\n <Show when={extra()}>\n <div class=\"smwb-stat__extra\">{extra()}</div>\n </Show>\n </Dynamic>\n );\n}\n\nexport interface StatGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Narrowest a stat may get before the row wraps; a CSS length or px. 9rem by default. */\n minItemWidth?: number | string;\n ref?: Ref<HTMLDivElement>;\n}\n\n/** A responsive row of stats: as many columns as fit, each at least `minItemWidth` wide. */\nexport function StatGroup(props: ParentProps<StatGroupProps>): JSX.Element {\n const [local, rest] = splitProps(props, [\"class\", \"style\", \"minItemWidth\", \"children\", \"ref\"]);\n const style = (): JSX.CSSProperties | string | undefined =>\n mergeStyle(local.style, {\n \"--smwb-stat-min\": typeof local.minItemWidth === \"number\" ? `${local.minItemWidth}px` : local.minItemWidth,\n });\n return (\n <div {...rest} ref={mergeRefs(local.ref)} class={cn(\"smwb-stat-group\", local.class)} style={style()}>\n {local.children}\n </div>\n );\n}\n\nexport default Stat;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,MAAM,UAAU,YAAY,kBAAkB;AACnF,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,YAAY;AACrB,SAAS,iBAA2B;AACpC,SAAS,kBAAkB;AA4BpB,SAAS,KAAK,OAA4C;AAC/D,QAAM,SAAS,WAAW,EAAE,MAAM,WAAuB,SAAS,OAAgB,GAAG,KAAK;AAC1F,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAID,QAAM,QAAQ,SAAS,MAAM,MAAM,KAAK;AACxC,QAAM,QAAQ,SAAS,MAAM,MAAM,KAAK;AACxC,QAAM,OAAO,SAAS,MAAM,MAAM,IAAI;AACtC,QAAM,OAAO,SAAS,MAAM,MAAM,IAAI;AACtC,QAAM,QAAQ,SAAS,MAAM,MAAM,QAAQ;AAE3C,SACE,CAAC;AAAA,IACC,WAAW,MAAM,OAAO,MAAM;AAAA,QAC1B;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,MAAM,MAAM;AAAA,IACZ,aAAa,MAAM,aAAa,KAAK;AAAA,IACrC,OAAO;AAAA,MACL;AAAA,MACA,aAAa,MAAM,OAAO;AAAA,MAC1B,kBAAkB,MAAM,IAAI;AAAA,MAC5B,EAAE,kBAAkB,CAAC,CAAC,MAAM,MAAM,uBAAuB,CAAC,CAAC,KAAK,EAAE;AAAA,MAClE,MAAM;AAAA,IACR;AAAA,GACD;AAAA,MACC,CAAC,KAAK,MAAM,KAAK,GAAG;AAAA,SACjB,CAAC,aACA,CAAC,KAAK,MAAM,kBAAkB,YAAY,OAAO;AAAA,aAC9C,OAAO,SAAS,MAAM,WAAW,CAAC,KAAK,MAAM,SAAS,GAAa,MAAM,IAAI,KAAK,SAAS,EAAE;AAAA,UAChG,EAFC,MAGD;AAAA,MACJ,EANC,KAMM;AAAA,MACP,CAAC,KAAK,MAAM,oBAAoB,MAAM,EAAE,EAAvC,KAA8C;AAAA,MAC/C,CAAC,KAAK,MAAM,oBAAoB,MAAM,EAAE,EAAvC,KAA8C;AAAA,MAC/C,CAAC,KAAK,MAAM,KAAK,GAAG;AAAA,QAClB,CAAC,KAAK,MAAM,mBAAmB,KAAK,EAAE,EAArC,KAA4C;AAAA,MAC/C,EAFC,KAEM;AAAA,MACP,CAAC,KAAK,MAAM,MAAM,GAAG;AAAA,QACnB,CAAC,IAAI,MAAM,oBAAoB,MAAM,EAAE,EAAtC,IAA4C;AAAA,MAC/C,EAFC,KAEM;AAAA,IACT,EA7BC;AA+BL;AASO,SAAS,UAAU,OAAiD;AACzE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO,CAAC,SAAS,SAAS,gBAAgB,YAAY,KAAK,CAAC;AAC7F,QAAM,QAAQ,MACZ,WAAW,MAAM,OAAO;AAAA,IACtB,mBAAmB,OAAO,MAAM,iBAAiB,WAAW,GAAG,MAAM,YAAY,OAAO,MAAM;AAAA,EAChG,CAAC;AACH,SACE,CAAC,QAAQ,MAAM,KAAK,UAAU,MAAM,GAAG,GAAG,OAAO,GAAG,mBAAmB,MAAM,KAAK,GAAG,OAAO,MAAM,GAAG;AAAA,OAClG,MAAM,SAAS;AAAA,IAClB,EAFC;AAIL;AAEA,IAAO,eAAQ;","names":[],"file":"stat.jsx"}
@@ -4,6 +4,13 @@ import { Show, children, splitProps } from "solid-js";
4
4
  import cn from "clsx";
5
5
  import { TablePagination } from "./tablePagination/tablePagination";
6
6
  import { mergeRefs } from "../../../primitives/mergeRefs";
7
+ import {
8
+ TableHeadContext,
9
+ TableLabelsContext,
10
+ TableRowContext,
11
+ TableSectionContext,
12
+ createColumnLabels
13
+ } from "./tableColumns";
7
14
  function Table(props) {
8
15
  const [local, rest] = splitProps(props, [
9
16
  "class",
@@ -18,6 +25,7 @@ function Table(props) {
18
25
  "ref"
19
26
  ]);
20
27
  const caption = children(() => local.caption);
28
+ const labels = { stacked: () => !!local.stackBelow, labels: createColumnLabels() };
21
29
  return <div
22
30
  {...rest}
23
31
  ref={mergeRefs(local.ref)}
@@ -39,7 +47,16 @@ function Table(props) {
39
47
  <Show when={caption() != null}>
40
48
  <caption class="smwb-table__caption">{caption()}</caption>
41
49
  </Show>
42
- {local.children}
50
+ {
51
+ /* A table inside a cell of another counts its own rows and cells. */
52
+ }
53
+ <TableLabelsContext.Provider value={labels}>
54
+ <TableHeadContext.Provider value={false}>
55
+ <TableSectionContext.Provider value={void 0}>
56
+ <TableRowContext.Provider value={void 0}>{local.children}</TableRowContext.Provider>
57
+ </TableSectionContext.Provider>
58
+ </TableHeadContext.Provider>
59
+ </TableLabelsContext.Provider>
43
60
  </table>
44
61
  </div>
45
62
  <Show when={local.paginationSettings}>
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/table/table.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/table/table.entry.less\";\nimport { type JSX, type ParentProps, Show, children, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { TablePagination, type TablePaginationProps } from \"./tablePagination/tablePagination\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TableProps extends JSX.HTMLAttributes<HTMLDivElement> {\n dense?: boolean;\n isLoading?: boolean;\n hovered?: boolean;\n /** Pins the table header while the body scrolls. */\n stickyHeader?: boolean;\n /** Optional accessible caption rendered for screen readers. */\n caption?: JSX.Element;\n /**\n * Show each row as a card — cells one under another, each with its column's\n * label — while the table's container is narrower than this breakpoint:\n * `sm` (420px), `md` (768px) or `lg` (1024px). A container query: the space\n * the table has decides, not the window. Labels come from `TableCell label`.\n */\n stackBelow?: \"sm\" | \"md\" | \"lg\";\n paginationSettings?: TablePaginationProps;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Table(props: ParentProps<TableProps>): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"class\",\n \"dense\",\n \"hovered\",\n \"children\",\n \"paginationSettings\",\n \"isLoading\",\n \"stickyHeader\",\n \"caption\",\n \"stackBelow\",\n \"ref\",\n ]);\n\n // Read the caption once: markup is created anew on every read, and during\n // hydration the copy made for the <Show> test has no server DOM node.\n const caption = children(() => local.caption);\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\n \"smwb-table__wrapper\",\n local.class,\n { \"smwb-table__wrapper_loading\": local.isLoading },\n local.stackBelow && `smwb-table__wrapper_stack-${local.stackBelow}`\n )}\n >\n <div class={cn(\"smwb-table__container\", { \"smwb-withPagination\": !!local.paginationSettings })}>\n <table\n class={cn(\"smwb-table\", {\n \"smwb-dense\": local.dense,\n \"smwb-hovered\": local.hovered,\n \"smwb-table_sticky-header\": local.stickyHeader,\n })}\n >\n <Show when={caption() != null}>\n <caption class=\"smwb-table__caption\">{caption()}</caption>\n </Show>\n {local.children}\n </table>\n </div>\n <Show when={local.paginationSettings}>\n {(settings) => <TablePagination {...settings()} />}\n </Show>\n </div>\n );\n}\n\nexport default Table;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,MAAM,UAAU,kBAAkB;AACvE,OAAO,QAAQ;AACf,SAAS,uBAAkD;AAC3D,SAAS,iBAA2B;AAqB7B,SAAS,MAAM,OAA6C;AACjE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAID,QAAM,UAAU,SAAS,MAAM,MAAM,OAAO;AAE5C,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,EAAE,+BAA+B,MAAM,UAAU;AAAA,MACjD,MAAM,cAAc,6BAA6B,MAAM,UAAU;AAAA,IACnE;AAAA,GACD;AAAA,MACC,CAAC,IAAI,OAAO,GAAG,yBAAyB,EAAE,uBAAuB,CAAC,CAAC,MAAM,mBAAmB,CAAC,GAAG;AAAA,QAC9F,CAAC;AAAA,IACC,OAAO,GAAG,cAAc;AAAA,MACtB,cAAc,MAAM;AAAA,MACpB,gBAAgB,MAAM;AAAA,MACtB,4BAA4B,MAAM;AAAA,IACpC,CAAC;AAAA,GACF;AAAA,UACC,CAAC,KAAK,MAAM,QAAQ,KAAK,MAAM;AAAA,YAC7B,CAAC,QAAQ,MAAM,uBAAuB,QAAQ,EAAE,EAA/C,QAAyD;AAAA,UAC5D,EAFC,KAEM;AAAA,WACN,MAAM,SAAS;AAAA,QAClB,EAXC,MAWO;AAAA,MACV,EAbC,IAaK;AAAA,MACN,CAAC,KAAK,MAAM,MAAM,oBAAoB;AAAA,SACnC,CAAC,aAAa,CAAC,oBAAoB,SAAS,GAAG,GAAG;AAAA,MACrD,EAFC,KAEM;AAAA,IACT,EA3BC;AA6BL;AAEA,IAAO,gBAAQ;","names":[],"file":"table.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/table/table.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/table/table.entry.less\";\nimport { type JSX, type ParentProps, Show, children, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { TablePagination, type TablePaginationProps } from \"./tablePagination/tablePagination\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport {\n TableHeadContext,\n TableLabelsContext,\n TableRowContext,\n TableSectionContext,\n createColumnLabels,\n} from \"./tableColumns\";\n\nexport interface TableProps extends JSX.HTMLAttributes<HTMLDivElement> {\n dense?: boolean;\n isLoading?: boolean;\n hovered?: boolean;\n /** Pins the table header while the body scrolls. */\n stickyHeader?: boolean;\n /** Optional accessible caption rendered for screen readers. */\n caption?: JSX.Element;\n /**\n * Show each row as a card — cells one under another, each with its column's\n * label — while the table's container is narrower than this breakpoint:\n * `sm` (420px), `md` (768px) or `lg` (1024px). A container query: the space\n * the table has decides, not the window.\n *\n * A cell's label is its `TableCell label`, or else the label of the head cell\n * of its column: the head cell's `label`, or the text of its content. Columns\n * count as in HTML: by position in the row, with `colSpan`, after the columns\n * that `rowSpan` cells of the rows above take in the same head or body. A cell\n * spanning several columns takes no label from the head and fills the card's\n * width, and a head cell spanning several columns labels none of them. With\n * several head rows, the lowest head cell over a column names it. The cells\n * and rows count as they are drawn, the ones a component renders included.\n */\n stackBelow?: \"sm\" | \"md\" | \"lg\";\n paginationSettings?: TablePaginationProps;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Table(props: ParentProps<TableProps>): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"class\",\n \"dense\",\n \"hovered\",\n \"children\",\n \"paginationSettings\",\n \"isLoading\",\n \"stickyHeader\",\n \"caption\",\n \"stackBelow\",\n \"ref\",\n ]);\n\n // Read the caption once: markup is created anew on every read, and during\n // hydration the copy made for the <Show> test has no server DOM node.\n const caption = children(() => local.caption);\n\n // The head cells' labels, for the body cells of their columns.\n const labels = { stacked: () => !!local.stackBelow, labels: createColumnLabels() };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\n \"smwb-table__wrapper\",\n local.class,\n { \"smwb-table__wrapper_loading\": local.isLoading },\n local.stackBelow && `smwb-table__wrapper_stack-${local.stackBelow}`\n )}\n >\n <div class={cn(\"smwb-table__container\", { \"smwb-withPagination\": !!local.paginationSettings })}>\n <table\n class={cn(\"smwb-table\", {\n \"smwb-dense\": local.dense,\n \"smwb-hovered\": local.hovered,\n \"smwb-table_sticky-header\": local.stickyHeader,\n })}\n >\n <Show when={caption() != null}>\n <caption class=\"smwb-table__caption\">{caption()}</caption>\n </Show>\n {/* A table inside a cell of another counts its own rows and cells. */}\n <TableLabelsContext.Provider value={labels}>\n <TableHeadContext.Provider value={false}>\n <TableSectionContext.Provider value={undefined}>\n <TableRowContext.Provider value={undefined}>{local.children}</TableRowContext.Provider>\n </TableSectionContext.Provider>\n </TableHeadContext.Provider>\n </TableLabelsContext.Provider>\n </table>\n </div>\n <Show when={local.paginationSettings}>\n {(settings) => <TablePagination {...settings()} />}\n </Show>\n </div>\n );\n}\n\nexport default Table;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,MAAM,UAAU,kBAAkB;AACvE,OAAO,QAAQ;AACf,SAAS,uBAAkD;AAC3D,SAAS,iBAA2B;AACpC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA8BA,SAAS,MAAM,OAA6C;AACjE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAID,QAAM,UAAU,SAAS,MAAM,MAAM,OAAO;AAG5C,QAAM,SAAS,EAAE,SAAS,MAAM,CAAC,CAAC,MAAM,YAAY,QAAQ,mBAAmB,EAAE;AAEjF,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,EAAE,+BAA+B,MAAM,UAAU;AAAA,MACjD,MAAM,cAAc,6BAA6B,MAAM,UAAU;AAAA,IACnE;AAAA,GACD;AAAA,MACC,CAAC,IAAI,OAAO,GAAG,yBAAyB,EAAE,uBAAuB,CAAC,CAAC,MAAM,mBAAmB,CAAC,GAAG;AAAA,QAC9F,CAAC;AAAA,IACC,OAAO,GAAG,cAAc;AAAA,MACtB,cAAc,MAAM;AAAA,MACpB,gBAAgB,MAAM;AAAA,MACtB,4BAA4B,MAAM;AAAA,IACpC,CAAC;AAAA,GACF;AAAA,UACC,CAAC,KAAK,MAAM,QAAQ,KAAK,MAAM;AAAA,YAC7B,CAAC,QAAQ,MAAM,uBAAuB,QAAQ,EAAE,EAA/C,QAAyD;AAAA,UAC5D,EAFC,KAEM;AAAA;AAAA;AAAA,GACgE;AAAA,UACvE,CAAC,mBAAmB,SAAS,OAAO,QAAQ;AAAA,YAC1C,CAAC,iBAAiB,SAAS,OAAO,OAAO;AAAA,cACvC,CAAC,oBAAoB,SAAS,OAAO,QAAW;AAAA,gBAC9C,CAAC,gBAAgB,SAAS,OAAO,SAAY,MAAM,SAAS,EAA3D,gBAAgB,SAAsE;AAAA,cACzF,EAFC,oBAAoB,SAEU;AAAA,YACjC,EAJC,iBAAiB,SAIU;AAAA,UAC9B,EANC,mBAAmB,SAMU;AAAA,QAChC,EAlBC,MAkBO;AAAA,MACV,EApBC,IAoBK;AAAA,MACN,CAAC,KAAK,MAAM,MAAM,oBAAoB;AAAA,SACnC,CAAC,aAAa,CAAC,oBAAoB,SAAS,GAAG,GAAG;AAAA,MACrD,EAFC,KAEM;AAAA,IACT,EAlCC;AAoCL;AAEA,IAAO,gBAAQ;","names":[],"file":"table.jsx"}
@@ -1,10 +1,15 @@
1
1
  import { splitProps } from "solid-js";
2
2
  import cn from "clsx";
3
3
  import { mergeRefs } from "../../../primitives/mergeRefs";
4
+ import { ChildElements, TableSectionContext, createSectionRows, useTableLabels } from "./tableColumns";
4
5
  function TableBody(props) {
5
6
  const [local, rest] = splitProps(props, ["children", "class", "ref"]);
7
+ const table = useTableLabels();
8
+ const rows = createSectionRows(() => !!table?.stacked());
6
9
  return <tbody {...rest} ref={mergeRefs(local.ref)} class={cn("smwb-table__body", local.class)}>
7
- {local.children}
10
+ <TableSectionContext.Provider value={rows}>
11
+ <ChildElements onItems={rows.setItems}>{local.children}</ChildElements>
12
+ </TableSectionContext.Provider>
8
13
  </tbody>;
9
14
  }
10
15
  var tableBody_default = TableBody;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/table/tableBody.tsx"],"sourcesContent":["import { type JSX, type ParentProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TableBodyProps extends JSX.HTMLAttributes<HTMLTableSectionElement> {\n ref?: Ref<HTMLTableSectionElement>;\n}\n\nexport function TableBody(props: ParentProps<TableBodyProps>): JSX.Element {\n const [local, rest] = splitProps(props, [\"children\", \"class\", \"ref\"]);\n return (\n <tbody {...rest} ref={mergeRefs(local.ref)} class={cn(\"smwb-table__body\", local.class)}>\n {local.children}\n </tbody>\n );\n}\n\nexport default TableBody;\n"],"mappings":"AAAA,SAAqC,kBAAkB;AACvD,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAM7B,SAAS,UAAU,OAAiD;AACzE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO,CAAC,YAAY,SAAS,KAAK,CAAC;AACpE,SACE,CAAC,UAAU,MAAM,KAAK,UAAU,MAAM,GAAG,GAAG,OAAO,GAAG,oBAAoB,MAAM,KAAK,GAAG;AAAA,OACrF,MAAM,SAAS;AAAA,IAClB,EAFC;AAIL;AAEA,IAAO,oBAAQ;","names":[],"file":"tableBody.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/table/tableBody.tsx"],"sourcesContent":["import { type JSX, type ParentProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { ChildElements, TableSectionContext, createSectionRows, useTableLabels } from \"./tableColumns\";\n\nexport interface TableBodyProps extends JSX.HTMLAttributes<HTMLTableSectionElement> {\n ref?: Ref<HTMLTableSectionElement>;\n}\n\nexport function TableBody(props: ParentProps<TableBodyProps>): JSX.Element {\n const [local, rest] = splitProps(props, [\"children\", \"class\", \"ref\"]);\n // The body's rows, so that each cell finds its column after the columns that\n // `rowSpan` cells above it take.\n const table = useTableLabels();\n const rows = createSectionRows(() => !!table?.stacked());\n return (\n <tbody {...rest} ref={mergeRefs(local.ref)} class={cn(\"smwb-table__body\", local.class)}>\n <TableSectionContext.Provider value={rows}>\n <ChildElements onItems={rows.setItems}>{local.children}</ChildElements>\n </TableSectionContext.Provider>\n </tbody>\n );\n}\n\nexport default TableBody;\n"],"mappings":"AAAA,SAAqC,kBAAkB;AACvD,OAAO,QAAQ;AACf,SAAS,iBAA2B;AACpC,SAAS,eAAe,qBAAqB,mBAAmB,sBAAsB;AAM/E,SAAS,UAAU,OAAiD;AACzE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO,CAAC,YAAY,SAAS,KAAK,CAAC;AAGpE,QAAM,QAAQ,eAAe;AAC7B,QAAM,OAAO,kBAAkB,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;AACvD,SACE,CAAC,UAAU,MAAM,KAAK,UAAU,MAAM,GAAG,GAAG,OAAO,GAAG,oBAAoB,MAAM,KAAK,GAAG;AAAA,MACtF,CAAC,oBAAoB,SAAS,OAAO,MAAM;AAAA,QACzC,CAAC,cAAc,SAAS,KAAK,WAAW,MAAM,SAAS,EAAtD,cAAsE;AAAA,MACzE,EAFC,oBAAoB,SAEU;AAAA,IACjC,EAJC;AAML;AAEA,IAAO,oBAAQ;","names":[],"file":"tableBody.jsx"}
@@ -1,15 +1,24 @@
1
- import { mergeProps, splitProps } from "solid-js";
1
+ import { createSignal, mergeProps, splitProps } from "solid-js";
2
2
  import cn from "clsx";
3
3
  import { mergeRefs } from "../../../primitives/mergeRefs";
4
+ import { NO_PLACE, cellRowSpan, cellSpan, useInTableHead, useTableLabels, useTableRow } from "./tableColumns";
4
5
  function TableCell(props) {
5
6
  const merged = mergeProps({ cellAlign: "left" }, props);
6
- const [local, rest] = splitProps(merged, ["children", "cellAlign", "class", "label", "ref"]);
7
+ const [local, rest] = splitProps(merged, ["children", "cellAlign", "class", "label", "data-label", "ref"]);
8
+ const table = useTableLabels();
9
+ const inHead = useInTableHead();
10
+ const [element, setElement] = createSignal();
11
+ const span = () => cellSpan(rest.colSpan ?? rest.colspan);
12
+ const row = useTableRow();
13
+ const place = row ? row.registerCell(element, span, () => cellRowSpan(rest.rowSpan ?? rest.rowspan)) : NO_PLACE;
14
+ const headLabel = () => table?.stacked() && !inHead && local.label === void 0 && local["data-label"] === void 0 && span() === 1 ? table.labels.get(place.column()) : void 0;
15
+ const dataLabel = () => local.label === false ? local["data-label"] : local.label ?? local["data-label"] ?? headLabel();
7
16
  return <td
8
17
  {...rest}
9
- ref={mergeRefs(local.ref)}
18
+ ref={mergeRefs(local.ref, setElement)}
10
19
  class={cn("smwb-table__cell", local.class)}
11
20
  align={local.cellAlign || "left"}
12
- data-label={local.label}
21
+ data-label={dataLabel()}
13
22
  >
14
23
  {local.children}
15
24
  </td>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/table/tableCell.tsx"],"sourcesContent":["import { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TableCellProps extends JSX.TdHTMLAttributes<HTMLTableCellElement> {\n cellAlign?: \"left\" | \"right\" | \"center\";\n /** The column's name, shown next to the value when the table stacks rows as cards (`Table stackBelow`). */\n label?: string;\n ref?: Ref<HTMLTableCellElement>;\n}\n\nexport function TableCell(props: ParentProps<TableCellProps>): JSX.Element {\n const merged = mergeProps({ cellAlign: \"left\" as const }, props);\n const [local, rest] = splitProps(merged, [\"children\", \"cellAlign\", \"class\", \"label\", \"ref\"]);\n return (\n <td\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-table__cell\", local.class)}\n align={local.cellAlign || \"left\"}\n data-label={local.label}\n >\n {local.children}\n </td>\n );\n}\n\nexport default TableCell;\n"],"mappings":"AAAA,SAAqC,YAAY,kBAAkB;AACnE,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAS7B,SAAS,UAAU,OAAiD;AACzE,QAAM,SAAS,WAAW,EAAE,WAAW,OAAgB,GAAG,KAAK;AAC/D,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ,CAAC,YAAY,aAAa,SAAS,SAAS,KAAK,CAAC;AAC3F,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,oBAAoB,MAAM,KAAK;AAAA,IACzC,OAAO,MAAM,aAAa;AAAA,IAC1B,YAAY,MAAM;AAAA,GACnB;AAAA,OACE,MAAM,SAAS;AAAA,IAClB,EARC;AAUL;AAEA,IAAO,oBAAQ;","names":[],"file":"tableCell.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/table/tableCell.tsx"],"sourcesContent":["import { type JSX, type ParentProps, createSignal, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { NO_PLACE, cellRowSpan, cellSpan, useInTableHead, useTableLabels, useTableRow } from \"./tableColumns\";\n\nexport interface TableCellProps extends JSX.TdHTMLAttributes<HTMLTableCellElement> {\n cellAlign?: \"left\" | \"right\" | \"center\";\n /**\n * The column's name, shown next to the value when the table stacks rows as\n * cards (`Table stackBelow`). Without it, the cell takes the label of its\n * column's head cell; `false` keeps the cell unlabelled, so it fills the\n * card's width (an action, a sub-row). A caller's own `data-label` counts as a\n * given label too.\n */\n label?: string | false;\n /** The cell's label written by hand, as the attribute the stacked layout shows; `label` replaces it. */\n \"data-label\"?: string | undefined;\n ref?: Ref<HTMLTableCellElement>;\n}\n\nexport function TableCell(props: ParentProps<TableCellProps>): JSX.Element {\n const merged = mergeProps({ cellAlign: \"left\" as const }, props);\n const [local, rest] = splitProps(merged, [\"children\", \"cellAlign\", \"class\", \"label\", \"data-label\", \"ref\"]);\n\n const table = useTableLabels();\n const inHead = useInTableHead();\n const [element, setElement] = createSignal<HTMLTableCellElement>();\n const span = (): number => cellSpan(rest.colSpan ?? rest.colspan);\n const row = useTableRow();\n const place = row ? row.registerCell(element, span, () => cellRowSpan(rest.rowSpan ?? rest.rowspan)) : NO_PLACE;\n\n // Only a body cell of a stacked table, with no label of its own and one column\n // wide, looks its label up in the head.\n const headLabel = (): string | undefined =>\n table?.stacked() && !inHead && local.label === undefined && local[\"data-label\"] === undefined && span() === 1\n ? table.labels.get(place.column())\n : undefined;\n const dataLabel = (): string | undefined =>\n local.label === false ? local[\"data-label\"] : (local.label ?? local[\"data-label\"] ?? headLabel());\n\n return (\n <td\n {...rest}\n ref={mergeRefs(local.ref, setElement)}\n class={cn(\"smwb-table__cell\", local.class)}\n align={local.cellAlign || \"left\"}\n data-label={dataLabel()}\n >\n {local.children}\n </td>\n );\n}\n\nexport default TableCell;\n"],"mappings":"AAAA,SAAqC,cAAc,YAAY,kBAAkB;AACjF,OAAO,QAAQ;AACf,SAAS,iBAA2B;AACpC,SAAS,UAAU,aAAa,UAAU,gBAAgB,gBAAgB,mBAAmB;AAiBtF,SAAS,UAAU,OAAiD;AACzE,QAAM,SAAS,WAAW,EAAE,WAAW,OAAgB,GAAG,KAAK;AAC/D,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ,CAAC,YAAY,aAAa,SAAS,SAAS,cAAc,KAAK,CAAC;AAEzG,QAAM,QAAQ,eAAe;AAC7B,QAAM,SAAS,eAAe;AAC9B,QAAM,CAAC,SAAS,UAAU,IAAI,aAAmC;AACjE,QAAM,OAAO,MAAc,SAAS,KAAK,WAAW,KAAK,OAAO;AAChE,QAAM,MAAM,YAAY;AACxB,QAAM,QAAQ,MAAM,IAAI,aAAa,SAAS,MAAM,MAAM,YAAY,KAAK,WAAW,KAAK,OAAO,CAAC,IAAI;AAIvG,QAAM,YAAY,MAChB,OAAO,QAAQ,KAAK,CAAC,UAAU,MAAM,UAAU,UAAa,MAAM,YAAY,MAAM,UAAa,KAAK,MAAM,IACxG,MAAM,OAAO,IAAI,MAAM,OAAO,CAAC,IAC/B;AACN,QAAM,YAAY,MAChB,MAAM,UAAU,QAAQ,MAAM,YAAY,IAAK,MAAM,SAAS,MAAM,YAAY,KAAK,UAAU;AAEjG,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,KAAK,UAAU;AAAA,IACpC,OAAO,GAAG,oBAAoB,MAAM,KAAK;AAAA,IACzC,OAAO,MAAM,aAAa;AAAA,IAC1B,YAAY,UAAU;AAAA,GACvB;AAAA,OACE,MAAM,SAAS;AAAA,IAClB,EARC;AAUL;AAEA,IAAO,oBAAQ;","names":[],"file":"tableCell.jsx"}
@@ -0,0 +1,311 @@
1
+ import {
2
+ children,
3
+ createComputed,
4
+ createContext,
5
+ createMemo,
6
+ createSignal,
7
+ onCleanup,
8
+ untrack,
9
+ useContext
10
+ } from "solid-js";
11
+ import { isServer } from "solid-js/web";
12
+ import { htmlText } from "./tableHtmlText";
13
+ function createColumnLabels() {
14
+ const columns = /* @__PURE__ */ new Map();
15
+ const slot = (column) => {
16
+ let signal = columns.get(column);
17
+ if (!signal) {
18
+ signal = createSignal([]);
19
+ columns.set(column, signal);
20
+ }
21
+ return signal;
22
+ };
23
+ return {
24
+ get: (column) => {
25
+ let lowest;
26
+ for (const entry of slot(column)[0]()) if (!lowest || entry.row > lowest.row) lowest = entry;
27
+ return lowest?.label;
28
+ },
29
+ set: (column, row, owner, label) => {
30
+ const [read, write] = slot(column);
31
+ const list = untrack(read);
32
+ const prev = list.find((entry) => entry.row === row);
33
+ if (prev?.owner === owner && prev.label === label) return;
34
+ write([...list.filter((entry) => entry.row !== row), { row, owner, label }]);
35
+ },
36
+ remove: (column, row, owner) => {
37
+ const [read, write] = slot(column);
38
+ const list = untrack(read);
39
+ if (list.find((entry) => entry.row === row)?.owner !== owner) return;
40
+ write(list.filter((entry) => entry.row !== row));
41
+ }
42
+ };
43
+ }
44
+ const TableLabelsContext = createContext();
45
+ const TableHeadContext = createContext(false);
46
+ const NOWHERE = { column: -1, row: -1 };
47
+ const NO_PLACE = { column: () => -1, row: () => -1 };
48
+ const TableSectionContext = createContext();
49
+ const TableRowContext = createContext();
50
+ const cellSpan = (colSpan) => Math.max(1, Math.floor(Number(colSpan)) || 1);
51
+ const cellRowSpan = (rowSpan) => {
52
+ if (rowSpan === void 0 || rowSpan === "") return 1;
53
+ const rows = Math.floor(Number(rowSpan));
54
+ return rows === 0 ? Infinity : Math.max(1, rows) || 1;
55
+ };
56
+ const isRow = (element) => element.tagName === "TR";
57
+ const NO_CARRY = [];
58
+ function sameCarry(a, b) {
59
+ const length = Math.max(a.length, b.length);
60
+ for (let i = 0; i < length; i++) if ((a[i] ?? 0) !== (b[i] ?? 0)) return false;
61
+ return true;
62
+ }
63
+ function layOutRow(tr, record, carry) {
64
+ const cells = /* @__PURE__ */ new Map();
65
+ for (const cell of record?.cells ?? []) {
66
+ const at = cell.element();
67
+ if (at && !cells.has(at)) cells.set(at, cell);
68
+ }
69
+ const taken = carry.slice();
70
+ const columns = record ? /* @__PURE__ */ new Map() : void 0;
71
+ let column = 0;
72
+ for (const item of record?.items() ?? Array.from(tr.children)) {
73
+ while ((taken[column] ?? 0) > 0) column++;
74
+ const cell = cells.get(item);
75
+ const td = item;
76
+ const span = cell ? cell.span() : cellSpan(td.colSpan);
77
+ const rows = cell ? cell.rowSpan() : cellRowSpan(td.rowSpan);
78
+ for (let i = 0; i < span; i++) taken[column + i] = rows;
79
+ columns?.set(item, column);
80
+ column += span;
81
+ }
82
+ if (record && columns) {
83
+ for (const cell of record.cells) {
84
+ let at;
85
+ for (let element = cell.element(); element && at === void 0; element = element.parentElement ?? void 0) {
86
+ at = columns.get(element);
87
+ }
88
+ cell.moveTo(at ?? -1);
89
+ }
90
+ }
91
+ const next = taken.map((rows) => Math.max(0, rows - 1));
92
+ while (next.length && !next[next.length - 1]) next.pop();
93
+ return { carry, next };
94
+ }
95
+ function createLayout() {
96
+ let last = [];
97
+ let changed = false;
98
+ const done = /* @__PURE__ */ new WeakMap();
99
+ const owners = /* @__PURE__ */ new WeakMap();
100
+ return {
101
+ /** The row's cells or their spans changed: it is laid out again in the next pass. */
102
+ invalidate: (record) => {
103
+ const tr = record.element();
104
+ if (!tr) return;
105
+ owners.set(tr, record);
106
+ if (done.delete(tr)) changed = true;
107
+ },
108
+ reset: () => {
109
+ last = [];
110
+ },
111
+ run: (trs) => {
112
+ let start = 0;
113
+ while (start < trs.length && trs[start] === last[start] && (!changed || done.has(trs[start]))) start++;
114
+ changed = false;
115
+ if (start === trs.length && start === last.length) return;
116
+ let carry = start ? done.get(trs[start - 1])?.next ?? NO_CARRY : NO_CARRY;
117
+ for (let row = start; row < trs.length; row++) {
118
+ const tr = trs[row];
119
+ let laid = done.get(tr);
120
+ if (!laid || !sameCarry(laid.carry, carry)) {
121
+ laid = layOutRow(tr, owners.get(tr), carry);
122
+ done.set(tr, laid);
123
+ }
124
+ carry = laid.next;
125
+ }
126
+ if (start < last.length) {
127
+ const drawn = new Set(trs);
128
+ for (let row = start; row < last.length; row++) {
129
+ const tr = last[row];
130
+ if (drawn.has(tr)) continue;
131
+ done.delete(tr);
132
+ owners.get(tr)?.cells.forEach((cell) => cell.moveTo(-1));
133
+ }
134
+ }
135
+ last = trs;
136
+ }
137
+ };
138
+ }
139
+ function advance(state, cell, changes) {
140
+ const { index, taken } = state;
141
+ let column = state.column;
142
+ while ((taken[column] ?? 0) > index) column++;
143
+ const span = cell.span();
144
+ const until = index + cell.rowSpan();
145
+ for (let i = 0; i < span; i++) taken[column + i] = until;
146
+ state.column = column + span;
147
+ state.placed++;
148
+ state.changes = changes;
149
+ return { column, row: index };
150
+ }
151
+ function placeCreated(rows, placer, record, cell) {
152
+ const { state, changes } = placer;
153
+ if (state && record.cells[record.cells.length - 1] === cell) {
154
+ if (state.row === record && changes === state.changes + 1 && record.cells.length === state.placed + 1) {
155
+ return advance(state, cell, changes);
156
+ }
157
+ const index2 = rows.length - 1;
158
+ if (rows[index2] === record && record.cells.length === 1 && rows[state.index] === state.row && changes === state.changes + (index2 - state.index) + 1) {
159
+ state.row = record;
160
+ state.index = index2;
161
+ state.placed = 0;
162
+ state.column = 0;
163
+ return advance(state, cell, changes);
164
+ }
165
+ }
166
+ const index = rows.indexOf(record);
167
+ if (index < 0) return NOWHERE;
168
+ const next = { row: record, index, placed: 0, taken: [], column: 0, changes };
169
+ let place = NOWHERE;
170
+ for (let row = 0; row <= index; row++) {
171
+ next.index = row;
172
+ next.placed = 0;
173
+ next.column = 0;
174
+ for (const each of rows[row].cells) {
175
+ const at = advance(next, each, changes);
176
+ if (each === cell && row === index) place = at;
177
+ }
178
+ }
179
+ next.row = record;
180
+ placer.state = next;
181
+ return place;
182
+ }
183
+ function createSectionRows(stacked) {
184
+ const [items, setItems] = createSignal();
185
+ const [changed, setChanged] = createSignal(0);
186
+ const rows = [];
187
+ const trs = createMemo(() => stacked() ? items()?.filter(isRow) : void 0);
188
+ const laidOut = createMemo(() => !!trs());
189
+ const layout = createLayout();
190
+ if (!isServer) {
191
+ createComputed(() => {
192
+ changed();
193
+ const list = trs();
194
+ if (list) untrack(() => layout.run(list));
195
+ else layout.reset();
196
+ });
197
+ }
198
+ return {
199
+ rows,
200
+ placer: { changes: 0, state: void 0 },
201
+ setItems,
202
+ laidOut,
203
+ rowOf: (tr) => tr ? trs()?.indexOf(tr) ?? -1 : -1,
204
+ invalidate: (record) => {
205
+ layout.invalidate(record);
206
+ setChanged((count) => count + 1);
207
+ }
208
+ };
209
+ }
210
+ function createRowColumns(stacked, section, element) {
211
+ const [items, setItems] = createSignal();
212
+ const record = { element, cells: [], items };
213
+ const placer = section ? section.placer : { changes: 0, state: void 0 };
214
+ const ownRows = [record];
215
+ if (section) {
216
+ section.rows.push(record);
217
+ placer.changes++;
218
+ onCleanup(() => {
219
+ section.rows.splice(section.rows.indexOf(record) >>> 0, 1);
220
+ placer.changes++;
221
+ });
222
+ }
223
+ const laidOut = section ? section.laidOut : createMemo(() => stacked() && items() !== void 0 && !!element());
224
+ const rowOf = section ? section.rowOf : (tr) => tr && tr === element() ? 0 : -1;
225
+ if (!isServer) {
226
+ createComputed(() => {
227
+ items();
228
+ for (const cell of record.cells) {
229
+ cell.element();
230
+ cell.span();
231
+ cell.rowSpan();
232
+ }
233
+ if (section) section.invalidate(record);
234
+ else {
235
+ const tr = laidOut() && element();
236
+ if (tr) untrack(() => layOutRow(tr, record, NO_CARRY));
237
+ }
238
+ });
239
+ }
240
+ return {
241
+ setItems,
242
+ registerCell: (cellElement, span, rowSpan) => {
243
+ const [column, setColumn] = createSignal(-1);
244
+ const cell = { element: cellElement, span, rowSpan, moveTo: setColumn };
245
+ record.cells.push(cell);
246
+ placer.changes++;
247
+ onCleanup(() => {
248
+ record.cells.splice(record.cells.indexOf(cell) >>> 0, 1);
249
+ placer.changes++;
250
+ });
251
+ let created = NOWHERE;
252
+ untrack(() => {
253
+ if (stacked() && !laidOut()) {
254
+ created = placeCreated(section ? section.rows : ownRows, placer, record, cell);
255
+ setColumn(created.column);
256
+ }
257
+ });
258
+ const placed = () => stacked() ? column() : -1;
259
+ return {
260
+ column: placed,
261
+ row: () => {
262
+ if (placed() < 0) return -1;
263
+ return laidOut() ? rowOf(element()) : created.row;
264
+ }
265
+ };
266
+ }
267
+ };
268
+ }
269
+ function ChildElements(props) {
270
+ const resolved = children(() => props.children);
271
+ if (!isServer) {
272
+ createComputed(() => props.onItems(resolved.toArray().filter((node) => node instanceof Element)));
273
+ }
274
+ return <>{resolved()}</>;
275
+ }
276
+ function textOf(content) {
277
+ const collect = (value) => {
278
+ if (typeof value === "string" || typeof value === "number") return String(value);
279
+ if (Array.isArray(value)) return value.map(collect).join("");
280
+ if (value && typeof value === "object") {
281
+ if ("textContent" in value) return value.textContent ?? "";
282
+ if (isServer && "t" in value && typeof value.t === "string") return htmlText(value.t);
283
+ }
284
+ return "";
285
+ };
286
+ return collect(content).replace(/\s+/g, " ").trim();
287
+ }
288
+ const useTableLabels = () => useContext(TableLabelsContext);
289
+ const useTableSection = () => useContext(TableSectionContext);
290
+ const useTableRow = () => useContext(TableRowContext);
291
+ const useInTableHead = () => useContext(TableHeadContext);
292
+ export {
293
+ ChildElements,
294
+ NOWHERE,
295
+ NO_PLACE,
296
+ TableHeadContext,
297
+ TableLabelsContext,
298
+ TableRowContext,
299
+ TableSectionContext,
300
+ cellRowSpan,
301
+ cellSpan,
302
+ createColumnLabels,
303
+ createRowColumns,
304
+ createSectionRows,
305
+ textOf,
306
+ useInTableHead,
307
+ useTableLabels,
308
+ useTableRow,
309
+ useTableSection
310
+ };
311
+ //# sourceMappingURL=tableColumns.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/table/tableColumns.tsx"],"sourcesContent":["import {\n type Accessor,\n type JSX,\n type Signal,\n children,\n createComputed,\n createContext,\n createMemo,\n createSignal,\n onCleanup,\n untrack,\n useContext,\n} from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { htmlText } from \"./tableHtmlText\";\n\ninterface ColumnLabel {\n /** The head row of the cell that gives the label. */\n row: number;\n owner: symbol;\n label: string | undefined;\n}\n\n/**\n * The column labels of a stacked table (`Table stackBelow`): its head cells\n * publish them by column position, and the body cells of each column read them.\n * A column may have a head cell in several head rows; the lowest row's wins,\n * whatever order the cells wrote in, so each label is kept by its head row.\n * Head cells write as they are created, so the body cells created after them —\n * the body follows the head in the markup — find the labels at once: on the\n * server too, so the server markup has them, and the client makes the same.\n */\nexport interface ColumnLabels {\n get: (column: number) => string | undefined;\n set: (column: number, row: number, owner: symbol, label: string | undefined) => void;\n /** Drops the label of the column's head cell in `row`, unless another head cell has taken that place since. */\n remove: (column: number, row: number, owner: symbol) => void;\n}\n\nexport function createColumnLabels(): ColumnLabels {\n const columns = new Map<number, Signal<ColumnLabel[]>>();\n const slot = (column: number): Signal<ColumnLabel[]> => {\n let signal = columns.get(column);\n if (!signal) {\n signal = createSignal<ColumnLabel[]>([]);\n columns.set(column, signal);\n }\n return signal;\n };\n return {\n get: (column) => {\n let lowest: ColumnLabel | undefined;\n for (const entry of slot(column)[0]()) if (!lowest || entry.row > lowest.row) lowest = entry;\n return lowest?.label;\n },\n set: (column, row, owner, label) => {\n const [read, write] = slot(column);\n const list = untrack(read);\n const prev = list.find((entry) => entry.row === row);\n if (prev?.owner === owner && prev.label === label) return;\n write([...list.filter((entry) => entry.row !== row), { row, owner, label }]);\n },\n remove: (column, row, owner) => {\n const [read, write] = slot(column);\n const list = untrack(read);\n if (list.find((entry) => entry.row === row)?.owner !== owner) return;\n write(list.filter((entry) => entry.row !== row));\n },\n };\n}\n\nexport interface TableLabelsContextValue {\n /** Whether the table stacks rows (`stackBelow`). */\n stacked: Accessor<boolean>;\n labels: ColumnLabels;\n}\n\nexport const TableLabelsContext = createContext<TableLabelsContextValue>();\n\n/** Whether the cells around are in the table's head. */\nexport const TableHeadContext = createContext(false);\n\n/** Where a cell sits: the column it starts at and its row within the head or body, both from 0. */\nexport interface CellPlace {\n column: number;\n row: number;\n}\n\n/** The place of a cell that has none (yet): outside a stacked table, or not drawn. */\nexport const NOWHERE: CellPlace = { column: -1, row: -1 };\n\n/**\n * A cell's place, read by part: a body cell reads only its column, so a row\n * added or removed above it, which moves it down or up, doesn't run its label\n * again.\n */\nexport interface CellPlaceAccessor {\n column: Accessor<number>;\n row: Accessor<number>;\n}\n\n/** The place of a cell outside a row. */\nexport const NO_PLACE: CellPlaceAccessor = { column: () => -1, row: () => -1 };\n\ninterface CellRecord {\n element: Accessor<Element | undefined>;\n span: Accessor<number>;\n rowSpan: Accessor<number>;\n /** Moves the cell to a column; staying in the same one notifies no one. */\n moveTo: (column: number) => void;\n}\n\ninterface RowRecord {\n element: Accessor<Element | undefined>;\n /** The row's cells, in the order they were created. */\n cells: CellRecord[];\n /** The row's elements, once its children have resolved (browser only). */\n items: Accessor<Element[] | undefined>;\n}\n\n/**\n * Where creation-order placement stands: after the last cell placed, all the\n * rows up to and including that cell's row, with the columns their cells take.\n * Rows and cells are created in markup order, so each new cell continues from\n * there in O(its row) instead of placing every row above again.\n */\ninterface CreationState {\n row: RowRecord;\n /** The row's index among the section's rows. */\n index: number;\n /** How many of the row's cells are placed. */\n placed: number;\n /** The row each column is taken until (exclusive). */\n taken: number[];\n /** The first column after the row's cells placed so far. */\n column: number;\n /** `changes` when it was last updated. */\n changes: number;\n}\n\ninterface CreationPlacer {\n /** Counts every row and cell added or removed. */\n changes: number;\n state: CreationState | undefined;\n}\n\nexport interface TableSectionContextValue {\n /** The section's rows, in the order they were created. */\n rows: RowRecord[];\n placer: CreationPlacer;\n setItems: (items: Element[]) => void;\n /** Whether the cells' places come from the section's elements, known once its children have resolved (browser only). */\n laidOut: Accessor<boolean>;\n /** The index of a row element among the section's rows; -1 if it isn't one. */\n rowOf: (tr: Element | undefined) => number;\n /** Lays the row out again, from the section's next pass on: its cells or their spans changed. */\n invalidate: (record: RowRecord) => void;\n}\n\n/** The head or body around the rows. */\nexport const TableSectionContext = createContext<TableSectionContextValue>();\n\nexport interface TableRowContextValue {\n /**\n * Each cell registers on setup with its element (set once it renders), its\n * `colSpan` and its `rowSpan`, and gets back its place: the column it starts\n * at, counted as in HTML, and its row in the head or body. The place follows\n * the cell when cells or rows are added, removed or reordered.\n */\n registerCell: (\n element: Accessor<Element | undefined>,\n span: Accessor<number>,\n rowSpan: Accessor<number>\n ) => CellPlaceAccessor;\n}\n\nexport const TableRowContext = createContext<TableRowContextValue>();\n\n/** How many columns a cell spans, from its `colSpan`. */\nexport const cellSpan = (colSpan: number | string | undefined): number => Math.max(1, Math.floor(Number(colSpan)) || 1);\n\n/** How many rows a cell spans, from its `rowSpan`: `0` spans the rest of its head or body, as in HTML. */\nexport const cellRowSpan = (rowSpan: number | string | undefined): number => {\n if (rowSpan === undefined || rowSpan === \"\") return 1;\n const rows = Math.floor(Number(rowSpan));\n return rows === 0 ? Infinity : Math.max(1, rows) || 1;\n};\n\nconst isRow = (element: Element): boolean => element.tagName === \"TR\";\n\n/**\n * The columns that cells of the rows above still take at a row: for each\n * column, in how many rows from this one on it is free again (0 or missing:\n * free here). It doesn't depend on the row's index, so a row keeps its\n * columns when rows are added or removed above it and what reaches it from\n * above stays the same.\n */\ntype Carry = readonly number[];\n\nconst NO_CARRY: Carry = [];\n\nfunction sameCarry(a: Carry, b: Carry): boolean {\n const length = Math.max(a.length, b.length);\n for (let i = 0; i < length; i++) if ((a[i] ?? 0) !== (b[i] ?? 0)) return false;\n return true;\n}\n\n/** A row as last laid out: what reached it from above, and what it passes down. */\ninterface RowLayout {\n carry: Carry;\n next: Carry;\n}\n\n/**\n * Places a row's cells as HTML does: each starts at the first column from the\n * left not taken by an earlier cell of the row or by a cell of a row above\n * that spans down into it. A registered row gives its resolved cells, with a\n * registered cell's own spans, and moves its cells there; any other row gives\n * its elements and their attributes. A registered cell not drawn in the row\n * goes nowhere.\n */\nfunction layOutRow(tr: Element, record: RowRecord | undefined, carry: Carry): RowLayout {\n const cells = new Map<Element, CellRecord>();\n for (const cell of record?.cells ?? []) {\n const at = cell.element();\n if (at && !cells.has(at)) cells.set(at, cell);\n }\n // The rows each column stays taken from this one on: 1 for this row only.\n const taken = carry.slice();\n const columns = record ? new Map<Element, number>() : undefined;\n let column = 0;\n for (const item of record?.items() ?? Array.from(tr.children)) {\n while ((taken[column] ?? 0) > 0) column++;\n const cell = cells.get(item);\n const td = item as HTMLTableCellElement;\n const span = cell ? cell.span() : cellSpan(td.colSpan);\n const rows = cell ? cell.rowSpan() : cellRowSpan(td.rowSpan);\n for (let i = 0; i < span; i++) taken[column + i] = rows;\n columns?.set(item, column);\n column += span;\n }\n if (record && columns) {\n for (const cell of record.cells) {\n // The cell's element, or the drawn element around it.\n let at: number | undefined;\n for (let element = cell.element(); element && at === undefined; element = element.parentElement ?? undefined) {\n at = columns.get(element);\n }\n cell.moveTo(at ?? -1);\n }\n }\n const next = taken.map((rows) => Math.max(0, rows - 1));\n while (next.length && !next[next.length - 1]) next.pop();\n return { carry, next };\n}\n\n/**\n * Lays out a head's or body's rows (its `<tr>` elements, in order) after a\n * change, from the first row that differs from the last pass, or that changed\n * itself. A row whose carry from above is the one it had keeps its columns, so\n * a row added, removed or moved costs its own cells plus a check of the rows\n * after it, not a pass over every cell. A registered row no longer drawn has\n * its cells moved nowhere.\n */\nfunction createLayout() {\n let last: Element[] = [];\n // Whether a row drawn in the last pass changed since.\n let changed = false;\n const done = new WeakMap<Element, RowLayout>();\n const owners = new WeakMap<Element, RowRecord>();\n return {\n /** The row's cells or their spans changed: it is laid out again in the next pass. */\n invalidate: (record: RowRecord) => {\n const tr = record.element();\n if (!tr) return;\n owners.set(tr, record);\n if (done.delete(tr)) changed = true;\n },\n reset: () => {\n last = [];\n },\n run: (trs: Element[]) => {\n let start = 0;\n while (start < trs.length && trs[start] === last[start] && (!changed || done.has(trs[start]!))) start++;\n changed = false;\n if (start === trs.length && start === last.length) return;\n let carry = start ? (done.get(trs[start - 1]!)?.next ?? NO_CARRY) : NO_CARRY;\n for (let row = start; row < trs.length; row++) {\n const tr = trs[row]!;\n let laid = done.get(tr);\n if (!laid || !sameCarry(laid.carry, carry)) {\n laid = layOutRow(tr, owners.get(tr), carry);\n done.set(tr, laid);\n }\n carry = laid.next;\n }\n if (start < last.length) {\n const drawn = new Set(trs);\n for (let row = start; row < last.length; row++) {\n const tr = last[row]!;\n if (drawn.has(tr)) continue;\n done.delete(tr);\n owners.get(tr)?.cells.forEach((cell) => cell.moveTo(-1));\n }\n }\n last = trs;\n },\n };\n}\n\n/** Takes the next column free in the state's row for the cell, and returns its place. */\nfunction advance(state: CreationState, cell: CellRecord, changes: number): CellPlace {\n const { index, taken } = state;\n let column = state.column;\n while ((taken[column] ?? 0) > index) column++;\n const span = cell.span();\n const until = index + cell.rowSpan();\n for (let i = 0; i < span; i++) taken[column + i] = until;\n state.column = column + span;\n state.placed++;\n state.changes = changes;\n return { column, row: index };\n}\n\n/**\n * A cell's place from the order rows and cells were created in. The cell just\n * created continues from where the last one was placed: in its row, or in a\n * row created after it. Anything else (a cell added to an earlier row, a row or\n * cell removed) places the rows up to the cell's again.\n */\nfunction placeCreated(rows: RowRecord[], placer: CreationPlacer, record: RowRecord, cell: CellRecord): CellPlace {\n const { state, changes } = placer;\n if (state && record.cells[record.cells.length - 1] === cell) {\n // Only this cell was added since, to the row last placed in.\n if (state.row === record && changes === state.changes + 1 && record.cells.length === state.placed + 1) {\n return advance(state, cell, changes);\n }\n // Only rows were added since, the last of them this cell's, and then this cell.\n const index = rows.length - 1;\n if (\n rows[index] === record &&\n record.cells.length === 1 &&\n rows[state.index] === state.row &&\n changes === state.changes + (index - state.index) + 1\n ) {\n state.row = record;\n state.index = index;\n state.placed = 0;\n state.column = 0;\n return advance(state, cell, changes);\n }\n }\n const index = rows.indexOf(record);\n if (index < 0) return NOWHERE;\n const next: CreationState = { row: record, index, placed: 0, taken: [], column: 0, changes };\n let place = NOWHERE;\n for (let row = 0; row <= index; row++) {\n next.index = row;\n next.placed = 0;\n next.column = 0;\n for (const each of rows[row]!.cells) {\n const at = advance(next, each, changes);\n if (each === cell && row === index) place = at;\n }\n }\n next.row = record;\n placer.state = next;\n return place;\n}\n\n/**\n * A head's or body's row registry. In the browser the cells' places come from\n * its elements, known once its children have resolved. Before that, and on the\n * server, they come from the order rows and cells were created in, which is the\n * markup order, so the first client pass gives the server's places.\n */\nexport function createSectionRows(stacked: Accessor<boolean>): TableSectionContextValue {\n const [items, setItems] = createSignal<Element[]>();\n const [changed, setChanged] = createSignal(0);\n const rows: RowRecord[] = [];\n const trs = createMemo(() => (stacked() ? items()?.filter(isRow) : undefined));\n const laidOut = createMemo(() => !!trs());\n const layout = createLayout();\n if (!isServer) {\n createComputed(() => {\n changed();\n const list = trs();\n if (list) untrack(() => layout.run(list));\n else layout.reset();\n });\n }\n return {\n rows,\n placer: { changes: 0, state: undefined },\n setItems,\n laidOut,\n rowOf: (tr) => (tr ? (trs()?.indexOf(tr) ?? -1) : -1),\n invalidate: (record) => {\n layout.invalidate(record);\n setChanged((count) => count + 1);\n },\n };\n}\n\n/**\n * A row's cell registry, inside a head or body or on its own. See\n * `createSectionRows` for how the places are found.\n */\nexport function createRowColumns(\n stacked: Accessor<boolean>,\n section: TableSectionContextValue | undefined,\n element: Accessor<Element | undefined>\n): TableRowContextValue & { setItems: (items: Element[]) => void } {\n const [items, setItems] = createSignal<Element[]>();\n const record: RowRecord = { element, cells: [], items };\n const placer: CreationPlacer = section ? section.placer : { changes: 0, state: undefined };\n const ownRows = [record];\n if (section) {\n section.rows.push(record);\n placer.changes++;\n onCleanup(() => {\n section.rows.splice(section.rows.indexOf(record) >>> 0, 1);\n placer.changes++;\n });\n }\n // A row on its own, outside a head or body, is laid out alone.\n const laidOut = section ? section.laidOut : createMemo(() => stacked() && items() !== undefined && !!element());\n const rowOf = section ? section.rowOf : (tr: Element | undefined) => (tr && tr === element() ? 0 : -1);\n if (!isServer) {\n // The row's cells, their elements and spans: when they change, the row is\n // laid out again.\n createComputed(() => {\n items();\n for (const cell of record.cells) {\n cell.element();\n cell.span();\n cell.rowSpan();\n }\n if (section) section.invalidate(record);\n else {\n const tr = laidOut() && element();\n if (tr) untrack(() => layOutRow(tr, record, NO_CARRY));\n }\n });\n }\n\n return {\n setItems,\n registerCell: (cellElement, span, rowSpan) => {\n const [column, setColumn] = createSignal(-1);\n const cell: CellRecord = { element: cellElement, span, rowSpan, moveTo: setColumn };\n record.cells.push(cell);\n placer.changes++;\n onCleanup(() => {\n record.cells.splice(record.cells.indexOf(cell) >>> 0, 1);\n placer.changes++;\n });\n // Before the elements are known (the first client pass, and the server):\n // the order of creation, which later cells do not change. After that the\n // section's layout moves the cell, and its row is its row's index.\n let created = NOWHERE;\n untrack(() => {\n if (stacked() && !laidOut()) {\n created = placeCreated(section ? section.rows : ownRows, placer, record, cell);\n setColumn(created.column);\n }\n });\n const placed = (): number => (stacked() ? column() : -1);\n return {\n column: placed,\n row: () => {\n if (placed() < 0) return -1;\n return laidOut() ? rowOf(element()) : created.row;\n },\n };\n },\n };\n}\n\n/**\n * Children resolved once, with their elements reported in order whenever they\n * change: a row's cells, or a head's or body's rows. It renders inside the\n * context provider of its row or section, so the children it creates find it.\n */\nexport function ChildElements(props: { children?: JSX.Element; onItems: (items: Element[]) => void }): JSX.Element {\n const resolved = children(() => props.children);\n if (!isServer) {\n createComputed(() => props.onItems(resolved.toArray().filter((node) => node instanceof Element)));\n }\n return <>{resolved()}</>;\n}\n\n/**\n * The text of a header's resolved content, with white space collapsed: strings\n * and numbers, and the text of elements. On the server elements are markup\n * strings, read as the browser reads the same markup: tags and comments dropped,\n * character references decoded. A component that makes its text itself gives\n * the text it renders; name a column by `TableHeadCell label` where that is not\n * its name.\n */\nexport function textOf(content: unknown): string {\n const collect = (value: unknown): string => {\n if (typeof value === \"string\" || typeof value === \"number\") return String(value);\n if (Array.isArray(value)) return value.map(collect).join(\"\");\n if (value && typeof value === \"object\") {\n if (\"textContent\" in value) return (value as Node).textContent ?? \"\";\n // An SSR node: `{ t: \"<b>Name</b>\" }`.\n if (isServer && \"t\" in value && typeof value.t === \"string\") return htmlText(value.t);\n }\n return \"\";\n };\n return collect(content).replace(/\\s+/g, \" \").trim();\n}\n\nexport const useTableLabels = (): TableLabelsContextValue | undefined => useContext(TableLabelsContext);\nexport const useTableSection = (): TableSectionContextValue | undefined => useContext(TableSectionContext);\nexport const useTableRow = (): TableRowContextValue | undefined => useContext(TableRowContext);\nexport const useInTableHead = (): boolean => useContext(TableHeadContext);\n"],"mappings":"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","names":["index"],"file":"tableColumns.jsx"}