@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,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;"}
@@ -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,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,78 +1,73 @@
1
- import { jsx as d, jsxs as p } from "react/jsx-runtime";
2
- import _ from "clsx";
3
- import { Icon as w } from "../../base/icon/icon.js";
4
- const g = [
5
- "a[href]",
6
- "button",
7
- "input",
8
- "select",
9
- "textarea",
10
- "label",
11
- "summary",
12
- "[tabindex]",
13
- "[contenteditable]:not([contenteditable='false'])",
14
- ...[
15
- "button",
16
- "link",
17
- "checkbox",
18
- "radio",
19
- "switch",
20
- "textbox",
21
- "searchbox",
22
- "combobox",
23
- "spinbutton",
24
- "slider",
25
- "menuitem",
26
- "menuitemcheckbox",
27
- "menuitemradio",
28
- "option",
29
- "tab"
30
- ].map((c) => `[role='${c}']`)
31
- ].join(","), T = ({
32
- children: c,
33
- className: l,
34
- cellAlign: s = "left",
35
- isSortedByAsc: m,
36
- isSortedByDesc: r,
1
+ import { jsxs as x, jsx as h } from "react/jsx-runtime";
2
+ import { useContext as b, useEffect as k } from "react";
3
+ import N from "clsx";
4
+ import { isOwnClick as T } from "../../../utils/ownClick.js";
5
+ import { Icon as I } from "../../base/icon/icon.js";
6
+ import { useId as H } from "../../../hooks/useId.js";
7
+ import { TableLabelsContext as j, TableColumnContext as D, TableHeadContext as E, cellSpan as K, textOf as L } from "./tableColumns.js";
8
+ function O(t, u, f) {
9
+ var s, m;
10
+ const n = b(j), a = b(D), e = b(E), i = n != null && a != null && e && K(u) === 1, l = (s = a == null ? void 0 : a.column) != null ? s : -1, c = (m = a == null ? void 0 : a.row) != null ? m : -1, o = i && f() || void 0;
11
+ i && n.set(l, c, t, o), k(() => {
12
+ if (i)
13
+ return n.set(l, c, t, o), n.notify(), () => {
14
+ n.remove(l, c, t), n.notify();
15
+ };
16
+ }, [n, l, c, t, i, o]);
17
+ }
18
+ const J = ({
19
+ children: t,
20
+ className: u,
21
+ cellAlign: f = "left",
22
+ isSortedByAsc: n,
23
+ isSortedByDesc: a,
37
24
  sortable: e,
38
25
  sortDirection: i,
39
- onSort: t,
40
- ...u
26
+ onSort: l,
27
+ actions: c,
28
+ label: o,
29
+ ...s
41
30
  }) => {
42
- const a = i !== void 0 ? i : m ? "asc" : r ? "desc" : !1, b = e ? a === "asc" ? "ascending" : a === "desc" ? "descending" : "none" : void 0, f = a === "asc" ? "expand_more" : a === "desc" ? "expand_less" : "unfold_more", h = (n) => {
43
- n.target === n.currentTarget && e && t && (n.key === "Enter" || n.key === " ") && (n.preventDefault(), t());
44
- }, x = (n) => {
45
- var o;
46
- n.defaultPrevented || ((o = n.target) == null ? void 0 : o.closest(g)) === n.currentTarget && (t == null || t());
47
- };
48
- return /* @__PURE__ */ d(
31
+ const m = H();
32
+ O(m, s.colSpan, () => o != null ? o : L(t));
33
+ const r = i !== void 0 ? i : n ? "asc" : a ? "desc" : !1, C = e ? r === "asc" ? "ascending" : r === "desc" ? "descending" : "none" : s["aria-sort"], y = r === "asc" ? "expand_more" : r === "desc" ? "expand_less" : "unfold_more", v = (d) => {
34
+ d.target === d.currentTarget && e && l && (d.key === "Enter" || d.key === " ") && (d.preventDefault(), l());
35
+ }, g = (d) => {
36
+ T(d) && (l == null || l());
37
+ }, _ = `${m}-label`, w = !!c && s["aria-label"] == null && s["aria-labelledby"] == null;
38
+ return /* @__PURE__ */ x(
49
39
  "th",
50
40
  {
51
- ...u,
52
- "aria-sort": b,
53
- className: _("smwb-table__cell", "smwb-head-cell", l, {
54
- [`smwb-align_${s}`]: !!s,
41
+ ...s,
42
+ "aria-labelledby": w ? _ : s["aria-labelledby"],
43
+ "aria-sort": C,
44
+ className: N("smwb-table__cell", "smwb-head-cell", u, {
45
+ [`smwb-align_${f}`]: !!f,
55
46
  "smwb-head-cell_sortable": e,
56
- "smwb-head-cell_sorted": !!e && a !== !1
47
+ "smwb-head-cell_sorted": !!e && r !== !1
57
48
  }),
58
- children: /* @__PURE__ */ p(
59
- "span",
60
- {
61
- className: "smwb-head-cell__content",
62
- onClick: e ? x : void 0,
63
- onKeyDown: e ? h : void 0,
64
- role: e ? "button" : void 0,
65
- tabIndex: e ? 0 : void 0,
66
- children: [
67
- c,
68
- e && /* @__PURE__ */ d(w, { className: "smwb-head-cell__icon", name: f, size: 18, weight: 800 })
69
- ]
70
- }
71
- )
49
+ children: [
50
+ /* @__PURE__ */ x(
51
+ "span",
52
+ {
53
+ id: w ? _ : void 0,
54
+ className: "smwb-head-cell__content",
55
+ onClick: e ? g : void 0,
56
+ onKeyDown: e ? v : void 0,
57
+ role: e ? "button" : void 0,
58
+ tabIndex: e ? 0 : void 0,
59
+ children: [
60
+ t,
61
+ e && /* @__PURE__ */ h(I, { className: "smwb-head-cell__icon", name: y, size: 18, weight: 800 })
62
+ ]
63
+ }
64
+ ),
65
+ c ? /* @__PURE__ */ h("div", { className: "smwb-head-cell__actions", children: c }) : null
66
+ ]
72
67
  }
73
68
  );
74
69
  };
75
70
  export {
76
- T as default
71
+ J as default
77
72
  };
78
73
  //# sourceMappingURL=tableHeadCell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableHeadCell.js","sources":["../../../../../src/components/dataDisplay/table/tableHeadCell.tsx"],"sourcesContent":["import React, { PropsWithChildren, ThHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\n\nexport type SortDirection = \"asc\" | \"desc\" | false;\n\nexport interface TableHeadCellProps extends ThHTMLAttributes<HTMLTableCellElement> {\n className?: string;\n cellAlign?: \"left\" | \"right\" | \"center\";\n /** @deprecated use `sortDirection=\"desc\"`. */\n isSortedByDesc?: boolean;\n /** @deprecated use `sortDirection=\"asc\"`. */\n isSortedByAsc?: boolean;\n /**\n * Enables the interactive sort affordance with keyboard/aria support.\n *\n * The children sit inside the sort control, and controls among them keep\n * their own input: Enter and Space sort only while the sort control itself\n * has focus, and a click sorts unless it lands in a nested control (input,\n * button, link, label, anything focusable) or in a portal. Content that is not\n * a control, such as click-to-edit text, keeps its click from sorting by\n * calling `preventDefault()` on it. A nested control's name, or its value,\n * becomes part of the sort control's accessible name.\n */\n sortable?: boolean;\n /** Current sort direction for this column. */\n sortDirection?: SortDirection;\n /** Invoked when the user activates the sort control. */\n onSort?: () => void;\n}\n\n/**\n * Whatever takes a click of its own inside the sort control. The control\n * matches too (`role=\"button\"`), so it is the nearest match for a click on the\n * header's text or marker, and only then does the click sort.\n */\nconst INTERACTIVE = [\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"textarea\",\n \"label\",\n \"summary\",\n \"[tabindex]\",\n \"[contenteditable]:not([contenteditable='false'])\",\n ...[\n \"button\",\n \"link\",\n \"checkbox\",\n \"radio\",\n \"switch\",\n \"textbox\",\n \"searchbox\",\n \"combobox\",\n \"spinbutton\",\n \"slider\",\n \"menuitem\",\n \"menuitemcheckbox\",\n \"menuitemradio\",\n \"option\",\n \"tab\",\n ].map((role) => `[role='${role}']`),\n].join(\",\");\n\nconst TableHeadCell = ({\n children,\n className,\n cellAlign = \"left\",\n isSortedByAsc,\n isSortedByDesc,\n sortable,\n sortDirection,\n onSort,\n ...props\n}: PropsWithChildren<TableHeadCellProps>) => {\n const direction: SortDirection =\n sortDirection !== undefined ? sortDirection : isSortedByAsc ? \"asc\" : isSortedByDesc ? \"desc\" : false;\n\n const ariaSort = sortable\n ? direction === \"asc\"\n ? \"ascending\"\n : direction === \"desc\"\n ? \"descending\"\n : \"none\"\n : undefined;\n\n /**\n * A sortable column always shows a marker: the current direction once sorted,\n * and `unfold_more` before that — otherwise nothing tells the reader the column\n * can be sorted at all. A cell that is not sortable shows nothing; it used to\n * render an `<Icon name=\"\">`, which reserved a gap and warned about a missing\n * icon under `source: \"smwb\"`.\n */\n const iconName = direction === \"asc\" ? \"expand_more\" : direction === \"desc\" ? \"expand_less\" : \"unfold_more\";\n\n // Keys typed into an input or pressed on a button inside bubble up here too;\n // only the control's own keys sort.\n const onKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (event.target !== event.currentTarget) return;\n if (sortable && onSort && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n onSort();\n }\n };\n\n // A click sorts only when the control is the nearest thing that takes it. A\n // click in a portal rendered inside fails that too: React delivers it here,\n // though it landed outside the control.\n const onClick = (event: React.MouseEvent<HTMLSpanElement>) => {\n if (event.defaultPrevented) return;\n if ((event.target as Element | null)?.closest(INTERACTIVE) !== event.currentTarget) return;\n onSort?.();\n };\n\n return (\n <th\n {...props}\n aria-sort={ariaSort}\n className={cn(\"smwb-table__cell\", \"smwb-head-cell\", className, {\n [`smwb-align_${cellAlign}`]: !!cellAlign,\n \"smwb-head-cell_sortable\": sortable,\n \"smwb-head-cell_sorted\": !!sortable && direction !== false,\n })}\n >\n <span\n className=\"smwb-head-cell__content\"\n onClick={sortable ? onClick : undefined}\n onKeyDown={sortable ? onKeyDown : undefined}\n role={sortable ? \"button\" : undefined}\n tabIndex={sortable ? 0 : undefined}\n >\n {children}\n {sortable && <Icon className=\"smwb-head-cell__icon\" name={iconName} size={18} weight={800} />}\n </span>\n </th>\n );\n};\n\nexport default TableHeadCell;\n"],"names":["INTERACTIVE","role","TableHeadCell","children","className","cellAlign","isSortedByAsc","isSortedByDesc","sortable","sortDirection","onSort","props","direction","ariaSort","iconName","onKeyDown","event","onClick","_a","jsx","cn","jsxs","Icon"],"mappings":";;;AAoCA,MAAMA,IAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,IAAI,CAACC,MAAS,UAAUA,CAAI,IAAI;AACpC,EAAE,KAAK,GAAG,GAEJC,IAAgB,CAAC;AAAA,EACrB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,GAAGC;AACL,MAA6C;AAC3C,QAAMC,IACJH,MAAkB,SAAYA,IAAgBH,IAAgB,QAAQC,IAAiB,SAAS,IAE5FM,IAAWL,IACbI,MAAc,QACZ,cACAA,MAAc,SACZ,eACA,SACJ,QASEE,IAAWF,MAAc,QAAQ,gBAAgBA,MAAc,SAAS,gBAAgB,eAIxFG,IAAY,CAACC,MAAgD;AACjE,IAAIA,EAAM,WAAWA,EAAM,iBACvBR,KAAYE,MAAWM,EAAM,QAAQ,WAAWA,EAAM,QAAQ,SAChEA,EAAM,eAAA,GACNN,EAAA;AAAA,EAEJ,GAKMO,IAAU,CAACD,MAA6C;;AAC5D,IAAIA,EAAM,sBACLE,IAAAF,EAAM,WAAN,gBAAAE,EAAiC,QAAQlB,QAAiBgB,EAAM,kBACrEN,KAAA,QAAAA;AAAA,EACF;AAEA,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,aAAWE;AAAA,MACX,WAAWO,EAAG,oBAAoB,kBAAkBhB,GAAW;AAAA,QAC7D,CAAC,cAAcC,CAAS,EAAE,GAAG,CAAC,CAACA;AAAA,QAC/B,2BAA2BG;AAAA,QAC3B,yBAAyB,CAAC,CAACA,KAAYI,MAAc;AAAA,MAAA,CACtD;AAAA,MAED,UAAA,gBAAAS;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,SAASb,IAAWS,IAAU;AAAA,UAC9B,WAAWT,IAAWO,IAAY;AAAA,UAClC,MAAMP,IAAW,WAAW;AAAA,UAC5B,UAAUA,IAAW,IAAI;AAAA,UAExB,UAAA;AAAA,YAAAL;AAAA,YACAK,KAAY,gBAAAW,EAACG,GAAA,EAAK,WAAU,wBAAuB,MAAMR,GAAU,MAAM,IAAI,QAAQ,IAAA,CAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAC7F;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"tableHeadCell.js","sources":["../../../../../src/components/dataDisplay/table/tableHeadCell.tsx"],"sourcesContent":["import React, { PropsWithChildren, ReactNode, ThHTMLAttributes, useContext, useEffect } from \"react\";\nimport cn from \"clsx\";\nimport { isOwnClick } from \"../../../utils/ownClick\";\nimport Icon from \"../../base/icon/icon\";\nimport { useId } from \"../../../hooks/useId\";\nimport { TableColumnContext, TableHeadContext, TableLabelsContext, cellSpan, textOf } from \"./tableColumns\";\n\nexport type SortDirection = \"asc\" | \"desc\" | false;\n\nexport interface TableHeadCellProps extends ThHTMLAttributes<HTMLTableCellElement> {\n className?: string;\n cellAlign?: \"left\" | \"right\" | \"center\";\n /** @deprecated use `sortDirection=\"desc\"`. */\n isSortedByDesc?: boolean;\n /** @deprecated use `sortDirection=\"asc\"`. */\n isSortedByAsc?: boolean;\n /**\n * Enables the interactive sort affordance with keyboard/aria support.\n *\n * The children sit inside the sort control, and controls among them keep\n * their own input: Enter and Space sort only while the sort control itself\n * has focus, and a click sorts unless it lands in a nested control (input,\n * button, link, label, anything focusable) or in a portal. Content that is not\n * a control, such as click-to-edit text, keeps its click from sorting by\n * calling `preventDefault()` on it. A nested control's name, or its value,\n * becomes part of the sort control's accessible name: put controls in\n * `actions` instead.\n */\n sortable?: boolean;\n /** Current sort direction for this column. */\n sortDirection?: SortDirection;\n /** Invoked when the user activates the sort control. */\n onSort?: () => void;\n /**\n * The column's controls — a filter field, a menu button, a column resizer —\n * drawn after the sort control, outside it. Their names and values stay out\n * of the sort control's accessible name, and their keys and clicks never\n * reach it. Rendered whether or not the cell is sortable.\n *\n * The column header is then named after the children alone: the cell's\n * `aria-labelledby` points at the sort control, unless the cell is given\n * `aria-label` or `aria-labelledby`. Named from its content, the header would\n * take in the controls' names and values too.\n */\n actions?: ReactNode;\n /**\n * The column's name for its body cells while the table stacks rows as cards\n * (`Table stackBelow`). Without it, the text of the children is the name; give\n * `label` where they hold no text of their own (an icon, a translated message\n * component) or more than the name. An empty `label` leaves the column's cells\n * unlabelled, so they fill the card's width.\n */\n label?: string;\n}\n\n/**\n * A head cell of a stacked table labels its column, for its own head row: the\n * lowest row's label wins. It writes the label while it renders, for the body\n * cells that render after it, and again from an effect: that also tells body\n * cells which rendered before a change.\n */\nfunction useColumnLabel(owner: string, colSpan: number | string | undefined, text: () => string): void {\n const labels = useContext(TableLabelsContext);\n const place = useContext(TableColumnContext);\n const inHead = useContext(TableHeadContext);\n const labelling = labels != null && place != null && inHead && cellSpan(colSpan) === 1;\n const column = place?.column ?? -1;\n const row = place?.row ?? -1;\n const label = labelling ? text() || undefined : undefined;\n // Written during render so the server markup has the labels: see ColumnLabels.\n if (labelling) labels.set(column, row, owner, label);\n useEffect(() => {\n if (!labelling) return;\n labels.set(column, row, owner, label);\n labels.notify();\n return () => {\n labels.remove(column, row, owner);\n labels.notify();\n };\n }, [labels, column, row, owner, labelling, label]);\n}\n\nconst TableHeadCell = ({\n children,\n className,\n cellAlign = \"left\",\n isSortedByAsc,\n isSortedByDesc,\n sortable,\n sortDirection,\n onSort,\n actions,\n label,\n ...props\n}: PropsWithChildren<TableHeadCellProps>) => {\n const id = useId();\n useColumnLabel(id, props.colSpan, () => label ?? textOf(children));\n\n const direction: SortDirection =\n sortDirection !== undefined ? sortDirection : isSortedByAsc ? \"asc\" : isSortedByDesc ? \"desc\" : false;\n\n // A sortable cell's sort state wins over the caller's aria-sort; a cell that\n // is not sortable keeps the caller's.\n const ariaSort = sortable\n ? direction === \"asc\"\n ? \"ascending\"\n : direction === \"desc\"\n ? \"descending\"\n : \"none\"\n : props[\"aria-sort\"];\n\n /**\n * A sortable column always shows a marker: the current direction once sorted,\n * and `unfold_more` before that — otherwise nothing tells the reader the column\n * can be sorted at all. A cell that is not sortable shows nothing; it used to\n * render an `<Icon name=\"\">`, which reserved a gap and warned about a missing\n * icon under `source: \"smwb\"`.\n */\n const iconName = direction === \"asc\" ? \"expand_more\" : direction === \"desc\" ? \"expand_less\" : \"unfold_more\";\n\n // Keys typed into an input or pressed on a button inside bubble up here too;\n // only the control's own keys sort.\n const onKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (event.target !== event.currentTarget) return;\n if (sortable && onSort && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n onSort();\n }\n };\n\n // A click sorts only when the control is the nearest thing that takes it. A\n // click in a portal rendered inside fails that too: React delivers it here,\n // though it landed outside the control.\n const onClick = (event: React.MouseEvent<HTMLSpanElement>) => {\n if (!isOwnClick(event)) return;\n onSort?.();\n };\n\n // With actions drawn, the column header is named after the content of its\n // sort control, not after the whole cell: the controls' names and the text\n // typed into them would join the header's name.\n const labelId = `${id}-label`;\n const labelled = !!actions && props[\"aria-label\"] == null && props[\"aria-labelledby\"] == null;\n\n return (\n <th\n {...props}\n aria-labelledby={labelled ? labelId : props[\"aria-labelledby\"]}\n aria-sort={ariaSort}\n className={cn(\"smwb-table__cell\", \"smwb-head-cell\", className, {\n [`smwb-align_${cellAlign}`]: !!cellAlign,\n \"smwb-head-cell_sortable\": sortable,\n \"smwb-head-cell_sorted\": !!sortable && direction !== false,\n })}\n >\n <span\n id={labelled ? labelId : undefined}\n className=\"smwb-head-cell__content\"\n onClick={sortable ? onClick : undefined}\n onKeyDown={sortable ? onKeyDown : undefined}\n role={sortable ? \"button\" : undefined}\n tabIndex={sortable ? 0 : undefined}\n >\n {children}\n {sortable && <Icon className=\"smwb-head-cell__icon\" name={iconName} size={18} weight={800} />}\n </span>\n {actions ? <div className=\"smwb-head-cell__actions\">{actions}</div> : null}\n </th>\n );\n};\n\nexport default TableHeadCell;\n"],"names":["useColumnLabel","owner","colSpan","text","labels","useContext","TableLabelsContext","place","TableColumnContext","inHead","TableHeadContext","labelling","cellSpan","column","_a","row","_b","label","useEffect","TableHeadCell","children","className","cellAlign","isSortedByAsc","isSortedByDesc","sortable","sortDirection","onSort","actions","props","id","useId","textOf","direction","ariaSort","iconName","onKeyDown","event","onClick","isOwnClick","labelId","labelled","jsxs","cn","jsx","Icon"],"mappings":"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"}
@@ -1,20 +1,32 @@
1
- import { jsx as m } from "react/jsx-runtime";
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import { useContext as r } from "react";
2
3
  import w from "clsx";
3
- const s = ({ children: a, className: t, selected: r, expanded: o, ...b }) => /* @__PURE__ */ m(
4
- "tr",
5
- {
6
- "data-testid": "table-row",
7
- className: w("smwb-table__row", t, {
8
- "smwb-table__row_selected": r,
9
- "smwb-table__row_expanded": o
10
- }),
11
- "aria-selected": r != null ? r : void 0,
12
- "aria-expanded": o != null ? o : void 0,
13
- ...b,
14
- children: a
15
- }
16
- );
4
+ import { TableLabelsContext as c, TableRowPlaceContext as _, useCellPlaces as u, withColumns as f } from "./tableColumns.js";
5
+ const k = ({
6
+ children: e,
7
+ className: l,
8
+ selected: t,
9
+ expanded: a,
10
+ "data-testid": s = "table-row",
11
+ ...o
12
+ }) => {
13
+ const m = r(c) != null, i = r(_), b = u();
14
+ return /* @__PURE__ */ n(
15
+ "tr",
16
+ {
17
+ "data-testid": s,
18
+ className: w("smwb-table__row", l, {
19
+ "smwb-table__row_selected": t,
20
+ "smwb-table__row_expanded": a
21
+ }),
22
+ ...o,
23
+ "aria-selected": t != null ? t : o["aria-selected"],
24
+ "aria-expanded": a != null ? a : o["aria-expanded"],
25
+ children: f(e, m, i, b)
26
+ }
27
+ );
28
+ };
17
29
  export {
18
- s as default
30
+ k as default
19
31
  };
20
32
  //# sourceMappingURL=tableRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableRow.js","sources":["../../../../../src/components/dataDisplay/table/tableRow.tsx"],"sourcesContent":["import React, { HTMLAttributes, PropsWithChildren } from \"react\";\nimport cn from \"clsx\";\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n className?: string;\n /** Marks the row as selected (adds aria-selected + styling). */\n selected?: boolean;\n /** Reflects expandable-row state (adds aria-expanded + styling). */\n expanded?: boolean;\n}\n\nconst TableRow = ({ children, className, selected, expanded, ...props }: PropsWithChildren<TableRowProps>) => {\n return (\n <tr\n data-testid=\"table-row\"\n className={cn(\"smwb-table__row\", className, {\n \"smwb-table__row_selected\": selected,\n \"smwb-table__row_expanded\": expanded,\n })}\n aria-selected={selected ?? undefined}\n aria-expanded={expanded ?? undefined}\n {...props}\n >\n {children}\n </tr>\n );\n};\nexport default TableRow;\n"],"names":["TableRow","children","className","selected","expanded","props","jsx","cn"],"mappings":";;AAWA,MAAMA,IAAW,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,UAAAC,GAAU,UAAAC,GAAU,GAAGC,QAE5D,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,eAAY;AAAA,IACZ,WAAWC,EAAG,mBAAmBL,GAAW;AAAA,MAC1C,4BAA4BC;AAAA,MAC5B,4BAA4BC;AAAA,IAAA,CAC7B;AAAA,IACD,iBAAeD,KAAA,OAAAA,IAAY;AAAA,IAC3B,iBAAeC,KAAA,OAAAA,IAAY;AAAA,IAC1B,GAAGC;AAAA,IAEH,UAAAJ;AAAA,EAAA;AAAA;"}
1
+ {"version":3,"file":"tableRow.js","sources":["../../../../../src/components/dataDisplay/table/tableRow.tsx"],"sourcesContent":["import React, { HTMLAttributes, PropsWithChildren, useContext } from \"react\";\nimport cn from \"clsx\";\nimport { TableLabelsContext, TableRowPlaceContext, useCellPlaces, withColumns } from \"./tableColumns\";\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n className?: string;\n /** Marks the row as selected (adds aria-selected + styling). */\n selected?: boolean;\n /** Reflects expandable-row state (adds aria-expanded + styling). */\n expanded?: boolean;\n /** Test id of the `<tr>`; `table-row` unless given. */\n \"data-testid\"?: string;\n}\n\nconst TableRow = ({\n children,\n className,\n selected,\n expanded,\n \"data-testid\": dataTestId = \"table-row\",\n ...props\n}: PropsWithChildren<TableRowProps>) => {\n // In a stacked table each cell learns its column, by which a body cell finds\n // its label in the head.\n const stacked = useContext(TableLabelsContext) != null;\n const place = useContext(TableRowPlaceContext);\n const keep = useCellPlaces();\n return (\n <tr\n data-testid={dataTestId}\n className={cn(\"smwb-table__row\", className, {\n \"smwb-table__row_selected\": selected,\n \"smwb-table__row_expanded\": expanded,\n })}\n {...props}\n // `selected` and `expanded` win over the caller's aria-selected and\n // aria-expanded; without them, the caller's stay.\n aria-selected={selected ?? props[\"aria-selected\"]}\n aria-expanded={expanded ?? props[\"aria-expanded\"]}\n >\n {withColumns(children, stacked, place, keep)}\n </tr>\n );\n};\nexport default TableRow;\n"],"names":["TableRow","children","className","selected","expanded","dataTestId","props","stacked","useContext","TableLabelsContext","place","TableRowPlaceContext","keep","useCellPlaces","jsx","cn","withColumns"],"mappings":";;;;AAcA,MAAMA,IAAW,CAAC;AAAA,EAChB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAeC,IAAa;AAAA,EAC5B,GAAGC;AACL,MAAwC;AAGtC,QAAMC,IAAUC,EAAWC,CAAkB,KAAK,MAC5CC,IAAQF,EAAWG,CAAoB,GACvCC,IAAOC,EAAA;AACb,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAaT;AAAA,MACb,WAAWU,EAAG,mBAAmBb,GAAW;AAAA,QAC1C,4BAA4BC;AAAA,QAC5B,4BAA4BC;AAAA,MAAA,CAC7B;AAAA,MACA,GAAGE;AAAA,MAGJ,iBAAeH,KAAA,OAAAA,IAAYG,EAAM,eAAe;AAAA,MAChD,iBAAeF,KAAA,OAAAA,IAAYE,EAAM,eAAe;AAAA,MAE/C,UAAAU,EAAYf,GAAUM,GAASG,GAAOE,CAAI;AAAA,IAAA;AAAA,EAAA;AAGjD;"}