@smwb/ui-react 2.7.0 → 2.8.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 (414) hide show
  1. package/README.md +27 -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/menu/menu.entry.css +1 -1
  7. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
  8. package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
  9. package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
  10. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  11. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  12. package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
  13. package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
  14. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  15. package/dist/assets/styles/less/connects/rt/table.entry.css +1 -1
  16. package/dist/components/base/icon/icon.d.ts +6 -2
  17. package/dist/components/base/icon/icon.js +49 -37
  18. package/dist/components/base/icon/icon.js.map +1 -1
  19. package/dist/components/base/ripple/ripple.d.ts +3 -0
  20. package/dist/components/base/ripple/ripple.js +38 -23
  21. package/dist/components/base/ripple/ripple.js.map +1 -1
  22. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  23. package/dist/components/dataDisplay/avatar/avatar.js +50 -37
  24. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  25. package/dist/components/dataDisplay/badge/badge.js +37 -28
  26. package/dist/components/dataDisplay/badge/badge.js.map +1 -1
  27. package/dist/components/dataDisplay/card/card.d.ts +30 -2
  28. package/dist/components/dataDisplay/card/card.js +50 -23
  29. package/dist/components/dataDisplay/card/card.js.map +1 -1
  30. package/dist/components/dataDisplay/carousel/carousel.js +70 -70
  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/chart/chart.js +66 -53
  34. package/dist/components/dataDisplay/chart/chart.js.map +1 -1
  35. package/dist/components/dataDisplay/chat/chatIconButton.d.ts +1 -1
  36. package/dist/components/dataDisplay/chat/chatIconButton.js +30 -26
  37. package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  38. package/dist/components/dataDisplay/chat/chatLayout.d.ts +3 -1
  39. package/dist/components/dataDisplay/chat/chatLayout.js +56 -55
  40. package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
  41. package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +3 -1
  42. package/dist/components/dataDisplay/chip/chip.d.ts +31 -0
  43. package/dist/components/dataDisplay/chip/chip.js +110 -83
  44. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  45. package/dist/components/dataDisplay/chipGroup/chipGroup.js +34 -30
  46. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  47. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
  48. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  49. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
  50. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  51. package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
  52. package/dist/components/dataDisplay/kanban/kanban.js +46 -35
  53. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
  54. package/dist/components/dataDisplay/lazyImage/lazyImage.js +31 -30
  55. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  56. package/dist/components/dataDisplay/list/list.d.ts +2 -0
  57. package/dist/components/dataDisplay/list/list.js +15 -14
  58. package/dist/components/dataDisplay/list/list.js.map +1 -1
  59. package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
  60. package/dist/components/dataDisplay/meter/meter.js +24 -23
  61. package/dist/components/dataDisplay/meter/meter.js.map +1 -1
  62. package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
  63. package/dist/components/dataDisplay/personChip/personChip.js +39 -27
  64. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
  65. package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
  66. package/dist/components/dataDisplay/stat/stat.js +25 -13
  67. package/dist/components/dataDisplay/stat/stat.js.map +1 -1
  68. package/dist/components/dataDisplay/table/table.d.ts +16 -1
  69. package/dist/components/dataDisplay/table/table.js +40 -36
  70. package/dist/components/dataDisplay/table/table.js.map +1 -1
  71. package/dist/components/dataDisplay/table/tableBody.js +10 -4
  72. package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
  73. package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
  74. package/dist/components/dataDisplay/table/tableCell.js +20 -13
  75. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  76. package/dist/components/dataDisplay/table/tableColumns.d.ts +83 -0
  77. package/dist/components/dataDisplay/table/tableColumns.js +112 -0
  78. package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
  79. package/dist/components/dataDisplay/table/tableHead.js +9 -3
  80. package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
  81. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +24 -3
  82. package/dist/components/dataDisplay/table/tableHeadCell.js +60 -65
  83. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  84. package/dist/components/dataDisplay/table/tableRow.d.ts +3 -1
  85. package/dist/components/dataDisplay/table/tableRow.js +28 -16
  86. package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
  87. package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
  88. package/dist/components/dataDisplay/thumbCard/thumbCard.js +79 -59
  89. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  90. package/dist/components/dataDisplay/treeView/treeView.d.ts +2 -0
  91. package/dist/components/dataDisplay/treeView/treeView.js +24 -23
  92. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  93. package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
  94. package/dist/components/feedBack/emptyState/emptyState.js +22 -12
  95. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
  96. package/dist/components/feedBack/message/message.d.ts +2 -0
  97. package/dist/components/feedBack/message/message.js +30 -19
  98. package/dist/components/feedBack/message/message.js.map +1 -1
  99. package/dist/components/feedBack/modal/modal.js +40 -40
  100. package/dist/components/feedBack/modal/modal.js.map +1 -1
  101. package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
  102. package/dist/components/feedBack/skeleton/skeleton.js +37 -34
  103. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  104. package/dist/components/feedBack/snackbar/snackbar.js +104 -103
  105. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  106. package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
  107. package/dist/components/feedBack/tooltip/tooltip.js +67 -47
  108. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  109. package/dist/components/inputs/button/button.d.ts +2 -0
  110. package/dist/components/inputs/button/button.js +62 -58
  111. package/dist/components/inputs/button/button.js.map +1 -1
  112. package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
  113. package/dist/components/inputs/buttonGroups/buttonGroup.js +40 -36
  114. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  115. package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
  116. package/dist/components/inputs/checkbox/checkbox.js +84 -59
  117. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  118. package/dist/components/inputs/datePicker/datePicker.js +170 -164
  119. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  120. package/dist/components/inputs/datePicker/datePickerDay.d.ts +1 -1
  121. package/dist/components/inputs/datePicker/datePickerDay.js +52 -44
  122. package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
  123. package/dist/components/inputs/datePicker/datePickerIconButton.d.ts +1 -1
  124. package/dist/components/inputs/datePicker/datePickerIconButton.js +32 -28
  125. package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  126. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
  127. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  128. package/dist/components/inputs/floatingButton/floatingButton.js +32 -30
  129. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  130. package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
  131. package/dist/components/inputs/radioButton/radioButton.js +77 -58
  132. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  133. package/dist/components/inputs/rating/rating.d.ts +8 -0
  134. package/dist/components/inputs/rating/rating.js +85 -70
  135. package/dist/components/inputs/rating/rating.js.map +1 -1
  136. package/dist/components/inputs/selectField/dropdownMenu.d.ts +20 -1
  137. package/dist/components/inputs/selectField/dropdownMenu.js +266 -113
  138. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  139. package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
  140. package/dist/components/inputs/selectField/optionNavigation.js +38 -0
  141. package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
  142. package/dist/components/inputs/selectField/selectField.d.ts +31 -1
  143. package/dist/components/inputs/selectField/selectField.js +358 -218
  144. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  145. package/dist/components/inputs/slider/slider.d.ts +22 -1
  146. package/dist/components/inputs/slider/slider.js +330 -261
  147. package/dist/components/inputs/slider/slider.js.map +1 -1
  148. package/dist/components/inputs/textField/textField.d.ts +7 -0
  149. package/dist/components/inputs/textField/textField.js +118 -100
  150. package/dist/components/inputs/textField/textField.js.map +1 -1
  151. package/dist/components/inputs/textField/textFieldWrapper.d.ts +15 -1
  152. package/dist/components/inputs/textField/textFieldWrapper.js +45 -34
  153. package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
  154. package/dist/components/inputs/timePicker/timePicker.js +91 -85
  155. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  156. package/dist/components/inputs/toggle/toggle.d.ts +4 -0
  157. package/dist/components/inputs/toggle/toggle.js +80 -61
  158. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  159. package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
  160. package/dist/components/inputs/valueSlider/valueSlider.js +23 -22
  161. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  162. package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
  163. package/dist/components/layout/appLayout/appLayout.js +25 -24
  164. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  165. package/dist/components/layout/divider/divider.d.ts +2 -0
  166. package/dist/components/layout/divider/divider.js +23 -22
  167. package/dist/components/layout/divider/divider.js.map +1 -1
  168. package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
  169. package/dist/components/layout/floatingWindow/floatingWindow.js +145 -139
  170. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  171. package/dist/components/layout/grid/grid.d.ts +12 -1
  172. package/dist/components/layout/grid/grid.js +51 -36
  173. package/dist/components/layout/grid/grid.js.map +1 -1
  174. package/dist/components/layout/page/page.d.ts +2 -0
  175. package/dist/components/layout/page/page.js +16 -8
  176. package/dist/components/layout/page/page.js.map +1 -1
  177. package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
  178. package/dist/components/layout/pageHeader/pageHeader.js +22 -13
  179. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  180. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
  181. package/dist/components/layout/sectionHeader/sectionHeader.js +37 -27
  182. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  183. package/dist/components/layout/sheet/sheet.d.ts +2 -0
  184. package/dist/components/layout/sheet/sheet.js +80 -79
  185. package/dist/components/layout/sheet/sheet.js.map +1 -1
  186. package/dist/components/layout/stack/stack.d.ts +2 -0
  187. package/dist/components/layout/stack/stack.js +29 -17
  188. package/dist/components/layout/stack/stack.js.map +1 -1
  189. package/dist/components/navigation/appBar/appBar.d.ts +2 -0
  190. package/dist/components/navigation/appBar/appBar.js +24 -23
  191. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  192. package/dist/components/navigation/bottomBar/bottomBar.js +81 -77
  193. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  194. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
  195. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +29 -27
  196. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  197. package/dist/components/navigation/menu/menu.d.ts +12 -0
  198. package/dist/components/navigation/menu/menu.js.map +1 -1
  199. package/dist/components/navigation/menu/menuContext.d.ts +2 -0
  200. package/dist/components/navigation/menu/menuContext.js.map +1 -1
  201. package/dist/components/navigation/menu/menuFloating.js +42 -30
  202. package/dist/components/navigation/menu/menuFloating.js.map +1 -1
  203. package/dist/components/navigation/menu/menuItem.d.ts +4 -0
  204. package/dist/components/navigation/menu/menuItem.js +60 -48
  205. package/dist/components/navigation/menu/menuItem.js.map +1 -1
  206. package/dist/components/navigation/menu/menuList.d.ts +5 -1
  207. package/dist/components/navigation/menu/menuList.js +30 -19
  208. package/dist/components/navigation/menu/menuList.js.map +1 -1
  209. package/dist/components/navigation/menu/menuSubmenu.js +53 -40
  210. package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
  211. package/dist/components/navigation/pagination/pagination.d.ts +2 -0
  212. package/dist/components/navigation/pagination/pagination.js +51 -49
  213. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  214. package/dist/components/navigation/sidebar/sidebar.js +39 -38
  215. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  216. package/dist/components/navigation/stepper/stepper.d.ts +2 -0
  217. package/dist/components/navigation/stepper/stepper.js +37 -28
  218. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  219. package/dist/components/navigation/tabs/tab/tab.js +42 -40
  220. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  221. package/dist/components/navigation/tabs/tabs.d.ts +6 -0
  222. package/dist/components/navigation/tabs/tabs.js +83 -86
  223. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  224. package/dist/connects/rt/table/headerCellRenderer.d.ts +4 -1
  225. package/dist/connects/rt/table/headerCellRenderer.js +45 -15
  226. package/dist/connects/rt/table/headerCellRenderer.js.map +1 -1
  227. package/dist/connects/rt/table/table.d.ts +15 -1
  228. package/dist/connects/rt/table/table.js +125 -131
  229. package/dist/connects/rt/table/table.js.map +1 -1
  230. package/dist/headless/components/base/icon/icon.js +49 -37
  231. package/dist/headless/components/base/icon/icon.js.map +1 -1
  232. package/dist/headless/components/base/ripple/ripple.js +42 -27
  233. package/dist/headless/components/base/ripple/ripple.js.map +1 -1
  234. package/dist/headless/components/dataDisplay/avatar/avatar.js +51 -38
  235. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  236. package/dist/headless/components/dataDisplay/badge/badge.js +37 -28
  237. package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
  238. package/dist/headless/components/dataDisplay/card/card.js +50 -23
  239. package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
  240. package/dist/headless/components/dataDisplay/carousel/carousel.js +55 -55
  241. package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
  242. package/dist/headless/components/dataDisplay/chat/chatIconButton.js +30 -26
  243. package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  244. package/dist/headless/components/dataDisplay/chat/chatLayout.js +56 -55
  245. package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
  246. package/dist/headless/components/dataDisplay/chip/chip.js +108 -81
  247. package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
  248. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +35 -31
  249. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  250. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  251. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
  252. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  253. package/dist/headless/components/dataDisplay/kanban/kanban.js +45 -34
  254. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
  255. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +30 -29
  256. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  257. package/dist/headless/components/dataDisplay/list/list.js +15 -14
  258. package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
  259. package/dist/headless/components/dataDisplay/meter/meter.js +19 -18
  260. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
  261. package/dist/headless/components/dataDisplay/personChip/personChip.js +39 -27
  262. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
  263. package/dist/headless/components/dataDisplay/stat/stat.js +27 -15
  264. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
  265. package/dist/headless/components/dataDisplay/table/table.js +40 -36
  266. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  267. package/dist/headless/components/dataDisplay/table/tableBody.js +10 -4
  268. package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
  269. package/dist/headless/components/dataDisplay/table/tableCell.js +20 -13
  270. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  271. package/dist/headless/components/dataDisplay/table/tableColumns.js +112 -0
  272. package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
  273. package/dist/headless/components/dataDisplay/table/tableHead.js +9 -3
  274. package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
  275. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +60 -65
  276. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  277. package/dist/headless/components/dataDisplay/table/tableRow.js +28 -16
  278. package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
  279. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +78 -58
  280. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  281. package/dist/headless/components/dataDisplay/treeView/treeView.js +24 -23
  282. package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
  283. package/dist/headless/components/feedBack/emptyState/emptyState.js +21 -11
  284. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
  285. package/dist/headless/components/feedBack/message/message.js +31 -20
  286. package/dist/headless/components/feedBack/message/message.js.map +1 -1
  287. package/dist/headless/components/feedBack/modal/modal.js +44 -44
  288. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  289. package/dist/headless/components/feedBack/skeleton/skeleton.js +38 -35
  290. package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
  291. package/dist/headless/components/feedBack/snackbar/snackbar.js +108 -107
  292. package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
  293. package/dist/headless/components/feedBack/tooltip/tooltip.js +67 -47
  294. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  295. package/dist/headless/components/inputs/button/button.js +62 -58
  296. package/dist/headless/components/inputs/button/button.js.map +1 -1
  297. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +40 -36
  298. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  299. package/dist/headless/components/inputs/checkbox/checkbox.js +85 -60
  300. package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
  301. package/dist/headless/components/inputs/datePicker/datePicker.js +170 -164
  302. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  303. package/dist/headless/components/inputs/datePicker/datePickerDay.js +52 -44
  304. package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
  305. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +32 -28
  306. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  307. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
  308. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  309. package/dist/headless/components/inputs/floatingButton/floatingButton.js +32 -30
  310. package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
  311. package/dist/headless/components/inputs/radioButton/radioButton.js +77 -58
  312. package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
  313. package/dist/headless/components/inputs/rating/rating.js +85 -70
  314. package/dist/headless/components/inputs/rating/rating.js.map +1 -1
  315. package/dist/headless/components/inputs/selectField/dropdownMenu.js +266 -113
  316. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  317. package/dist/headless/components/inputs/selectField/optionNavigation.js +38 -0
  318. package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
  319. package/dist/headless/components/inputs/selectField/selectField.js +358 -218
  320. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  321. package/dist/headless/components/inputs/slider/slider.js +330 -261
  322. package/dist/headless/components/inputs/slider/slider.js.map +1 -1
  323. package/dist/headless/components/inputs/textField/textField.js +118 -100
  324. package/dist/headless/components/inputs/textField/textField.js.map +1 -1
  325. package/dist/headless/components/inputs/textField/textFieldWrapper.js +45 -34
  326. package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
  327. package/dist/headless/components/inputs/timePicker/timePicker.js +91 -85
  328. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  329. package/dist/headless/components/inputs/toggle/toggle.js +79 -60
  330. package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
  331. package/dist/headless/components/inputs/valueSlider/valueSlider.js +25 -24
  332. package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
  333. package/dist/headless/components/layout/appLayout/appLayout.js +27 -26
  334. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  335. package/dist/headless/components/layout/divider/divider.js +18 -17
  336. package/dist/headless/components/layout/divider/divider.js.map +1 -1
  337. package/dist/headless/components/layout/floatingWindow/floatingWindow.js +145 -139
  338. package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  339. package/dist/headless/components/layout/grid/grid.js +48 -33
  340. package/dist/headless/components/layout/grid/grid.js.map +1 -1
  341. package/dist/headless/components/layout/page/page.js +15 -7
  342. package/dist/headless/components/layout/page/page.js.map +1 -1
  343. package/dist/headless/components/layout/pageHeader/pageHeader.js +20 -11
  344. package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
  345. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +36 -26
  346. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  347. package/dist/headless/components/layout/sheet/sheet.js +80 -79
  348. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  349. package/dist/headless/components/layout/stack/stack.js +29 -17
  350. package/dist/headless/components/layout/stack/stack.js.map +1 -1
  351. package/dist/headless/components/navigation/appBar/appBar.js +15 -14
  352. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  353. package/dist/headless/components/navigation/bottomBar/bottomBar.js +81 -77
  354. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  355. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +32 -30
  356. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  357. package/dist/headless/components/navigation/menu/menu.js.map +1 -1
  358. package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
  359. package/dist/headless/components/navigation/menu/menuFloating.js +42 -30
  360. package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
  361. package/dist/headless/components/navigation/menu/menuItem.js +60 -48
  362. package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
  363. package/dist/headless/components/navigation/menu/menuList.js +30 -19
  364. package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
  365. package/dist/headless/components/navigation/menu/menuSubmenu.js +53 -40
  366. package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
  367. package/dist/headless/components/navigation/pagination/pagination.js +51 -49
  368. package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
  369. package/dist/headless/components/navigation/sidebar/sidebar.js +29 -28
  370. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  371. package/dist/headless/components/navigation/stepper/stepper.js +42 -33
  372. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  373. package/dist/headless/components/navigation/tabs/tab/tab.js +41 -39
  374. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  375. package/dist/headless/components/navigation/tabs/tabs.js +95 -98
  376. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  377. package/dist/headless/hooks/useDismissOnEscape.js +16 -0
  378. package/dist/headless/hooks/useDismissOnEscape.js.map +1 -0
  379. package/dist/headless/hooks/useFocusTrap.js +1 -0
  380. package/dist/headless/hooks/useFocusTrap.js.map +1 -1
  381. package/dist/headless/hooks/useHelperText.js +13 -0
  382. package/dist/headless/hooks/useHelperText.js.map +1 -0
  383. package/dist/headless/utils/controlProps.js +14 -0
  384. package/dist/headless/utils/controlProps.js.map +1 -0
  385. package/dist/headless/utils/overlayLayer.js +14 -7
  386. package/dist/headless/utils/overlayLayer.js.map +1 -1
  387. package/dist/headless/utils/ownClick.js +40 -0
  388. package/dist/headless/utils/ownClick.js.map +1 -0
  389. package/dist/headless/utils/readOnlyToggle.js +14 -0
  390. package/dist/headless/utils/readOnlyToggle.js.map +1 -0
  391. package/dist/hooks/useDismissOnEscape.d.ts +11 -0
  392. package/dist/hooks/useDismissOnEscape.js +16 -0
  393. package/dist/hooks/useDismissOnEscape.js.map +1 -0
  394. package/dist/hooks/useFocusTrap.d.ts +2 -0
  395. package/dist/hooks/useFocusTrap.js +1 -0
  396. package/dist/hooks/useFocusTrap.js.map +1 -1
  397. package/dist/hooks/useHelperText.d.ts +21 -0
  398. package/dist/hooks/useHelperText.js +13 -0
  399. package/dist/hooks/useHelperText.js.map +1 -0
  400. package/dist/index.cjs +2 -2
  401. package/dist/index.cjs.map +1 -1
  402. package/dist/utils/controlProps.d.ts +16 -0
  403. package/dist/utils/controlProps.js +14 -0
  404. package/dist/utils/controlProps.js.map +1 -0
  405. package/dist/utils/overlayLayer.d.ts +15 -3
  406. package/dist/utils/overlayLayer.js +14 -7
  407. package/dist/utils/overlayLayer.js.map +1 -1
  408. package/dist/utils/ownClick.d.ts +16 -0
  409. package/dist/utils/ownClick.js +40 -0
  410. package/dist/utils/ownClick.js.map +1 -0
  411. package/dist/utils/readOnlyToggle.d.ts +15 -0
  412. package/dist/utils/readOnlyToggle.js +14 -0
  413. package/dist/utils/readOnlyToggle.js.map +1 -0
  414. package/package.json +2 -2
@@ -1,44 +1,48 @@
1
- import { jsxs as l, jsx as a } from "react/jsx-runtime";
1
+ import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/table/table.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import { forwardRef as p } from "react";
4
+ import { forwardRef as u, useState as _ } from "react";
5
5
  import r from "clsx";
6
- import n from "./tablePagination/tablePagination.js";
7
- const j = p(
8
- ({ className: b, dense: t, hovered: o, children: i, paginationSettings: e, isLoading: w, stickyHeader: c, caption: m, stackBelow: s, ..._ }, d) => /* @__PURE__ */ l(
9
- "div",
10
- {
11
- ref: d,
12
- className: r(
13
- "smwb-table__wrapper",
14
- b,
15
- {
16
- "smwb-table__wrapper_loading": w
17
- },
18
- s && `smwb-table__wrapper_stack-${s}`
19
- ),
20
- ..._,
21
- children: [
22
- /* @__PURE__ */ a("div", { className: r("smwb-table__container", { "smwb-withPagination": !!e }), children: /* @__PURE__ */ l(
23
- "table",
6
+ import { ColumnLabels as v, TableLabelsContext as h, TableHeadContext as f, TableRowPlaceContext as x, TableColumnContext as P } from "./tableColumns.js";
7
+ import C from "./tablePagination/tablePagination.js";
8
+ const $ = u(
9
+ ({ className: m, dense: s, hovered: b, children: n, paginationSettings: l, isLoading: i, stickyHeader: d, caption: o, stackBelow: a, ...c }, w) => {
10
+ const [p] = _(() => new v());
11
+ return /* @__PURE__ */ t(
12
+ "div",
13
+ {
14
+ ref: w,
15
+ className: r(
16
+ "smwb-table__wrapper",
17
+ m,
24
18
  {
25
- className: r("smwb-table", {
26
- "smwb-dense": t,
27
- "smwb-hovered": o,
28
- "smwb-table_sticky-header": c
29
- }),
30
- children: [
31
- m != null && /* @__PURE__ */ a("caption", { className: "smwb-table__caption", children: m }),
32
- i
33
- ]
34
- }
35
- ) }),
36
- !!e && /* @__PURE__ */ a(n, { ...e })
37
- ]
38
- }
39
- )
19
+ "smwb-table__wrapper_loading": i
20
+ },
21
+ a && `smwb-table__wrapper_stack-${a}`
22
+ ),
23
+ ...c,
24
+ children: [
25
+ /* @__PURE__ */ e("div", { className: r("smwb-table__container", { "smwb-withPagination": !!l }), children: /* @__PURE__ */ t(
26
+ "table",
27
+ {
28
+ className: r("smwb-table", {
29
+ "smwb-dense": s,
30
+ "smwb-hovered": b,
31
+ "smwb-table_sticky-header": d
32
+ }),
33
+ children: [
34
+ o != null && /* @__PURE__ */ e("caption", { className: "smwb-table__caption", children: o }),
35
+ /* @__PURE__ */ e(h.Provider, { value: a ? p : null, children: /* @__PURE__ */ e(f.Provider, { value: !1, children: /* @__PURE__ */ e(x.Provider, { value: null, children: /* @__PURE__ */ e(P.Provider, { value: null, children: n }) }) }) })
36
+ ]
37
+ }
38
+ ) }),
39
+ !!l && /* @__PURE__ */ e(C, { ...l })
40
+ ]
41
+ }
42
+ );
43
+ }
40
44
  );
41
45
  export {
42
- j as default
46
+ $ as default
43
47
  };
44
48
  //# sourceMappingURL=table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../../../src/components/dataDisplay/table/table.tsx"],"sourcesContent":["import { HTMLAttributes, PropsWithChildren, ReactNode, forwardRef } from \"react\";\nimport cn from \"clsx\";\nimport { TablePagination, TablePaginationProps } from \"./index\";\n\nexport interface TableProps extends HTMLAttributes<HTMLDivElement> {\n className?: string;\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?: ReactNode;\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}\n\nconst Table = forwardRef<HTMLDivElement, PropsWithChildren<TableProps>>(\n (\n { className, dense, hovered, children, paginationSettings, isLoading, stickyHeader, caption, stackBelow, ...props },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"smwb-table__wrapper\",\n className,\n {\n [\"smwb-table__wrapper_loading\"]: isLoading,\n },\n stackBelow && `smwb-table__wrapper_stack-${stackBelow}`\n )}\n {...props}\n >\n <div className={cn(\"smwb-table__container\", { \"smwb-withPagination\": !!paginationSettings })}>\n <table\n className={cn(\"smwb-table\", {\n \"smwb-dense\": dense,\n [\"smwb-hovered\"]: hovered,\n \"smwb-table_sticky-header\": stickyHeader,\n })}\n >\n {caption != null && <caption className=\"smwb-table__caption\">{caption}</caption>}\n {children}\n </table>\n </div>\n {!!paginationSettings && <TablePagination {...paginationSettings} />}\n </div>\n );\n }\n);\n\nexport default Table;\n"],"names":["Table","forwardRef","className","dense","hovered","children","paginationSettings","isLoading","stickyHeader","caption","stackBelow","props","ref","jsxs","cn","jsx","TablePagination"],"mappings":";;;;;;AAyBA,MAAMA,IAAQC;AAAA,EACZ,CACE,EAAE,WAAAC,GAAW,OAAAC,GAAO,SAAAC,GAAS,UAAAC,GAAU,oBAAAC,GAAoB,WAAAC,GAAW,cAAAC,GAAc,SAAAC,GAAS,YAAAC,GAAY,GAAGC,EAAA,GAC5GC,MAGE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACAZ;AAAA,QACA;AAAA,UACG,+BAAgCK;AAAA,QAAA;AAAA,QAEnCG,KAAc,6BAA6BA,CAAU;AAAA,MAAA;AAAA,MAEtD,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAI,EAAC,OAAA,EAAI,WAAWD,EAAG,yBAAyB,EAAE,uBAAuB,CAAC,CAACR,GAAoB,GACzF,UAAA,gBAAAO;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWC,EAAG,cAAc;AAAA,cAC1B,cAAcX;AAAA,cACb,gBAAiBC;AAAA,cAClB,4BAA4BI;AAAA,YAAA,CAC7B;AAAA,YAEA,UAAA;AAAA,cAAAC,KAAW,QAAQ,gBAAAM,EAAC,WAAA,EAAQ,WAAU,uBAAuB,UAAAN,GAAQ;AAAA,cACrEJ;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,QACC,CAAC,CAACC,KAAsB,gBAAAS,EAACC,GAAA,EAAiB,GAAGV,EAAA,CAAoB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAI1E;"}
1
+ {"version":3,"file":"table.js","sources":["../../../../src/components/dataDisplay/table/table.tsx"],"sourcesContent":["import { HTMLAttributes, PropsWithChildren, ReactNode, forwardRef, useState } from \"react\";\nimport cn from \"clsx\";\nimport { TablePagination, TablePaginationProps } from \"./index\";\nimport {\n ColumnLabels,\n TableColumnContext,\n TableHeadContext,\n TableLabelsContext,\n TableRowPlaceContext,\n} from \"./tableColumns\";\n\nexport interface TableProps extends HTMLAttributes<HTMLDivElement> {\n className?: string;\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?: ReactNode;\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.\n *\n * The columns come from the elements written: rows written as `TableRow` in\n * `TableHead` or `TableBody`, and cells in a row (arrays and fragments\n * included). A component that renders a row counts as a row whose cells span\n * no rows down, and a component that renders cells counts as one cell, with\n * its own `colSpan` and `rowSpan`: give the cells after such a component, or\n * the component's own cells, a `label`.\n */\n stackBelow?: \"sm\" | \"md\" | \"lg\";\n paginationSettings?: TablePaginationProps;\n}\n\nconst Table = forwardRef<HTMLDivElement, PropsWithChildren<TableProps>>(\n (\n { className, dense, hovered, children, paginationSettings, isLoading, stickyHeader, caption, stackBelow, ...props },\n ref\n ) => {\n const [labels] = useState(() => new ColumnLabels());\n return (\n <div\n ref={ref}\n className={cn(\n \"smwb-table__wrapper\",\n className,\n {\n [\"smwb-table__wrapper_loading\"]: isLoading,\n },\n stackBelow && `smwb-table__wrapper_stack-${stackBelow}`\n )}\n {...props}\n >\n <div className={cn(\"smwb-table__container\", { \"smwb-withPagination\": !!paginationSettings })}>\n <table\n className={cn(\"smwb-table\", {\n \"smwb-dense\": dense,\n [\"smwb-hovered\"]: hovered,\n \"smwb-table_sticky-header\": stickyHeader,\n })}\n >\n {caption != null && <caption className=\"smwb-table__caption\">{caption}</caption>}\n {/* A table inside a cell of another counts its own rows and cells. */}\n <TableLabelsContext.Provider value={stackBelow ? labels : null}>\n <TableHeadContext.Provider value={false}>\n <TableRowPlaceContext.Provider value={null}>\n <TableColumnContext.Provider value={null}>{children}</TableColumnContext.Provider>\n </TableRowPlaceContext.Provider>\n </TableHeadContext.Provider>\n </TableLabelsContext.Provider>\n </table>\n </div>\n {!!paginationSettings && <TablePagination {...paginationSettings} />}\n </div>\n );\n }\n);\n\nexport default Table;\n"],"names":["Table","forwardRef","className","dense","hovered","children","paginationSettings","isLoading","stickyHeader","caption","stackBelow","props","ref","labels","useState","ColumnLabels","jsxs","cn","jsx","TableLabelsContext","TableHeadContext","TableRowPlaceContext","TableColumnContext","TablePagination"],"mappings":";;;;;;;AA+CA,MAAMA,IAAQC;AAAA,EACZ,CACE,EAAE,WAAAC,GAAW,OAAAC,GAAO,SAAAC,GAAS,UAAAC,GAAU,oBAAAC,GAAoB,WAAAC,GAAW,cAAAC,GAAc,SAAAC,GAAS,YAAAC,GAAY,GAAGC,EAAA,GAC5GC,MACG;AACH,UAAM,CAACC,CAAM,IAAIC,EAAS,MAAM,IAAIC,GAAc;AAClD,WACE,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAJ;AAAA,QACA,WAAWK;AAAA,UACT;AAAA,UACAf;AAAA,UACA;AAAA,YACG,+BAAgCK;AAAA,UAAA;AAAA,UAEnCG,KAAc,6BAA6BA,CAAU;AAAA,QAAA;AAAA,QAEtD,GAAGC;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAO,EAAC,OAAA,EAAI,WAAWD,EAAG,yBAAyB,EAAE,uBAAuB,CAAC,CAACX,GAAoB,GACzF,UAAA,gBAAAU;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWC,EAAG,cAAc;AAAA,gBAC1B,cAAcd;AAAA,gBACb,gBAAiBC;AAAA,gBAClB,4BAA4BI;AAAA,cAAA,CAC7B;AAAA,cAEA,UAAA;AAAA,gBAAAC,KAAW,QAAQ,gBAAAS,EAAC,WAAA,EAAQ,WAAU,uBAAuB,UAAAT,GAAQ;AAAA,gBAEtE,gBAAAS,EAACC,EAAmB,UAAnB,EAA4B,OAAOT,IAAaG,IAAS,MACxD,UAAA,gBAAAK,EAACE,EAAiB,UAAjB,EAA0B,OAAO,IAChC,UAAA,gBAAAF,EAACG,EAAqB,UAArB,EAA8B,OAAO,MACpC,UAAA,gBAAAH,EAACI,EAAmB,UAAnB,EAA4B,OAAO,MAAO,UAAAjB,EAAA,CAAS,EAAA,CACtD,GACF,EAAA,CACF;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,GAEJ;AAAA,UACC,CAAC,CAACC,KAAsB,gBAAAY,EAACK,GAAA,EAAiB,GAAGjB,EAAA,CAAoB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGxE;AACF;"}
@@ -1,7 +1,13 @@
1
- import { jsx as a } from "react/jsx-runtime";
2
- import e from "clsx";
3
- const b = ({ children: o, className: t, ...r }) => /* @__PURE__ */ a("tbody", { ...r, className: e("smwb-table__body", t), children: o });
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { useContext as a } from "react";
3
+ import l from "clsx";
4
+ import { TableLabelsContext as n, useRowPlaces as b, withRows as c } from "./tableColumns.js";
5
+ import i from "./tableRow.js";
6
+ const x = ({ children: o, className: t, ...e }) => {
7
+ const r = a(n) != null, s = b();
8
+ return /* @__PURE__ */ m("tbody", { ...e, className: l("smwb-table__body", t), children: c(o, r, i, s) });
9
+ };
4
10
  export {
5
- b as default
11
+ x as default
6
12
  };
7
13
  //# sourceMappingURL=tableBody.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableBody.js","sources":["../../../../src/components/dataDisplay/table/tableBody.tsx"],"sourcesContent":["import React, { HTMLAttributes, PropsWithChildren } from \"react\";\nimport cn from \"clsx\";\n\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {\n className?: string;\n}\n\nconst TableBody = ({ children, className, ...props }: PropsWithChildren<TableBodyProps>) => {\n return (\n <tbody {...props} className={cn(\"smwb-table__body\", className)}>\n {children}\n </tbody>\n );\n};\n\nexport default TableBody;\n"],"names":["TableBody","children","className","props","jsx","cn"],"mappings":";;AAOA,MAAMA,IAAY,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,GAAGC,QAEzC,gBAAAC,EAAC,WAAO,GAAGD,GAAO,WAAWE,EAAG,oBAAoBH,CAAS,GAC1D,UAAAD,GACH;"}
1
+ {"version":3,"file":"tableBody.js","sources":["../../../../src/components/dataDisplay/table/tableBody.tsx"],"sourcesContent":["import React, { HTMLAttributes, PropsWithChildren, useContext } from \"react\";\nimport cn from \"clsx\";\nimport { TableLabelsContext, useRowPlaces, withRows } from \"./tableColumns\";\nimport TableRow from \"./tableRow\";\n\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {\n className?: string;\n}\n\nconst TableBody = ({ children, className, ...props }: PropsWithChildren<TableBodyProps>) => {\n // In a stacked table each row learns the columns that `rowSpan` cells above\n // it take, so its cells find their columns' labels.\n const stacked = useContext(TableLabelsContext) != null;\n const keep = useRowPlaces();\n return (\n <tbody {...props} className={cn(\"smwb-table__body\", className)}>\n {withRows(children, stacked, TableRow, keep)}\n </tbody>\n );\n};\n\nexport default TableBody;\n"],"names":["TableBody","children","className","props","stacked","useContext","TableLabelsContext","keep","useRowPlaces","jsx","cn","withRows","TableRow"],"mappings":";;;;;AASA,MAAMA,IAAY,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,GAAGC,QAA+C;AAG1F,QAAMC,IAAUC,EAAWC,CAAkB,KAAK,MAC5CC,IAAOC,EAAA;AACb,SACE,gBAAAC,EAAC,SAAA,EAAO,GAAGN,GAAO,WAAWO,EAAG,oBAAoBR,CAAS,GAC1D,UAAAS,EAASV,GAAUG,GAASQ,GAAUL,CAAI,GAC7C;AAEJ;"}
@@ -2,8 +2,16 @@ import { PropsWithChildren, TdHTMLAttributes } from "react";
2
2
  export interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {
3
3
  className?: string;
4
4
  cellAlign?: "left" | "right" | "center";
5
- /** The column's name, shown next to the value when the table stacks rows as cards (`Table stackBelow`). */
6
- label?: string;
5
+ /**
6
+ * The column's name, shown next to the value when the table stacks rows as
7
+ * cards (`Table stackBelow`). Without it, the cell takes the label of its
8
+ * column's head cell; `false` keeps the cell unlabelled, so it fills the
9
+ * card's width (an action, a sub-row). A caller's own `data-label` counts as a
10
+ * given label too.
11
+ */
12
+ label?: string | false;
13
+ /** The cell's label written by hand, as the attribute the stacked layout shows; `label` replaces it. */
14
+ "data-label"?: string;
7
15
  }
8
16
  declare const TableCell: ({ children, cellAlign, className, label, ...props }: PropsWithChildren<TableCellProps>) => import("react/jsx-runtime").JSX.Element;
9
17
  export default TableCell;
@@ -1,16 +1,23 @@
1
- import { jsx as r } from "react/jsx-runtime";
2
- import m from "clsx";
3
- const c = ({ children: t, cellAlign: e = "left", className: a, label: l, ...o }) => /* @__PURE__ */ r(
4
- "td",
5
- {
6
- ...o,
7
- className: m("smwb-table__cell", a),
8
- align: e || "left",
9
- ...l !== void 0 && { "data-label": l },
10
- children: t
11
- }
12
- );
1
+ import { jsx as x } from "react/jsx-runtime";
2
+ import { useContext as n, useSyncExternalStore as C } from "react";
3
+ import S from "clsx";
4
+ import { TableLabelsContext as p, TableColumnContext as v, TableHeadContext as L, cellSpan as T } from "./tableColumns.js";
5
+ const H = () => () => {
6
+ }, j = ({ children: m, cellAlign: i = "left", className: b, label: t, ...e }) => {
7
+ var d;
8
+ const o = e["data-label"], a = n(p), l = n(v), u = n(L), s = a != null && l != null && !u && t === void 0 && o === void 0 && T(e.colSpan) === 1, c = () => s ? a.get(l.column) : void 0, f = C(s ? a.subscribe : H, c, c), r = t === !1 ? o : (d = t != null ? t : o) != null ? d : f;
9
+ return /* @__PURE__ */ x(
10
+ "td",
11
+ {
12
+ ...e,
13
+ className: S("smwb-table__cell", b),
14
+ align: i || "left",
15
+ ...r !== void 0 && { "data-label": r },
16
+ children: m
17
+ }
18
+ );
19
+ };
13
20
  export {
14
- c as default
21
+ j as default
15
22
  };
16
23
  //# sourceMappingURL=tableCell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableCell.js","sources":["../../../../src/components/dataDisplay/table/tableCell.tsx"],"sourcesContent":["import React, { PropsWithChildren, TdHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\n\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n className?: string;\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}\n\nconst TableCell = ({ children, cellAlign = \"left\", className, label, ...props }: PropsWithChildren<TableCellProps>) => {\n return (\n <td\n {...props}\n className={cn(\"smwb-table__cell\", className)}\n align={cellAlign || \"left\"}\n // Only a given label sets data-label: without one, a caller's own\n // data-label (the way to label cells by hand) must survive, as in Solid.\n {...(label !== undefined && { \"data-label\": label })}\n >\n {children}\n </td>\n );\n};\n\nexport default TableCell;\n"],"names":["TableCell","children","cellAlign","className","label","props","jsx","cn"],"mappings":";;AAUA,MAAMA,IAAY,CAAC,EAAE,UAAAC,GAAU,WAAAC,IAAY,QAAQ,WAAAC,GAAW,OAAAC,GAAO,GAAGC,QAEpE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACE,GAAGD;AAAA,IACJ,WAAWE,EAAG,oBAAoBJ,CAAS;AAAA,IAC3C,OAAOD,KAAa;AAAA,IAGnB,GAAIE,MAAU,UAAa,EAAE,cAAcA,EAAA;AAAA,IAE3C,UAAAH;AAAA,EAAA;AAAA;"}
1
+ {"version":3,"file":"tableCell.js","sources":["../../../../src/components/dataDisplay/table/tableCell.tsx"],"sourcesContent":["import React, { PropsWithChildren, TdHTMLAttributes, useContext, useSyncExternalStore } from \"react\";\nimport cn from \"clsx\";\nimport { TableColumnContext, TableHeadContext, TableLabelsContext, cellSpan } from \"./tableColumns\";\n\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n className?: string;\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;\n}\n\nconst noSubscribe = () => () => {};\n\nconst TableCell = ({ children, cellAlign = \"left\", className, label, ...props }: PropsWithChildren<TableCellProps>) => {\n const ownDataLabel = props[\"data-label\"];\n const labels = useContext(TableLabelsContext);\n const place = useContext(TableColumnContext);\n const inHead = useContext(TableHeadContext);\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 fromHead =\n labels != null &&\n place != null &&\n !inHead &&\n label === undefined &&\n ownDataLabel === undefined &&\n cellSpan(props.colSpan) === 1;\n const read = () => (fromHead ? labels.get(place.column) : undefined);\n const headLabel = useSyncExternalStore(fromHead ? labels.subscribe : noSubscribe, read, read);\n const dataLabel = label === false ? ownDataLabel : (label ?? ownDataLabel ?? headLabel);\n\n return (\n <td\n {...props}\n className={cn(\"smwb-table__cell\", className)}\n align={cellAlign || \"left\"}\n // A caller's own data-label (the way to label cells by hand) survives\n // unless a label replaces it, as in Solid.\n {...(dataLabel !== undefined && { \"data-label\": dataLabel })}\n >\n {children}\n </td>\n );\n};\n\nexport default TableCell;\n"],"names":["noSubscribe","TableCell","children","cellAlign","className","label","props","ownDataLabel","labels","useContext","TableLabelsContext","place","TableColumnContext","inHead","TableHeadContext","fromHead","cellSpan","read","headLabel","useSyncExternalStore","dataLabel","_a","jsx","cn"],"mappings":";;;;AAmBA,MAAMA,IAAc,MAAM,MAAM;AAAC,GAE3BC,IAAY,CAAC,EAAE,UAAAC,GAAU,WAAAC,IAAY,QAAQ,WAAAC,GAAW,OAAAC,GAAO,GAAGC,QAA+C;;AACrH,QAAMC,IAAeD,EAAM,YAAY,GACjCE,IAASC,EAAWC,CAAkB,GACtCC,IAAQF,EAAWG,CAAkB,GACrCC,IAASJ,EAAWK,CAAgB,GAGpCC,IACJP,KAAU,QACVG,KAAS,QACT,CAACE,KACDR,MAAU,UACVE,MAAiB,UACjBS,EAASV,EAAM,OAAO,MAAM,GACxBW,IAAO,MAAOF,IAAWP,EAAO,IAAIG,EAAM,MAAM,IAAI,QACpDO,IAAYC,EAAqBJ,IAAWP,EAAO,YAAYR,GAAaiB,GAAMA,CAAI,GACtFG,IAAYf,MAAU,KAAQE,KAAgBc,IAAAhB,KAAA,OAAAA,IAASE,MAAT,OAAAc,IAAyBH;AAE7E,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGhB;AAAA,MACJ,WAAWiB,EAAG,oBAAoBnB,CAAS;AAAA,MAC3C,OAAOD,KAAa;AAAA,MAGnB,GAAIiB,MAAc,UAAa,EAAE,cAAcA,EAAA;AAAA,MAE/C,UAAAlB;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,83 @@
1
+ import { ComponentType, ReactNode } from "react";
2
+ /**
3
+ * The column labels of a stacked table (`Table stackBelow`): its head cells
4
+ * publish them by column position, and the body cells of each column read them.
5
+ * A column may have a head cell in several head rows; the lowest row's wins,
6
+ * whatever order the cells wrote in, so each label is kept by its head row.
7
+ *
8
+ * Head cells write while they render, so cells rendered after them — the body
9
+ * follows the head in the markup — read the labels in the same pass: on the
10
+ * server too, and while hydrating, so the server markup has them and the client
11
+ * makes the same. A change after that reaches the body cells through `notify`,
12
+ * which head cells call from an effect.
13
+ *
14
+ * A render that never commits (an interrupted transition) leaves what it wrote
15
+ * until the head cell of that row and column writes again. That is the price of
16
+ * labels in the server markup. The next committed render of the head puts the
17
+ * committed labels back in the store, but notifies only if the committed label
18
+ * changed since its last commit: otherwise the body cells show it once they
19
+ * render on their own.
20
+ */
21
+ export declare class ColumnLabels {
22
+ private readonly labels;
23
+ private readonly listeners;
24
+ private changed;
25
+ get(column: number): string | undefined;
26
+ set(column: number, row: number, owner: string, label: string | undefined): void;
27
+ /** Drops the label of the column's head cell in `row`, unless another head cell has taken that place since. */
28
+ remove(column: number, row: number, owner: string): void;
29
+ notify(): void;
30
+ subscribe: (listener: () => void) => (() => void);
31
+ }
32
+ /** The column labels of the table around, while it stacks rows (`stackBelow`); null otherwise. */
33
+ export declare const TableLabelsContext: import("react").Context<ColumnLabels | null>;
34
+ /** Whether the cells around are in the table's head. */
35
+ export declare const TableHeadContext: import("react").Context<boolean>;
36
+ /** Where a cell sits: the column it starts at and its row within the head or body, both from 0. */
37
+ export interface CellPlace {
38
+ column: number;
39
+ row: number;
40
+ }
41
+ /** A row's place in its head or body: its index, and the columns that cells of the rows above span into. */
42
+ export interface RowPlace {
43
+ row: number;
44
+ taken: ReadonlySet<number>;
45
+ }
46
+ /** The cell's place in a stacked table; null in a table that doesn't stack. */
47
+ export declare const TableColumnContext: import("react").Context<CellPlace | null>;
48
+ /** The row's place in its head or body, in a stacked table; null otherwise or outside a head or body. */
49
+ export declare const TableRowPlaceContext: import("react").Context<RowPlace | null>;
50
+ /** How many columns a cell spans, from its `colSpan`. */
51
+ export declare const cellSpan: (colSpan: number | string | undefined) => number;
52
+ /** How many rows a cell spans, from its `rowSpan`: `0` spans the rest of its head or body, as in HTML. */
53
+ export declare const cellRowSpan: (rowSpan: number | string | undefined) => number;
54
+ /** Keeps a place object of the last render while it is equal to this render's. */
55
+ export type KeepPlace<T> = (index: number, place: T) => T;
56
+ export declare const useRowPlaces: () => KeepPlace<RowPlace>;
57
+ export declare const useCellPlaces: () => KeepPlace<CellPlace>;
58
+ /**
59
+ * Gives each row of a head or body its place, so that its cells start after
60
+ * the columns that `rowSpan` cells of the rows above take. Rows count in the
61
+ * order they are written, the ones in arrays and fragments included. Only the
62
+ * cells of a `rowType` element written there are seen: a component that renders
63
+ * a row counts as a row whose cells span no further down.
64
+ *
65
+ * Every row is wrapped whether or not the table stacks, so a change of
66
+ * `stackBelow` keeps the rows and their state.
67
+ */
68
+ export declare function withRows(children: ReactNode, stacked: boolean, rowType: ComponentType<never>, keep: KeepPlace<RowPlace>): ReactNode;
69
+ /**
70
+ * Gives each cell of a row its place. Cells count in the order they are written,
71
+ * the ones in arrays and fragments included; any other element — a component
72
+ * that renders a cell — counts as one cell, with its own `colSpan` and `rowSpan`.
73
+ * Each cell is wrapped whether or not the table stacks, so a change of
74
+ * `stackBelow` keeps the cells' content and its state.
75
+ */
76
+ export declare function withColumns(children: ReactNode, stacked: boolean, place: RowPlace | null, keep: KeepPlace<CellPlace>): ReactNode;
77
+ /**
78
+ * The text of a header's content: its strings and numbers, those inside elements
79
+ * included, with white space collapsed. A component that makes its text itself
80
+ * (a translated message, an icon) gives none: name such a column by
81
+ * `TableHeadCell label`.
82
+ */
83
+ export declare function textOf(node: ReactNode): string;
@@ -0,0 +1,112 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { createContext as u, useRef as b, Children as x, isValidElement as p, Fragment as C, cloneElement as y } from "react";
3
+ class j {
4
+ constructor() {
5
+ this.labels = /* @__PURE__ */ new Map(), this.listeners = /* @__PURE__ */ new Set(), this.changed = !1, this.subscribe = (t) => (this.listeners.add(t), () => {
6
+ this.listeners.delete(t);
7
+ });
8
+ }
9
+ get(t) {
10
+ var r;
11
+ const e = this.labels.get(t);
12
+ if (!e) return;
13
+ let o = -1;
14
+ for (const s of e.keys()) s > o && (o = s);
15
+ return (r = e.get(o)) == null ? void 0 : r.label;
16
+ }
17
+ set(t, e, o, r) {
18
+ let s = this.labels.get(t);
19
+ s || (s = /* @__PURE__ */ new Map(), this.labels.set(t, s));
20
+ const l = s.get(e);
21
+ (l == null ? void 0 : l.owner) === o && l.label === r || (s.set(e, { owner: o, label: r }), this.changed = !0);
22
+ }
23
+ /** Drops the label of the column's head cell in `row`, unless another head cell has taken that place since. */
24
+ remove(t, e, o) {
25
+ var s;
26
+ const r = this.labels.get(t);
27
+ ((s = r == null ? void 0 : r.get(e)) == null ? void 0 : s.owner) === o && (r.delete(e), r.size || this.labels.delete(t), this.changed = !0);
28
+ }
29
+ notify() {
30
+ this.changed && (this.changed = !1, this.listeners.forEach((t) => t()));
31
+ }
32
+ }
33
+ const A = u(null), L = u(!1), k = u(null), P = u(null), M = (n) => Math.max(1, Math.floor(Number(n)) || 1), R = (n) => {
34
+ if (n === void 0 || n === "") return 1;
35
+ const t = Math.floor(Number(n));
36
+ return t === 0 ? 1 / 0 : Math.max(1, t) || 1;
37
+ };
38
+ function w(n, t, e) {
39
+ let o = 0;
40
+ return n.map((r) => {
41
+ var i;
42
+ for (; ((i = e[o]) != null ? i : 0) > t; ) o++;
43
+ const s = o, l = M(r.colSpan), c = t + R(r.rowSpan);
44
+ for (let a = 0; a < l; a++) e[s + a] = c;
45
+ return o += l, s;
46
+ });
47
+ }
48
+ const E = (n, t) => n.row === t.row && n.taken.size === t.taken.size && [...n.taken].every((e) => t.taken.has(e)), S = (n, t) => n.column === t.column && n.row === t.row;
49
+ function d(n) {
50
+ const t = b([]), e = t.current, o = [];
51
+ return t.current = o, (r, s) => {
52
+ const l = e[r], c = l !== void 0 && n(l, s) ? l : s;
53
+ return o[r] = c, c;
54
+ };
55
+ }
56
+ const N = () => d(E), O = () => d(S);
57
+ function f(n, t) {
58
+ return x.map(n, (e) => p(e) ? e.type === C ? y(
59
+ e,
60
+ void 0,
61
+ f(e.props.children, t)
62
+ ) : t(e) : e);
63
+ }
64
+ function v(n) {
65
+ const t = [];
66
+ return f(n, (e) => (t.push(e), null)), t;
67
+ }
68
+ function F(n, t, e, o) {
69
+ const r = [];
70
+ let s = 0;
71
+ return f(n, (l) => {
72
+ let c = null;
73
+ if (t) {
74
+ const i = s++;
75
+ c = o(i, { row: i, taken: new Set(r.flatMap((h, g) => h > i ? [g] : [])) });
76
+ const a = l.type === e ? v(l.props.children).map(
77
+ (h) => h.props
78
+ ) : [];
79
+ w(a, i, r);
80
+ }
81
+ return /* @__PURE__ */ m(P.Provider, { value: c, children: l });
82
+ });
83
+ }
84
+ function H(n, t, e, o) {
85
+ var c;
86
+ const r = (c = e == null ? void 0 : e.row) != null ? c : 0, s = [];
87
+ e == null || e.taken.forEach((i) => s[i] = r + 1);
88
+ let l = 0;
89
+ return f(n, (i) => {
90
+ const a = t ? o(l++, { column: w([i.props], r, s)[0], row: r }) : null;
91
+ return /* @__PURE__ */ m(k.Provider, { value: a, children: i });
92
+ });
93
+ }
94
+ function I(n) {
95
+ const t = (e) => typeof e == "string" || typeof e == "number" ? String(e) : Array.isArray(e) ? e.map(t).join("") : p(e) ? t(e.props.children) : "";
96
+ return t(n).replace(/\s+/g, " ").trim();
97
+ }
98
+ export {
99
+ j as ColumnLabels,
100
+ k as TableColumnContext,
101
+ L as TableHeadContext,
102
+ A as TableLabelsContext,
103
+ P as TableRowPlaceContext,
104
+ R as cellRowSpan,
105
+ M as cellSpan,
106
+ I as textOf,
107
+ O as useCellPlaces,
108
+ N as useRowPlaces,
109
+ H as withColumns,
110
+ F as withRows
111
+ };
112
+ //# sourceMappingURL=tableColumns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableColumns.js","sources":["../../../../src/components/dataDisplay/table/tableColumns.tsx"],"sourcesContent":["import {\n Children,\n ComponentType,\n Fragment,\n ReactElement,\n ReactNode,\n cloneElement,\n createContext,\n isValidElement,\n useRef,\n} from \"react\";\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 *\n * Head cells write while they render, so cells rendered after them — the body\n * follows the head in the markup — read the labels in the same pass: on the\n * server too, and while hydrating, so the server markup has them and the client\n * makes the same. A change after that reaches the body cells through `notify`,\n * which head cells call from an effect.\n *\n * A render that never commits (an interrupted transition) leaves what it wrote\n * until the head cell of that row and column writes again. That is the price of\n * labels in the server markup. The next committed render of the head puts the\n * committed labels back in the store, but notifies only if the committed label\n * changed since its last commit: otherwise the body cells show it once they\n * render on their own.\n */\nexport class ColumnLabels {\n private readonly labels = new Map<number, Map<number, { owner: string; label: string | undefined }>>();\n private readonly listeners = new Set<() => void>();\n private changed = false;\n\n get(column: number): string | undefined {\n const rows = this.labels.get(column);\n if (!rows) return undefined;\n let row = -1;\n for (const at of rows.keys()) if (at > row) row = at;\n return rows.get(row)?.label;\n }\n\n set(column: number, row: number, owner: string, label: string | undefined): void {\n let rows = this.labels.get(column);\n if (!rows) {\n rows = new Map<number, { owner: string; label: string | undefined }>();\n this.labels.set(column, rows);\n }\n const prev = rows.get(row);\n if (prev?.owner === owner && prev.label === label) return;\n rows.set(row, { owner, label });\n this.changed = true;\n }\n\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: string): void {\n const rows = this.labels.get(column);\n if (rows?.get(row)?.owner !== owner) return;\n rows.delete(row);\n if (!rows.size) this.labels.delete(column);\n this.changed = true;\n }\n\n notify(): void {\n if (!this.changed) return;\n this.changed = false;\n this.listeners.forEach((listener) => listener());\n }\n\n subscribe = (listener: () => void): (() => void) => {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n };\n}\n\n/** The column labels of the table around, while it stacks rows (`stackBelow`); null otherwise. */\nexport const TableLabelsContext = createContext<ColumnLabels | null>(null);\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/** A row's place in its head or body: its index, and the columns that cells of the rows above span into. */\nexport interface RowPlace {\n row: number;\n taken: ReadonlySet<number>;\n}\n\n/** The cell's place in a stacked table; null in a table that doesn't stack. */\nexport const TableColumnContext = createContext<CellPlace | null>(null);\n\n/** The row's place in its head or body, in a stacked table; null otherwise or outside a head or body. */\nexport const TableRowPlaceContext = createContext<RowPlace | null>(null);\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\ntype SpanProps = { colSpan?: number | string; rowSpan?: number | string };\n\n/**\n * Places a row's cells on the grid of its head or body: each starts at the first\n * column from the left not taken by an earlier cell of the row or by a cell of\n * a row above that spans down into it. `taken[column]` is the row the column is\n * taken until (exclusive); the row's cells are added to it.\n */\nfunction placeRow(cells: SpanProps[], row: number, taken: number[]): number[] {\n let column = 0;\n return cells.map((cell) => {\n while ((taken[column] ?? 0) > row) column++;\n const at = column;\n const span = cellSpan(cell.colSpan);\n const until = row + cellRowSpan(cell.rowSpan);\n for (let i = 0; i < span; i++) taken[at + i] = until;\n column += span;\n return at;\n });\n}\n\n/** Keeps a place object of the last render while it is equal to this render's. */\nexport type KeepPlace<T> = (index: number, place: T) => T;\n\nconst sameRowPlace = (a: RowPlace, b: RowPlace): boolean =>\n a.row === b.row && a.taken.size === b.taken.size && [...a.taken].every((column) => b.taken.has(column));\n\nconst sameCellPlace = (a: CellPlace, b: CellPlace): boolean => a.column === b.column && a.row === b.row;\n\n/**\n * The place objects of the last render, kept while equal, so that a row or\n * cell under a memoized parent doesn't render again because its head or body\n * did. The cache holds values only: a render that never commits leaves equal\n * objects, which are as good.\n */\nfunction usePlaces<T>(same: (a: T, b: T) => boolean): KeepPlace<T> {\n const cache = useRef<T[]>([]);\n const last = cache.current;\n const next: T[] = [];\n cache.current = next;\n return (index, place) => {\n const prev = last[index];\n const kept = prev !== undefined && same(prev, place) ? prev : place;\n next[index] = kept;\n return kept;\n };\n}\n\nexport const useRowPlaces = (): KeepPlace<RowPlace> => usePlaces(sameRowPlace);\nexport const useCellPlaces = (): KeepPlace<CellPlace> => usePlaces(sameCellPlace);\n\n/** Maps a list's elements, the ones in arrays and fragments included, keeping its shape. */\nfunction mapElements(nodes: ReactNode, map: (element: ReactElement) => ReactNode): ReactNode {\n return Children.map(nodes, (child) => {\n if (!isValidElement(child)) return child;\n if (child.type === Fragment) {\n return cloneElement(\n child,\n undefined,\n mapElements((child as ReactElement<{ children?: ReactNode }>).props.children, map)\n );\n }\n return map(child);\n });\n}\n\n/** A list's elements, the ones in arrays and fragments included, in order. */\nfunction elementsOf(nodes: ReactNode): ReactElement[] {\n const list: ReactElement[] = [];\n mapElements(nodes, (element) => {\n list.push(element);\n return null;\n });\n return list;\n}\n\n/**\n * Gives each row of a head or body its place, so that its cells start after\n * the columns that `rowSpan` cells of the rows above take. Rows count in the\n * order they are written, the ones in arrays and fragments included. Only the\n * cells of a `rowType` element written there are seen: a component that renders\n * a row counts as a row whose cells span no further down.\n *\n * Every row is wrapped whether or not the table stacks, so a change of\n * `stackBelow` keeps the rows and their state.\n */\nexport function withRows(\n children: ReactNode,\n stacked: boolean,\n rowType: ComponentType<never>,\n keep: KeepPlace<RowPlace>\n): ReactNode {\n const taken: number[] = [];\n let row = 0;\n return mapElements(children, (element) => {\n let place: RowPlace | null = null;\n if (stacked) {\n const at = row++;\n place = keep(at, { row: at, taken: new Set(taken.flatMap((until, column) => (until > at ? [column] : []))) });\n const cells =\n element.type === rowType\n ? elementsOf((element as ReactElement<{ children?: ReactNode }>).props.children).map(\n (cell) => cell.props as SpanProps\n )\n : [];\n placeRow(cells, at, taken);\n }\n return <TableRowPlaceContext.Provider value={place}>{element}</TableRowPlaceContext.Provider>;\n });\n}\n\n/**\n * Gives each cell of a row its place. Cells count in the order they are written,\n * the ones in arrays and fragments included; any other element — a component\n * that renders a cell — counts as one cell, with its own `colSpan` and `rowSpan`.\n * Each cell is wrapped whether or not the table stacks, so a change of\n * `stackBelow` keeps the cells' content and its state.\n */\nexport function withColumns(\n children: ReactNode,\n stacked: boolean,\n place: RowPlace | null,\n keep: KeepPlace<CellPlace>\n): ReactNode {\n const row = place?.row ?? 0;\n const taken: number[] = [];\n place?.taken.forEach((column) => (taken[column] = row + 1));\n let index = 0;\n return mapElements(children, (element) => {\n const at = stacked ? keep(index++, { column: placeRow([element.props as SpanProps], row, taken)[0], row }) : null;\n return <TableColumnContext.Provider value={at}>{element}</TableColumnContext.Provider>;\n });\n}\n\n/**\n * The text of a header's content: its strings and numbers, those inside elements\n * included, with white space collapsed. A component that makes its text itself\n * (a translated message, an icon) gives none: name such a column by\n * `TableHeadCell label`.\n */\nexport function textOf(node: ReactNode): string {\n const collect = (value: ReactNode): string => {\n if (typeof value === \"string\" || typeof value === \"number\") return String(value);\n if (Array.isArray(value)) return value.map(collect).join(\"\");\n if (isValidElement(value)) return collect((value as ReactElement<{ children?: ReactNode }>).props.children);\n return \"\";\n };\n return collect(node).replace(/\\s+/g, \" \").trim();\n}\n"],"names":["ColumnLabels","listener","column","rows","row","at","_a","owner","label","prev","TableLabelsContext","createContext","TableHeadContext","TableColumnContext","TableRowPlaceContext","cellSpan","colSpan","cellRowSpan","rowSpan","placeRow","cells","taken","cell","span","until","i","sameRowPlace","a","b","sameCellPlace","usePlaces","same","cache","useRef","last","next","index","place","kept","useRowPlaces","useCellPlaces","mapElements","nodes","map","Children","child","isValidElement","Fragment","cloneElement","elementsOf","list","element","withRows","children","stacked","rowType","keep","withColumns","textOf","node","collect","value"],"mappings":";;AA+BO,MAAMA,EAAa;AAAA,EAAnB,cAAA;AACL,SAAiB,6BAAa,IAAA,GAC9B,KAAiB,gCAAgB,IAAA,GACjC,KAAQ,UAAU,IAqClB,KAAA,YAAY,CAACC,OACX,KAAK,UAAU,IAAIA,CAAQ,GACpB,MAAM;AACX,WAAK,UAAU,OAAOA,CAAQ;AAAA,IAChC;AAAA,EACF;AAAA,EAxCA,IAAIC,GAAoC;;AACtC,UAAMC,IAAO,KAAK,OAAO,IAAID,CAAM;AACnC,QAAI,CAACC,EAAM;AACX,QAAIC,IAAM;AACV,eAAWC,KAAMF,EAAK,KAAA,EAAQ,CAAIE,IAAKD,MAAKA,IAAMC;AAClD,YAAOC,IAAAH,EAAK,IAAIC,CAAG,MAAZ,gBAAAE,EAAe;AAAA,EACxB;AAAA,EAEA,IAAIJ,GAAgBE,GAAaG,GAAeC,GAAiC;AAC/E,QAAIL,IAAO,KAAK,OAAO,IAAID,CAAM;AACjC,IAAKC,MACHA,wBAAW,IAAA,GACX,KAAK,OAAO,IAAID,GAAQC,CAAI;AAE9B,UAAMM,IAAON,EAAK,IAAIC,CAAG;AACzB,KAAIK,KAAA,gBAAAA,EAAM,WAAUF,KAASE,EAAK,UAAUD,MAC5CL,EAAK,IAAIC,GAAK,EAAE,OAAAG,GAAO,OAAAC,GAAO,GAC9B,KAAK,UAAU;AAAA,EACjB;AAAA;AAAA,EAGA,OAAON,GAAgBE,GAAaG,GAAqB;;AACvD,UAAMJ,IAAO,KAAK,OAAO,IAAID,CAAM;AACnC,MAAII,IAAAH,KAAA,gBAAAA,EAAM,IAAIC,OAAV,gBAAAE,EAAgB,WAAUC,MAC9BJ,EAAK,OAAOC,CAAG,GACVD,EAAK,QAAM,KAAK,OAAO,OAAOD,CAAM,GACzC,KAAK,UAAU;AAAA,EACjB;AAAA,EAEA,SAAe;AACb,IAAK,KAAK,YACV,KAAK,UAAU,IACf,KAAK,UAAU,QAAQ,CAACD,MAAaA,GAAU;AAAA,EACjD;AAQF;AAGO,MAAMS,IAAqBC,EAAmC,IAAI,GAG5DC,IAAmBD,EAAc,EAAK,GAetCE,IAAqBF,EAAgC,IAAI,GAGzDG,IAAuBH,EAA+B,IAAI,GAG1DI,IAAW,CAACC,MAAiD,KAAK,IAAI,GAAG,KAAK,MAAM,OAAOA,CAAO,CAAC,KAAK,CAAC,GAGzGC,IAAc,CAACC,MAAiD;AAC3E,MAAIA,MAAY,UAAaA,MAAY,GAAI,QAAO;AACpD,QAAMf,IAAO,KAAK,MAAM,OAAOe,CAAO,CAAC;AACvC,SAAOf,MAAS,IAAI,QAAW,KAAK,IAAI,GAAGA,CAAI,KAAK;AACtD;AAUA,SAASgB,EAASC,GAAoBhB,GAAaiB,GAA2B;AAC5E,MAAInB,IAAS;AACb,SAAOkB,EAAM,IAAI,CAACE,MAAS;;AACzB,aAAQhB,IAAAe,EAAMnB,CAAM,MAAZ,OAAAI,IAAiB,KAAKF,IAAK,CAAAF;AACnC,UAAMG,IAAKH,GACLqB,IAAOR,EAASO,EAAK,OAAO,GAC5BE,IAAQpB,IAAMa,EAAYK,EAAK,OAAO;AAC5C,aAASG,IAAI,GAAGA,IAAIF,GAAME,IAAK,CAAAJ,EAAMhB,IAAKoB,CAAC,IAAID;AAC/C,WAAAtB,KAAUqB,GACHlB;AAAA,EACT,CAAC;AACH;AAKA,MAAMqB,IAAe,CAACC,GAAaC,MACjCD,EAAE,QAAQC,EAAE,OAAOD,EAAE,MAAM,SAASC,EAAE,MAAM,QAAQ,CAAC,GAAGD,EAAE,KAAK,EAAE,MAAM,CAACzB,MAAW0B,EAAE,MAAM,IAAI1B,CAAM,CAAC,GAElG2B,IAAgB,CAACF,GAAcC,MAA0BD,EAAE,WAAWC,EAAE,UAAUD,EAAE,QAAQC,EAAE;AAQpG,SAASE,EAAaC,GAA6C;AACjE,QAAMC,IAAQC,EAAY,EAAE,GACtBC,IAAOF,EAAM,SACbG,IAAY,CAAA;AAClB,SAAAH,EAAM,UAAUG,GACT,CAACC,GAAOC,MAAU;AACvB,UAAM5B,IAAOyB,EAAKE,CAAK,GACjBE,IAAO7B,MAAS,UAAasB,EAAKtB,GAAM4B,CAAK,IAAI5B,IAAO4B;AAC9D,WAAAF,EAAKC,CAAK,IAAIE,GACPA;AAAA,EACT;AACF;AAEO,MAAMC,IAAe,MAA2BT,EAAUJ,CAAY,GAChEc,IAAgB,MAA4BV,EAAUD,CAAa;AAGhF,SAASY,EAAYC,GAAkBC,GAAsD;AAC3F,SAAOC,EAAS,IAAIF,GAAO,CAACG,MACrBC,EAAeD,CAAK,IACrBA,EAAM,SAASE,IACVC;AAAA,IACLH;AAAA,IACA;AAAA,IACAJ,EAAaI,EAAiD,MAAM,UAAUF,CAAG;AAAA,EAAA,IAG9EA,EAAIE,CAAK,IARmBA,CASpC;AACH;AAGA,SAASI,EAAWP,GAAkC;AACpD,QAAMQ,IAAuB,CAAA;AAC7B,SAAAT,EAAYC,GAAO,CAACS,OAClBD,EAAK,KAAKC,CAAO,GACV,KACR,GACMD;AACT;AAYO,SAASE,EACdC,GACAC,GACAC,GACAC,GACW;AACX,QAAMnC,IAAkB,CAAA;AACxB,MAAIjB,IAAM;AACV,SAAOqC,EAAYY,GAAU,CAACF,MAAY;AACxC,QAAId,IAAyB;AAC7B,QAAIiB,GAAS;AACX,YAAMjD,IAAKD;AACX,MAAAiC,IAAQmB,EAAKnD,GAAI,EAAE,KAAKA,GAAI,OAAO,IAAI,IAAIgB,EAAM,QAAQ,CAACG,GAAOtB,MAAYsB,IAAQnB,IAAK,CAACH,CAAM,IAAI,EAAG,CAAC,GAAG;AAC5G,YAAMkB,IACJ+B,EAAQ,SAASI,IACbN,EAAYE,EAAmD,MAAM,QAAQ,EAAE;AAAA,QAC7E,CAAC7B,MAASA,EAAK;AAAA,MAAA,IAEjB,CAAA;AACN,MAAAH,EAASC,GAAOf,GAAIgB,CAAK;AAAA,IAC3B;AACA,6BAAQP,EAAqB,UAArB,EAA8B,OAAOuB,GAAQ,UAAAc,GAAQ;AAAA,EAC/D,CAAC;AACH;AASO,SAASM,EACdJ,GACAC,GACAjB,GACAmB,GACW;;AACX,QAAMpD,KAAME,IAAA+B,KAAA,gBAAAA,EAAO,QAAP,OAAA/B,IAAc,GACpBe,IAAkB,CAAA;AACxB,EAAAgB,KAAA,QAAAA,EAAO,MAAM,QAAQ,CAACnC,MAAYmB,EAAMnB,CAAM,IAAIE,IAAM;AACxD,MAAIgC,IAAQ;AACZ,SAAOK,EAAYY,GAAU,CAACF,MAAY;AACxC,UAAM9C,IAAKiD,IAAUE,EAAKpB,KAAS,EAAE,QAAQjB,EAAS,CAACgC,EAAQ,KAAkB,GAAG/C,GAAKiB,CAAK,EAAE,CAAC,GAAG,KAAAjB,EAAA,CAAK,IAAI;AAC7G,6BAAQS,EAAmB,UAAnB,EAA4B,OAAOR,GAAK,UAAA8C,GAAQ;AAAA,EAC1D,CAAC;AACH;AAQO,SAASO,EAAOC,GAAyB;AAC9C,QAAMC,IAAU,CAACC,MACX,OAAOA,KAAU,YAAY,OAAOA,KAAU,WAAiB,OAAOA,CAAK,IAC3E,MAAM,QAAQA,CAAK,IAAUA,EAAM,IAAID,CAAO,EAAE,KAAK,EAAE,IACvDd,EAAee,CAAK,IAAUD,EAASC,EAAiD,MAAM,QAAQ,IACnG;AAET,SAAOD,EAAQD,CAAI,EAAE,QAAQ,QAAQ,GAAG,EAAE,KAAA;AAC5C;"}
@@ -1,7 +1,13 @@
1
- import { jsx as r } from "react/jsx-runtime";
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { useContext as s } from "react";
2
3
  import m from "clsx";
3
- const d = ({ children: a, className: e, ...t }) => /* @__PURE__ */ r("thead", { ...t, className: m("smwb-table__head", e), children: a });
4
+ import { TableLabelsContext as n, useRowPlaces as c, TableHeadContext as d, withRows as i } from "./tableColumns.js";
5
+ import b from "./tableRow.js";
6
+ const x = ({ children: t, className: o, ...r }) => {
7
+ const a = s(n) != null, l = c();
8
+ return /* @__PURE__ */ e("thead", { ...r, className: m("smwb-table__head", o), children: /* @__PURE__ */ e(d.Provider, { value: !0, children: i(t, a, b, l) }) });
9
+ };
4
10
  export {
5
- d as default
11
+ x as default
6
12
  };
7
13
  //# sourceMappingURL=tableHead.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableHead.js","sources":["../../../../src/components/dataDisplay/table/tableHead.tsx"],"sourcesContent":["import { HTMLAttributes, PropsWithChildren } from \"react\";\nimport cn from \"clsx\";\n\nexport interface TableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {\n className?: string;\n}\n\nconst TableHead = ({ children, className, ...props }: PropsWithChildren<TableHeadProps>) => {\n return (\n <thead {...props} className={cn(\"smwb-table__head\", className)}>\n {children}\n </thead>\n );\n};\n\nexport default TableHead;\n"],"names":["TableHead","children","className","props","jsx","cn"],"mappings":";;AAOA,MAAMA,IAAY,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,GAAGC,QAEzC,gBAAAC,EAAC,WAAO,GAAGD,GAAO,WAAWE,EAAG,oBAAoBH,CAAS,GAC1D,UAAAD,GACH;"}
1
+ {"version":3,"file":"tableHead.js","sources":["../../../../src/components/dataDisplay/table/tableHead.tsx"],"sourcesContent":["import { HTMLAttributes, PropsWithChildren, useContext } from \"react\";\nimport cn from \"clsx\";\nimport { TableHeadContext, TableLabelsContext, useRowPlaces, withRows } from \"./tableColumns\";\nimport TableRow from \"./tableRow\";\n\nexport interface TableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {\n className?: string;\n}\n\nconst TableHead = ({ children, className, ...props }: PropsWithChildren<TableHeadProps>) => {\n // In a stacked table each row learns the columns that `rowSpan` cells above\n // it take, so its head cells label the columns they stand over.\n const stacked = useContext(TableLabelsContext) != null;\n const keep = useRowPlaces();\n return (\n <thead {...props} className={cn(\"smwb-table__head\", className)}>\n <TableHeadContext.Provider value={true}>{withRows(children, stacked, TableRow, keep)}</TableHeadContext.Provider>\n </thead>\n );\n};\n\nexport default TableHead;\n"],"names":["TableHead","children","className","props","stacked","useContext","TableLabelsContext","keep","useRowPlaces","jsx","cn","TableHeadContext","withRows","TableRow"],"mappings":";;;;;AASA,MAAMA,IAAY,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,GAAGC,QAA+C;AAG1F,QAAMC,IAAUC,EAAWC,CAAkB,KAAK,MAC5CC,IAAOC,EAAA;AACb,SACE,gBAAAC,EAAC,WAAO,GAAGN,GAAO,WAAWO,EAAG,oBAAoBR,CAAS,GAC3D,UAAA,gBAAAO,EAACE,EAAiB,UAAjB,EAA0B,OAAO,IAAO,UAAAC,EAASX,GAAUG,GAASS,GAAUN,CAAI,EAAA,CAAE,EAAA,CACvF;AAEJ;"}
@@ -1,4 +1,4 @@
1
- import { PropsWithChildren, ThHTMLAttributes } from "react";
1
+ import { PropsWithChildren, ReactNode, ThHTMLAttributes } from "react";
2
2
  export type SortDirection = "asc" | "desc" | false;
3
3
  export interface TableHeadCellProps extends ThHTMLAttributes<HTMLTableCellElement> {
4
4
  className?: string;
@@ -16,13 +16,34 @@ export interface TableHeadCellProps extends ThHTMLAttributes<HTMLTableCellElemen
16
16
  * button, link, label, anything focusable) or in a portal. Content that is not
17
17
  * a control, such as click-to-edit text, keeps its click from sorting by
18
18
  * calling `preventDefault()` on it. A nested control's name, or its value,
19
- * becomes part of the sort control's accessible name.
19
+ * becomes part of the sort control's accessible name: put controls in
20
+ * `actions` instead.
20
21
  */
21
22
  sortable?: boolean;
22
23
  /** Current sort direction for this column. */
23
24
  sortDirection?: SortDirection;
24
25
  /** Invoked when the user activates the sort control. */
25
26
  onSort?: () => void;
27
+ /**
28
+ * The column's controls — a filter field, a menu button, a column resizer —
29
+ * drawn after the sort control, outside it. Their names and values stay out
30
+ * of the sort control's accessible name, and their keys and clicks never
31
+ * reach it. Rendered whether or not the cell is sortable.
32
+ *
33
+ * The column header is then named after the children alone: the cell's
34
+ * `aria-labelledby` points at the sort control, unless the cell is given
35
+ * `aria-label` or `aria-labelledby`. Named from its content, the header would
36
+ * take in the controls' names and values too.
37
+ */
38
+ actions?: ReactNode;
39
+ /**
40
+ * The column's name for its body cells while the table stacks rows as cards
41
+ * (`Table stackBelow`). Without it, the text of the children is the name; give
42
+ * `label` where they hold no text of their own (an icon, a translated message
43
+ * component) or more than the name. An empty `label` leaves the column's cells
44
+ * unlabelled, so they fill the card's width.
45
+ */
46
+ label?: string;
26
47
  }
27
- declare const TableHeadCell: ({ children, className, cellAlign, isSortedByAsc, isSortedByDesc, sortable, sortDirection, onSort, ...props }: PropsWithChildren<TableHeadCellProps>) => import("react/jsx-runtime").JSX.Element;
48
+ declare const TableHeadCell: ({ children, className, cellAlign, isSortedByAsc, isSortedByDesc, sortable, sortDirection, onSort, actions, label, ...props }: PropsWithChildren<TableHeadCellProps>) => import("react/jsx-runtime").JSX.Element;
28
49
  export default TableHeadCell;