@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,43 +1,45 @@
1
- import { jsxs as R, jsx as d } from "react/jsx-runtime";
1
+ import { jsxs as d, jsx as x } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/floatingButton/floatingButton.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import n from "react";
5
- import w from "clsx";
6
- import { Ripple as x } from "../../base/ripple/ripple.js";
7
- const N = n.forwardRef(function({
8
- children: i,
9
- className: e,
10
- onMouseDown: t,
11
- variant: f = "default",
12
- size: a = "medium",
13
- color: s = "primary",
14
- type: c = "button",
15
- ...l
16
- }, p) {
17
- const r = n.useRef(null), u = (o) => {
18
- t == null || t(o);
19
- }, b = (o) => {
20
- var m;
21
- (m = r.current) == null || m.onRipple(o);
4
+ import s from "react";
5
+ import $ from "clsx";
6
+ import { Ripple as g } from "../../base/ripple/ripple.js";
7
+ const _ = s.forwardRef(function({
8
+ children: c,
9
+ className: l,
10
+ onMouseDown: m,
11
+ // The button sets this on its root too; its own handler calls the caller's first.
12
+ onPointerDown: f,
13
+ variant: r = "default",
14
+ size: e = "medium",
15
+ color: u = "primary",
16
+ type: b = "button",
17
+ ...n
18
+ }, o) {
19
+ const i = s.useRef(null), R = (t) => {
20
+ m == null || m(t);
21
+ }, p = (t) => {
22
+ var a;
23
+ f == null || f(t), (a = i.current) == null || a.onRipple(t);
22
24
  };
23
- return /* @__PURE__ */ R(
25
+ return /* @__PURE__ */ d(
24
26
  "button",
25
27
  {
26
- ref: p,
27
- type: c,
28
- className: w("smwb-fab", `smwb-${f}`, `smwb-${a}`, `smwb-fab_color-${s}`, e),
29
- onMouseDown: u,
30
- onPointerDown: b,
31
- ...l,
28
+ ref: o,
29
+ type: b,
30
+ className: $("smwb-fab", `smwb-${r}`, `smwb-${e}`, `smwb-fab_color-${u}`, l),
31
+ onMouseDown: R,
32
+ onPointerDown: p,
33
+ ...n,
32
34
  children: [
33
- i,
34
- /* @__PURE__ */ d(x, { actionRef: r })
35
+ c,
36
+ /* @__PURE__ */ x(g, { actionRef: i })
35
37
  ]
36
38
  }
37
39
  );
38
40
  });
39
41
  export {
40
- N as FloatingButton,
41
- N as default
42
+ _ as FloatingButton,
43
+ _ as default
42
44
  };
43
45
  //# sourceMappingURL=floatingButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"floatingButton.js","sources":["../../../../src/components/inputs/floatingButton/floatingButton.tsx"],"sourcesContent":["import React, { ButtonHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport { Ripple, RippleActionsRef } from \"../../base/ripple/ripple\";\n\nexport type FloatingButtonColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface FloatingButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n variant?: \"extended\" | \"default\";\n size?: \"small\" | \"medium\" | \"large\";\n /** Semantic color. Resolves through the shared `--smui-*Color*` tokens. */\n color?: FloatingButtonColor;\n}\n\nexport const FloatingButton = React.forwardRef<HTMLButtonElement, FloatingButtonProps>(function FloatingButton(\n {\n children,\n className,\n onMouseDown: onMouseDownProp,\n variant = \"default\",\n size = \"medium\",\n color = \"primary\",\n type = \"button\",\n ...rest\n },\n ref\n) {\n const rippleRef = React.useRef<RippleActionsRef>(null);\n\n const onMouseDown = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseDownProp?.(event);\n };\n\n // Ripple on pointerdown so it fires for touch and pen, not just mouse.\n const onPointerDown = (event: React.PointerEvent<HTMLButtonElement>) => {\n rippleRef.current?.onRipple(event);\n };\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\"smwb-fab\", `smwb-${variant}`, `smwb-${size}`, `smwb-fab_color-${color}`, className)}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n {...rest}\n >\n {children}\n <Ripple actionRef={rippleRef} />\n </button>\n );\n});\n\nexport default FloatingButton;\n"],"names":["FloatingButton","React","children","className","onMouseDownProp","variant","size","color","type","rest","ref","rippleRef","onMouseDown","event","onPointerDown","_a","jsxs","cn","jsx","Ripple"],"mappings":";;;;;;AAgBO,MAAMA,IAAiBC,EAAM,WAAmD,SACrF;AAAA,EACE,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAaC;AAAA,EACb,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAYV,EAAM,OAAyB,IAAI,GAE/CW,IAAc,CAACC,MAA+C;AAClE,IAAAT,KAAA,QAAAA,EAAkBS;AAAA,EACpB,GAGMC,IAAgB,CAACD,MAAiD;;AACtE,KAAAE,IAAAJ,EAAU,YAAV,QAAAI,EAAmB,SAASF;AAAA,EAC9B;AAEA,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAN;AAAA,MACA,MAAAF;AAAA,MACA,WAAWS,EAAG,YAAY,QAAQZ,CAAO,IAAI,QAAQC,CAAI,IAAI,kBAAkBC,CAAK,IAAIJ,CAAS;AAAA,MACjG,aAAAS;AAAA,MACA,eAAAE;AAAA,MACC,GAAGL;AAAA,MAEH,UAAA;AAAA,QAAAP;AAAA,QACD,gBAAAgB,EAACC,GAAA,EAAO,WAAWR,EAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGpC,CAAC;"}
1
+ {"version":3,"file":"floatingButton.js","sources":["../../../../src/components/inputs/floatingButton/floatingButton.tsx"],"sourcesContent":["import React, { ButtonHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport { Ripple, RippleActionsRef } from \"../../base/ripple/ripple\";\n\nexport type FloatingButtonColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface FloatingButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n variant?: \"extended\" | \"default\";\n size?: \"small\" | \"medium\" | \"large\";\n /** Semantic color. Resolves through the shared `--smui-*Color*` tokens. */\n color?: FloatingButtonColor;\n}\n\nexport const FloatingButton = React.forwardRef<HTMLButtonElement, FloatingButtonProps>(function FloatingButton(\n {\n children,\n className,\n onMouseDown: onMouseDownProp,\n // The button sets this on its root too; its own handler calls the caller's first.\n onPointerDown: onPointerDownProp,\n variant = \"default\",\n size = \"medium\",\n color = \"primary\",\n type = \"button\",\n ...rest\n },\n ref\n) {\n const rippleRef = React.useRef<RippleActionsRef>(null);\n\n const onMouseDown = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseDownProp?.(event);\n };\n\n // Ripple on pointerdown so it fires for touch and pen, not just mouse.\n const onPointerDown = (event: React.PointerEvent<HTMLButtonElement>) => {\n onPointerDownProp?.(event);\n rippleRef.current?.onRipple(event);\n };\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\"smwb-fab\", `smwb-${variant}`, `smwb-${size}`, `smwb-fab_color-${color}`, className)}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n {...rest}\n >\n {children}\n <Ripple actionRef={rippleRef} />\n </button>\n );\n});\n\nexport default FloatingButton;\n"],"names":["FloatingButton","React","children","className","onMouseDownProp","onPointerDownProp","variant","size","color","type","rest","ref","rippleRef","onMouseDown","event","onPointerDown","_a","jsxs","cn","jsx","Ripple"],"mappings":";;;;;;AAgBO,MAAMA,IAAiBC,EAAM,WAAmD,SACrF;AAAA,EACE,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAaC;AAAA;AAAA,EAEb,eAAeC;AAAA,EACf,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAYX,EAAM,OAAyB,IAAI,GAE/CY,IAAc,CAACC,MAA+C;AAClE,IAAAV,KAAA,QAAAA,EAAkBU;AAAA,EACpB,GAGMC,IAAgB,CAACD,MAAiD;;AACtE,IAAAT,KAAA,QAAAA,EAAoBS,KACpBE,IAAAJ,EAAU,YAAV,QAAAI,EAAmB,SAASF;AAAA,EAC9B;AAEA,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAN;AAAA,MACA,MAAAF;AAAA,MACA,WAAWS,EAAG,YAAY,QAAQZ,CAAO,IAAI,QAAQC,CAAI,IAAI,kBAAkBC,CAAK,IAAIL,CAAS;AAAA,MACjG,aAAAU;AAAA,MACA,eAAAE;AAAA,MACC,GAAGL;AAAA,MAEH,UAAA;AAAA,QAAAR;AAAA,QACD,gBAAAiB,EAACC,GAAA,EAAO,WAAWR,EAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGpC,CAAC;"}
@@ -3,6 +3,13 @@ import type { SelectionControlColor, SelectionControlSize } from "../checkbox/ch
3
3
  export interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "onChange" | "size"> {
4
4
  label?: string;
5
5
  disabled?: boolean;
6
+ /**
7
+ * Keeps the radio as it is: clicks on it or its label, Space and the arrow keys of its group do not check it, and
8
+ * `onChange` is not called. It stays focusable.
9
+ *
10
+ * The input does not tell assistive technology it is read-only: ARIA has no read-only state for a single radio,
11
+ * only for its group. Put `role="radiogroup"`, a name and `aria-readonly="true"` on the element around the radios.
12
+ */
6
13
  readOnly?: boolean;
7
14
  required?: boolean;
8
15
  name?: string;
@@ -14,6 +21,8 @@ export interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElem
14
21
  error?: boolean;
15
22
  /** Unified handler: `(event, value, data)` where `value` is the radio's value (or checked state). */
16
23
  onChange?: (event: React.ChangeEvent<HTMLInputElement>, value: string | number | readonly string[] | boolean | undefined, data: RadioButtonProps) => void;
24
+ /** Test id of the `<input>`; `radio` unless given. */
25
+ "data-testid"?: string;
17
26
  }
18
27
  export declare const RadioButton: React.ForwardRefExoticComponent<RadioButtonProps & React.RefAttributes<HTMLInputElement>>;
19
28
  export default RadioButton;
@@ -1,70 +1,89 @@
1
- import { jsx as e, jsxs as c } from "react/jsx-runtime";
1
+ import { jsx as d, jsxs as h } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/radioButton/radioButton.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import x from "react";
5
- import i from "clsx";
6
- import { useId as g } from "../../../hooks/useId.js";
7
- import { TextFieldWrapper as y } from "../textField/textFieldWrapper.js";
8
- const $ = x.forwardRef(function(r, b) {
4
+ import B from "react";
5
+ import s from "clsx";
6
+ import { useHelperText as C } from "../../../hooks/useHelperText.js";
7
+ import { useId as R } from "../../../hooks/useId.js";
8
+ import { cancelToggle as I, forgetCancelledToggle as j } from "../../../utils/readOnlyToggle.js";
9
+ import { TextFieldWrapper as q } from "../textField/textFieldWrapper.js";
10
+ const G = B.forwardRef(function(e, u) {
9
11
  const {
10
- label: m,
11
- disabled: a,
12
- readOnly: s,
13
- required: t,
14
- name: p,
15
- id: u,
16
- size: w = "medium",
17
- color: f = "primary",
18
- helperText: _,
19
- error: l,
20
- onChange: d,
21
- className: h,
22
- ...N
23
- } = r, n = g(u), v = (o) => {
24
- if (s) {
25
- o.preventDefault();
12
+ label: t,
13
+ disabled: i,
14
+ readOnly: r,
15
+ required: o,
16
+ name: w,
17
+ id: _,
18
+ size: g = "medium",
19
+ color: x = "primary",
20
+ "data-testid": y = "radio",
21
+ helperText: c,
22
+ error: m,
23
+ onChange: l,
24
+ className: N,
25
+ "aria-describedby": k,
26
+ ...p
27
+ } = e, n = R(_), b = C(c, { describedBy: k }), T = (a) => {
28
+ if (r) {
29
+ j(a, e.checked);
26
30
  return;
27
31
  }
28
- d == null || d(o, r.value !== void 0 ? r.value : o.target.checked, r);
32
+ l == null || l(a, e.value !== void 0 ? e.value : a.target.checked, e);
33
+ }, v = (a) => {
34
+ var f;
35
+ (f = e.onClick) == null || f.call(e, a), r && I(a, e.checked);
29
36
  };
30
- return /* @__PURE__ */ e(y, { helperText: _, disabled: a, error: l, className: "smwb-text-field-checkbox", children: /* @__PURE__ */ c(
31
- "label",
37
+ return /* @__PURE__ */ d(
38
+ q,
32
39
  {
33
- htmlFor: n,
34
- className: i("smwb-radio", `smwb-radio_size-${w}`, `smwb-radio_color-${f}`, {
35
- "smwb-disabled": a,
36
- "smwb-readonly": s
37
- }),
38
- children: [
39
- /* @__PURE__ */ c("span", { className: "smwb-radio__wrapper", children: [
40
- /* @__PURE__ */ e(
41
- "input",
42
- {
43
- id: n,
44
- name: p,
45
- disabled: a,
46
- readOnly: s,
47
- required: t,
48
- "aria-invalid": l || void 0,
49
- "aria-required": t || void 0,
50
- className: i("smwb-radio__input", h),
51
- type: "radio",
52
- "data-testid": "radio",
53
- ref: b,
54
- ...N,
55
- onChange: v
56
- }
57
- ),
58
- /* @__PURE__ */ e("span", { className: i("smwb-radio__btn", { "smwb-disabled": a }) }),
59
- /* @__PURE__ */ e("span", { className: i("smwb-radio__bg", { "smwb-disabled": a }) })
60
- ] }),
61
- m && /* @__PURE__ */ e("span", { className: "smwb-radio__label", children: m })
62
- ]
40
+ helperText: c,
41
+ helperTextId: b.id,
42
+ disabled: i,
43
+ error: m,
44
+ className: "smwb-text-field-checkbox",
45
+ children: /* @__PURE__ */ h(
46
+ "label",
47
+ {
48
+ htmlFor: n,
49
+ className: s("smwb-radio", `smwb-radio_size-${g}`, `smwb-radio_color-${x}`, {
50
+ "smwb-disabled": i,
51
+ "smwb-readonly": r
52
+ }),
53
+ children: [
54
+ /* @__PURE__ */ h("span", { className: "smwb-radio__wrapper", children: [
55
+ /* @__PURE__ */ d(
56
+ "input",
57
+ {
58
+ id: n,
59
+ name: w,
60
+ disabled: i,
61
+ readOnly: r,
62
+ required: o,
63
+ "aria-invalid": m || void 0,
64
+ "aria-required": o || void 0,
65
+ "aria-describedby": b.describedBy,
66
+ className: s("smwb-radio__input", N),
67
+ type: "radio",
68
+ "data-testid": y,
69
+ ref: u,
70
+ ...p,
71
+ onChange: T,
72
+ onClick: v
73
+ }
74
+ ),
75
+ /* @__PURE__ */ d("span", { className: s("smwb-radio__btn", { "smwb-disabled": i }) }),
76
+ /* @__PURE__ */ d("span", { className: s("smwb-radio__bg", { "smwb-disabled": i }) })
77
+ ] }),
78
+ t && /* @__PURE__ */ d("span", { className: "smwb-radio__label", children: t })
79
+ ]
80
+ }
81
+ )
63
82
  }
64
- ) });
83
+ );
65
84
  });
66
85
  export {
67
- $ as RadioButton,
68
- $ as default
86
+ G as RadioButton,
87
+ G as default
69
88
  };
70
89
  //# sourceMappingURL=radioButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"radioButton.js","sources":["../../../../src/components/inputs/radioButton/radioButton.tsx"],"sourcesContent":["import React, { InputHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport { TextFieldWrapper } from \"../textField\";\nimport { useId } from \"../../../hooks/useId\";\nimport type { SelectionControlColor, SelectionControlSize } from \"../checkbox/checkbox\";\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n label?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n checked?: boolean;\n size?: SelectionControlSize;\n color?: SelectionControlColor;\n helperText?: React.ReactNode;\n error?: boolean;\n /** Unified handler: `(event, value, data)` where `value` is the radio's value (or checked state). */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement>,\n value: string | number | readonly string[] | boolean | undefined,\n data: RadioButtonProps\n ) => void;\n}\n\nexport const RadioButton = React.forwardRef<HTMLInputElement, RadioButtonProps>(function RadioButton(props, ref) {\n const {\n label,\n disabled,\n readOnly,\n required,\n name,\n id: idProp,\n size = \"medium\",\n color = \"primary\",\n helperText,\n error,\n onChange,\n className,\n ...args\n } = props;\n const id = useId(idProp);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n onChange?.(e, props.value !== undefined ? props.value : e.target.checked, props);\n };\n\n return (\n <TextFieldWrapper helperText={helperText} disabled={disabled} error={error} className=\"smwb-text-field-checkbox\">\n <label\n htmlFor={id}\n className={cn(\"smwb-radio\", `smwb-radio_size-${size}`, `smwb-radio_color-${color}`, {\n \"smwb-disabled\": disabled,\n \"smwb-readonly\": readOnly,\n })}\n >\n <span className=\"smwb-radio__wrapper\">\n <input\n id={id}\n name={name}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n className={cn(\"smwb-radio__input\", className)}\n type=\"radio\"\n data-testid=\"radio\"\n ref={ref}\n {...args}\n onChange={handleChange}\n />\n <span className={cn(\"smwb-radio__btn\", { \"smwb-disabled\": disabled })} />\n <span className={cn(\"smwb-radio__bg\", { \"smwb-disabled\": disabled })} />\n </span>\n {label && <span className=\"smwb-radio__label\">{label}</span>}\n </label>\n </TextFieldWrapper>\n );\n});\n\nexport default RadioButton;\n"],"names":["RadioButton","React","props","ref","label","disabled","readOnly","required","name","idProp","size","color","helperText","error","onChange","className","args","id","useId","handleChange","e","TextFieldWrapper","jsxs","cn","jsx"],"mappings":";;;;;;;AA4BO,MAAMA,IAAcC,EAAM,WAA+C,SAAqBC,GAAOC,GAAK;AAC/G,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,IAAIC;AAAA,IACJ,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDd,GACEe,IAAKC,EAAMT,CAAM,GAEjBU,IAAe,CAACC,MAA2C;AAC/D,QAAId,GAAU;AACZ,MAAAc,EAAE,eAAA;AACF;AAAA,IACF;AACA,IAAAN,KAAA,QAAAA,EAAWM,GAAGlB,EAAM,UAAU,SAAYA,EAAM,QAAQkB,EAAE,OAAO,SAASlB;AAAA,EAC5E;AAEA,2BACGmB,GAAA,EAAiB,YAAAT,GAAwB,UAAAP,GAAoB,OAAAQ,GAAc,WAAU,4BACpF,UAAA,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAASL;AAAA,MACT,WAAWM,EAAG,cAAc,mBAAmBb,CAAI,IAAI,oBAAoBC,CAAK,IAAI;AAAA,QAClF,iBAAiBN;AAAA,QACjB,iBAAiBC;AAAA,MAAA,CAClB;AAAA,MAED,UAAA;AAAA,QAAA,gBAAAgB,EAAC,QAAA,EAAK,WAAU,uBACd,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAAP;AAAA,cACA,MAAAT;AAAA,cACA,UAAAH;AAAA,cACA,UAAAC;AAAA,cACA,UAAAC;AAAA,cACA,gBAAcM,KAAS;AAAA,cACvB,iBAAeN,KAAY;AAAA,cAC3B,WAAWgB,EAAG,qBAAqBR,CAAS;AAAA,cAC5C,MAAK;AAAA,cACL,eAAY;AAAA,cACZ,KAAAZ;AAAA,cACC,GAAGa;AAAA,cACJ,UAAUG;AAAA,YAAA;AAAA,UAAA;AAAA,UAEZ,gBAAAK,EAAC,UAAK,WAAWD,EAAG,mBAAmB,EAAE,iBAAiBlB,EAAA,CAAU,GAAG;AAAA,UACvE,gBAAAmB,EAAC,UAAK,WAAWD,EAAG,kBAAkB,EAAE,iBAAiBlB,EAAA,CAAU,EAAA,CAAG;AAAA,QAAA,GACxE;AAAA,QACCD,KAAS,gBAAAoB,EAAC,QAAA,EAAK,WAAU,qBAAqB,UAAApB,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEzD;AAEJ,CAAC;"}
1
+ {"version":3,"file":"radioButton.js","sources":["../../../../src/components/inputs/radioButton/radioButton.tsx"],"sourcesContent":["import React, { InputHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport { TextFieldWrapper } from \"../textField\";\nimport { useHelperText } from \"../../../hooks/useHelperText\";\nimport { useId } from \"../../../hooks/useId\";\nimport { cancelToggle, forgetCancelledToggle } from \"../../../utils/readOnlyToggle\";\nimport type { SelectionControlColor, SelectionControlSize } from \"../checkbox/checkbox\";\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n label?: string;\n disabled?: boolean;\n /**\n * Keeps the radio as it is: clicks on it or its label, Space and the arrow keys of its group do not check it, and\n * `onChange` is not called. It stays focusable.\n *\n * The input does not tell assistive technology it is read-only: ARIA has no read-only state for a single radio,\n * only for its group. Put `role=\"radiogroup\"`, a name and `aria-readonly=\"true\"` on the element around the radios.\n */\n readOnly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n checked?: boolean;\n size?: SelectionControlSize;\n color?: SelectionControlColor;\n helperText?: React.ReactNode;\n error?: boolean;\n /** Unified handler: `(event, value, data)` where `value` is the radio's value (or checked state). */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement>,\n value: string | number | readonly string[] | boolean | undefined,\n data: RadioButtonProps\n ) => void;\n /** Test id of the `<input>`; `radio` unless given. */\n \"data-testid\"?: string;\n}\n\nexport const RadioButton = React.forwardRef<HTMLInputElement, RadioButtonProps>(function RadioButton(props, ref) {\n const {\n label,\n disabled,\n readOnly,\n required,\n name,\n id: idProp,\n size = \"medium\",\n color = \"primary\",\n \"data-testid\": dataTestId = \"radio\",\n helperText,\n error,\n onChange,\n className,\n \"aria-describedby\": ariaDescribedBy,\n ...args\n } = props;\n const id = useId(idProp);\n const helper = useHelperText(helperText, { describedBy: ariaDescribedBy });\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n forgetCancelledToggle(e, props.checked);\n return;\n }\n onChange?.(e, props.value !== undefined ? props.value : e.target.checked, props);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n props.onClick?.(e);\n if (readOnly) cancelToggle(e, props.checked);\n };\n\n return (\n <TextFieldWrapper\n helperText={helperText}\n helperTextId={helper.id}\n disabled={disabled}\n error={error}\n className=\"smwb-text-field-checkbox\"\n >\n <label\n htmlFor={id}\n className={cn(\"smwb-radio\", `smwb-radio_size-${size}`, `smwb-radio_color-${color}`, {\n \"smwb-disabled\": disabled,\n \"smwb-readonly\": readOnly,\n })}\n >\n <span className=\"smwb-radio__wrapper\">\n <input\n id={id}\n name={name}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n aria-describedby={helper.describedBy}\n className={cn(\"smwb-radio__input\", className)}\n type=\"radio\"\n data-testid={dataTestId}\n ref={ref}\n {...args}\n onChange={handleChange}\n onClick={handleClick}\n />\n <span className={cn(\"smwb-radio__btn\", { \"smwb-disabled\": disabled })} />\n <span className={cn(\"smwb-radio__bg\", { \"smwb-disabled\": disabled })} />\n </span>\n {label && <span className=\"smwb-radio__label\">{label}</span>}\n </label>\n </TextFieldWrapper>\n );\n});\n\nexport default RadioButton;\n"],"names":["RadioButton","React","props","ref","label","disabled","readOnly","required","name","idProp","size","color","dataTestId","helperText","error","onChange","className","ariaDescribedBy","args","id","useId","helper","useHelperText","handleChange","e","forgetCancelledToggle","handleClick","_a","cancelToggle","jsx","TextFieldWrapper","jsxs","cn"],"mappings":";;;;;;;;;AAuCO,MAAMA,IAAcC,EAAM,WAA+C,SAAqBC,GAAOC,GAAK;AAC/G,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,IAAIC;AAAA,IACJ,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,eAAeC,IAAa;AAAA,IAC5B,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,oBAAoBC;AAAA,IACpB,GAAGC;AAAA,EAAA,IACDhB,GACEiB,IAAKC,EAAMX,CAAM,GACjBY,IAASC,EAAcT,GAAY,EAAE,aAAaI,GAAiB,GAEnEM,IAAe,CAACC,MAA2C;AAC/D,QAAIlB,GAAU;AACZ,MAAAmB,EAAsBD,GAAGtB,EAAM,OAAO;AACtC;AAAA,IACF;AACA,IAAAa,KAAA,QAAAA,EAAWS,GAAGtB,EAAM,UAAU,SAAYA,EAAM,QAAQsB,EAAE,OAAO,SAAStB;AAAA,EAC5E,GAEMwB,IAAc,CAACF,MAA0C;;AAC7D,KAAAG,IAAAzB,EAAM,YAAN,QAAAyB,EAAA,KAAAzB,GAAgBsB,IACZlB,KAAUsB,EAAaJ,GAAGtB,EAAM,OAAO;AAAA,EAC7C;AAEA,SACE,gBAAA2B;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,YAAAjB;AAAA,MACA,cAAcQ,EAAO;AAAA,MACrB,UAAAhB;AAAA,MACA,OAAAS;AAAA,MACA,WAAU;AAAA,MAEV,UAAA,gBAAAiB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASZ;AAAA,UACT,WAAWa,EAAG,cAAc,mBAAmBtB,CAAI,IAAI,oBAAoBC,CAAK,IAAI;AAAA,YAClF,iBAAiBN;AAAA,YACjB,iBAAiBC;AAAA,UAAA,CAClB;AAAA,UAED,UAAA;AAAA,YAAA,gBAAAyB,EAAC,QAAA,EAAK,WAAU,uBACd,UAAA;AAAA,cAAA,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,IAAAV;AAAA,kBACA,MAAAX;AAAA,kBACA,UAAAH;AAAA,kBACA,UAAAC;AAAA,kBACA,UAAAC;AAAA,kBACA,gBAAcO,KAAS;AAAA,kBACvB,iBAAeP,KAAY;AAAA,kBAC3B,oBAAkBc,EAAO;AAAA,kBACzB,WAAWW,EAAG,qBAAqBhB,CAAS;AAAA,kBAC5C,MAAK;AAAA,kBACL,eAAaJ;AAAA,kBACb,KAAAT;AAAA,kBACC,GAAGe;AAAA,kBACJ,UAAUK;AAAA,kBACV,SAASG;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEX,gBAAAG,EAAC,UAAK,WAAWG,EAAG,mBAAmB,EAAE,iBAAiB3B,EAAA,CAAU,GAAG;AAAA,cACvE,gBAAAwB,EAAC,UAAK,WAAWG,EAAG,kBAAkB,EAAE,iBAAiB3B,EAAA,CAAU,EAAA,CAAG;AAAA,YAAA,GACxE;AAAA,YACCD,KAAS,gBAAAyB,EAAC,QAAA,EAAK,WAAU,qBAAqB,UAAAzB,EAAA,CAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACvD;AAAA,EAAA;AAGN,CAAC;"}
@@ -24,7 +24,15 @@ export interface RatingProps {
24
24
  error?: boolean;
25
25
  /** Supporting text shown below the control. */
26
26
  helperText?: ReactNode;
27
+ /** Id of the control: the slider, or the image of a read-only rating. */
27
28
  id?: string;
29
+ /**
30
+ * What is rated: the accessible name of the slider, "Rating" by default. A read-only rating is an image named by
31
+ * its value ("3 of 5"), after this label.
32
+ */
33
+ "aria-label"?: string;
34
+ /** Ids of more elements that describe the control, after its helper text. */
35
+ "aria-describedby"?: string;
28
36
  onChange?: (value: number) => void;
29
37
  }
30
38
  export declare const Rating: import("react").ForwardRefExoticComponent<RatingProps & import("react").RefAttributes<HTMLSpanElement>>;
@@ -1,86 +1,101 @@
1
- import { jsxs as N, jsx as a } from "react/jsx-runtime";
1
+ import { jsxs as H, jsx as s } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/rating/rating.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import { forwardRef as I, useState as v } from "react";
5
- import $ from "clsx";
6
- import { Icon as H } from "../../base/icon/icon.js";
7
- const Z = I(function({
8
- className: L,
9
- value: d,
10
- defaultValue: j = 0,
11
- max: o = 5,
12
- precision: c = 1,
13
- readOnly: g = !1,
14
- disabled: y = !1,
15
- size: m = 28,
16
- icon: u,
17
- emptyIcon: w,
18
- name: h,
19
- color: k = "primary",
20
- error: D,
21
- helperText: _,
22
- id: E,
23
- onChange: s
24
- }, K) {
25
- const M = d !== void 0, [S, R] = v(j), [p, b] = v(null), n = d !== void 0 ? d : S, B = p != null ? p : n, l = !g && !y, A = (t, r) => {
26
- if (c === 1)
4
+ import { forwardRef as Q, useState as B } from "react";
5
+ import j from "clsx";
6
+ import { Icon as E } from "../../base/icon/icon.js";
7
+ import { useHelperText as V, hasHelperText as W } from "../../../hooks/useHelperText.js";
8
+ const at = Q(function({
9
+ className: K,
10
+ value: u,
11
+ defaultValue: S = 0,
12
+ max: n = 5,
13
+ precision: m = 1,
14
+ readOnly: i = !1,
15
+ disabled: w = !1,
16
+ size: d = 28,
17
+ icon: _,
18
+ emptyIcon: p,
19
+ name: k,
20
+ color: D = "primary",
21
+ error: M,
22
+ helperText: b,
23
+ id: T,
24
+ "aria-label": g,
25
+ "aria-describedby": x,
26
+ onChange: e
27
+ }, F) {
28
+ const R = u !== void 0, [L, N] = B(S), [v, h] = B(null), l = u !== void 0 ? u : L, U = v != null ? v : l, a = !i && !w, $ = (t, r) => {
29
+ if (m === 1)
27
30
  return r + 1;
28
- const { left: i, width: e } = t.currentTarget.getBoundingClientRect(), G = t.clientX - i < e / 2;
29
- return r + (G ? 0.5 : 1);
30
- }, F = (t, r) => {
31
- if (!l)
31
+ const { left: o, width: c } = t.currentTarget.getBoundingClientRect(), P = t.clientX - o < c / 2;
32
+ return r + (P ? 0.5 : 1);
33
+ }, X = (t, r) => {
34
+ if (!a)
32
35
  return;
33
- const i = A(t, r);
34
- M || R(i), s == null || s(i);
35
- }, U = u != null ? u : /* @__PURE__ */ a(H, { name: "star", fill: 1, size: m }), X = w != null ? w : /* @__PURE__ */ a(H, { name: "star", size: m }), f = (t) => {
36
- const r = Math.max(0, Math.min(o, t));
37
- M || R(r), s == null || s(r);
38
- }, q = (t) => {
39
- l && (t.key === "ArrowRight" || t.key === "ArrowUp" ? (t.preventDefault(), f(n + c)) : t.key === "ArrowLeft" || t.key === "ArrowDown" ? (t.preventDefault(), f(n - c)) : t.key === "Home" ? (t.preventDefault(), f(0)) : t.key === "End" && (t.preventDefault(), f(o)));
40
- };
41
- return /* @__PURE__ */ N(
36
+ const o = $(t, r);
37
+ R || N(o), e == null || e(o);
38
+ }, q = _ != null ? _ : /* @__PURE__ */ s(E, { name: "star", fill: 1, size: d }), G = p != null ? p : /* @__PURE__ */ s(E, { name: "star", size: d }), f = (t) => {
39
+ const r = Math.max(0, Math.min(n, t));
40
+ R || N(r), e == null || e(r);
41
+ }, I = (t) => {
42
+ a && (t.key === "ArrowRight" || t.key === "ArrowUp" ? (t.preventDefault(), f(l + m)) : t.key === "ArrowLeft" || t.key === "ArrowDown" ? (t.preventDefault(), f(l - m)) : t.key === "Home" ? (t.preventDefault(), f(0)) : t.key === "End" && (t.preventDefault(), f(n)));
43
+ }, A = V(b, { describedBy: x }), y = `${l} of ${n}`, J = i ? g ? `${g} ${y}` : y : g || "Rating";
44
+ return /* @__PURE__ */ H(
42
45
  "span",
43
46
  {
44
- ref: K,
45
- id: E,
46
- className: $(
47
+ className: j(
47
48
  "smwb-rating",
48
- { "smwb-rating_readonly": g, "smwb-rating_disabled": y, "smwb-rating_error": D },
49
- k !== "primary" && `smwb-rating_color-${k}`,
50
- L
49
+ { "smwb-rating_readonly": i, "smwb-rating_disabled": w, "smwb-rating_error": M },
50
+ D !== "primary" && `smwb-rating_color-${D}`,
51
+ K
51
52
  ),
52
- "data-testid": "rating",
53
- role: "img",
54
- "aria-label": `${n} of ${o}`,
55
- tabIndex: l ? 0 : void 0,
56
- onKeyDown: l ? q : void 0,
57
53
  children: [
58
- Array.from({ length: o }, (t, r) => {
59
- const i = Math.max(0, Math.min(1, B - r));
60
- return /* @__PURE__ */ N(
61
- "span",
62
- {
63
- className: "smwb-rating__item",
64
- style: { width: m, height: m, cursor: l ? "pointer" : "default" },
65
- onClick: (e) => F(e, r),
66
- onMouseMove: l && c === 0.5 ? (e) => b(A(e, r)) : l ? () => b(r + 1) : void 0,
67
- onMouseLeave: l ? () => b(null) : void 0,
68
- children: [
69
- /* @__PURE__ */ a("span", { className: "smwb-rating__icon smwb-rating__icon_empty", children: X }),
70
- /* @__PURE__ */ a("span", { className: "smwb-rating__icon smwb-rating__icon_filled", style: { width: `${i * 100}%` }, children: U })
71
- ]
72
- },
73
- r
74
- );
75
- }),
76
- h ? /* @__PURE__ */ a("input", { type: "hidden", name: h, value: n, readOnly: !0 }) : null,
77
- _ != null && _ !== !1 ? /* @__PURE__ */ a("span", { className: $("smwb-rating__helper", D && "smwb-rating__helper_error"), children: _ }) : null
54
+ /* @__PURE__ */ s(
55
+ "span",
56
+ {
57
+ ref: F,
58
+ id: T,
59
+ className: "smwb-rating__control",
60
+ "data-testid": "rating",
61
+ role: i ? "img" : "slider",
62
+ "aria-label": J,
63
+ "aria-valuemin": i ? void 0 : 0,
64
+ "aria-valuemax": i ? void 0 : n,
65
+ "aria-valuenow": i ? void 0 : l,
66
+ "aria-valuetext": i ? void 0 : y,
67
+ "aria-disabled": !i && w ? !0 : void 0,
68
+ "aria-describedby": A.describedBy,
69
+ tabIndex: a ? 0 : void 0,
70
+ onKeyDown: a ? I : void 0,
71
+ children: Array.from({ length: n }, (t, r) => {
72
+ const o = Math.max(0, Math.min(1, U - r));
73
+ return /* @__PURE__ */ H(
74
+ "span",
75
+ {
76
+ className: "smwb-rating__item",
77
+ style: { width: d, height: d, cursor: a ? "pointer" : "default" },
78
+ onClick: (c) => X(c, r),
79
+ onMouseMove: a && m === 0.5 ? (c) => h($(c, r)) : a ? () => h(r + 1) : void 0,
80
+ onMouseLeave: () => h(null),
81
+ children: [
82
+ /* @__PURE__ */ s("span", { className: "smwb-rating__icon smwb-rating__icon_empty", children: G }),
83
+ /* @__PURE__ */ s("span", { className: "smwb-rating__icon smwb-rating__icon_filled", style: { width: `${o * 100}%` }, children: q })
84
+ ]
85
+ },
86
+ r
87
+ );
88
+ })
89
+ }
90
+ ),
91
+ k ? /* @__PURE__ */ s("input", { type: "hidden", name: k, value: l, readOnly: !0 }) : null,
92
+ W(b) ? /* @__PURE__ */ s("span", { id: A.id, className: j("smwb-rating__helper", M && "smwb-rating__helper_error"), children: b }) : null
78
93
  ]
79
94
  }
80
95
  );
81
96
  });
82
97
  export {
83
- Z as Rating,
84
- Z as default
98
+ at as Rating,
99
+ at as default
85
100
  };
86
101
  //# sourceMappingURL=rating.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rating.js","sources":["../../../../src/components/inputs/rating/rating.tsx"],"sourcesContent":["import { forwardRef, KeyboardEvent, MouseEvent, ReactNode, useState } from \"react\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\n\nexport type RatingColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface RatingProps {\n className?: string;\n /** Controlled value. */\n value?: number;\n /** Uncontrolled initial value. */\n defaultValue?: number;\n /** Number of icons. */\n max?: number;\n /** Smallest selectable increment: 1 (whole) or 0.5 (half). */\n precision?: 1 | 0.5;\n readOnly?: boolean;\n disabled?: boolean;\n size?: number;\n /** Filled icon (Material Symbols name). */\n icon?: ReactNode;\n /** Empty icon (Material Symbols name). */\n emptyIcon?: ReactNode;\n name?: string;\n /** Color of the filled icons. */\n color?: RatingColor;\n /** Renders the control in an error state. */\n error?: boolean;\n /** Supporting text shown below the control. */\n helperText?: ReactNode;\n id?: string;\n onChange?: (value: number) => void;\n}\n\nexport const Rating = forwardRef<HTMLSpanElement, RatingProps>(function Rating(\n {\n className,\n value,\n defaultValue = 0,\n max = 5,\n precision = 1,\n readOnly = false,\n disabled = false,\n size = 28,\n icon,\n emptyIcon,\n name,\n color = \"primary\",\n error,\n helperText,\n id,\n onChange,\n },\n ref\n) {\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState(defaultValue);\n const [hover, setHover] = useState<number | null>(null);\n\n const current = value !== undefined ? value : internal;\n const display = hover ?? current;\n\n const interactive = !readOnly && !disabled;\n\n const valueFromEvent = (event: MouseEvent<HTMLSpanElement>, starIndex: number): number => {\n if (precision === 1) {\n return starIndex + 1;\n }\n const { left, width } = event.currentTarget.getBoundingClientRect();\n const isLeftHalf = event.clientX - left < width / 2;\n return starIndex + (isLeftHalf ? 0.5 : 1);\n };\n\n const handleSelect = (event: MouseEvent<HTMLSpanElement>, starIndex: number) => {\n if (!interactive) {\n return;\n }\n const next = valueFromEvent(event, starIndex);\n if (!isControlled) {\n setInternal(next);\n }\n onChange?.(next);\n };\n\n const filledIcon = icon ?? <Icon name=\"star\" fill={1} size={size} />;\n const blankIcon = emptyIcon ?? <Icon name=\"star\" size={size} />;\n\n const commit = (next: number) => {\n const clamped = Math.max(0, Math.min(max, next));\n if (!isControlled) {\n setInternal(clamped);\n }\n onChange?.(clamped);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLSpanElement>) => {\n if (!interactive) {\n return;\n }\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n commit(current + precision);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n commit(current - precision);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n commit(0);\n } else if (event.key === \"End\") {\n event.preventDefault();\n commit(max);\n }\n };\n\n return (\n <span\n ref={ref}\n id={id}\n className={cn(\n \"smwb-rating\",\n { \"smwb-rating_readonly\": readOnly, \"smwb-rating_disabled\": disabled, \"smwb-rating_error\": error },\n color !== \"primary\" && `smwb-rating_color-${color}`,\n className\n )}\n data-testid=\"rating\"\n role=\"img\"\n aria-label={`${current} of ${max}`}\n tabIndex={interactive ? 0 : undefined}\n onKeyDown={interactive ? handleKeyDown : undefined}\n >\n {Array.from({ length: max }, (_, index) => {\n const fillRatio = Math.max(0, Math.min(1, display - index));\n return (\n <span\n key={index}\n className=\"smwb-rating__item\"\n style={{ width: size, height: size, cursor: interactive ? \"pointer\" : \"default\" }}\n onClick={(event) => handleSelect(event, index)}\n onMouseMove={\n interactive && precision === 0.5\n ? (event) => setHover(valueFromEvent(event, index))\n : interactive\n ? () => setHover(index + 1)\n : undefined\n }\n onMouseLeave={interactive ? () => setHover(null) : undefined}\n >\n <span className=\"smwb-rating__icon smwb-rating__icon_empty\">{blankIcon}</span>\n <span className=\"smwb-rating__icon smwb-rating__icon_filled\" style={{ width: `${fillRatio * 100}%` }}>\n {filledIcon}\n </span>\n </span>\n );\n })}\n {name ? <input type=\"hidden\" name={name} value={current} readOnly /> : null}\n {helperText != null && helperText !== false ? (\n <span className={cn(\"smwb-rating__helper\", error && \"smwb-rating__helper_error\")}>{helperText}</span>\n ) : null}\n </span>\n );\n});\n\nexport default Rating;\n"],"names":["Rating","forwardRef","className","value","defaultValue","max","precision","readOnly","disabled","size","icon","emptyIcon","name","color","error","helperText","id","onChange","ref","isControlled","internal","setInternal","useState","hover","setHover","current","display","interactive","valueFromEvent","event","starIndex","left","width","isLeftHalf","handleSelect","next","filledIcon","jsx","Icon","blankIcon","commit","clamped","handleKeyDown","jsxs","cn","_","index","fillRatio"],"mappings":"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"}
1
+ {"version":3,"file":"rating.js","sources":["../../../../src/components/inputs/rating/rating.tsx"],"sourcesContent":["import { forwardRef, KeyboardEvent, MouseEvent, ReactNode, useState } from \"react\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\nimport { hasHelperText, useHelperText } from \"../../../hooks/useHelperText\";\n\nexport type RatingColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface RatingProps {\n className?: string;\n /** Controlled value. */\n value?: number;\n /** Uncontrolled initial value. */\n defaultValue?: number;\n /** Number of icons. */\n max?: number;\n /** Smallest selectable increment: 1 (whole) or 0.5 (half). */\n precision?: 1 | 0.5;\n readOnly?: boolean;\n disabled?: boolean;\n size?: number;\n /** Filled icon (Material Symbols name). */\n icon?: ReactNode;\n /** Empty icon (Material Symbols name). */\n emptyIcon?: ReactNode;\n name?: string;\n /** Color of the filled icons. */\n color?: RatingColor;\n /** Renders the control in an error state. */\n error?: boolean;\n /** Supporting text shown below the control. */\n helperText?: ReactNode;\n /** Id of the control: the slider, or the image of a read-only rating. */\n id?: string;\n /**\n * What is rated: the accessible name of the slider, \"Rating\" by default. A read-only rating is an image named by\n * its value (\"3 of 5\"), after this label.\n */\n \"aria-label\"?: string;\n /** Ids of more elements that describe the control, after its helper text. */\n \"aria-describedby\"?: string;\n onChange?: (value: number) => void;\n}\n\nexport const Rating = forwardRef<HTMLSpanElement, RatingProps>(function Rating(\n {\n className,\n value,\n defaultValue = 0,\n max = 5,\n precision = 1,\n readOnly = false,\n disabled = false,\n size = 28,\n icon,\n emptyIcon,\n name,\n color = \"primary\",\n error,\n helperText,\n id,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedBy,\n onChange,\n },\n ref\n) {\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState(defaultValue);\n const [hover, setHover] = useState<number | null>(null);\n\n const current = value !== undefined ? value : internal;\n const display = hover ?? current;\n\n const interactive = !readOnly && !disabled;\n\n const valueFromEvent = (event: MouseEvent<HTMLSpanElement>, starIndex: number): number => {\n if (precision === 1) {\n return starIndex + 1;\n }\n const { left, width } = event.currentTarget.getBoundingClientRect();\n const isLeftHalf = event.clientX - left < width / 2;\n return starIndex + (isLeftHalf ? 0.5 : 1);\n };\n\n const handleSelect = (event: MouseEvent<HTMLSpanElement>, starIndex: number) => {\n if (!interactive) {\n return;\n }\n const next = valueFromEvent(event, starIndex);\n if (!isControlled) {\n setInternal(next);\n }\n onChange?.(next);\n };\n\n const filledIcon = icon ?? <Icon name=\"star\" fill={1} size={size} />;\n const blankIcon = emptyIcon ?? <Icon name=\"star\" size={size} />;\n\n const commit = (next: number) => {\n const clamped = Math.max(0, Math.min(max, next));\n if (!isControlled) {\n setInternal(clamped);\n }\n onChange?.(clamped);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLSpanElement>) => {\n if (!interactive) {\n return;\n }\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n commit(current + precision);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n commit(current - precision);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n commit(0);\n } else if (event.key === \"End\") {\n event.preventDefault();\n commit(max);\n }\n };\n\n const helper = useHelperText(helperText, { describedBy: ariaDescribedBy });\n const valueText = `${current} of ${max}`;\n // The slider is named by what is rated. An image has no value, so its name\n // carries the value too.\n const label = readOnly ? (ariaLabel ? `${ariaLabel} ${valueText}` : valueText) : ariaLabel || \"Rating\";\n\n // The control is a slider, or an image named by its value when the rating is\n // read-only. The helper text stays outside it: the children of a slider or an\n // image are presentational, so assistive technology would never read it.\n return (\n <span\n className={cn(\n \"smwb-rating\",\n { \"smwb-rating_readonly\": readOnly, \"smwb-rating_disabled\": disabled, \"smwb-rating_error\": error },\n color !== \"primary\" && `smwb-rating_color-${color}`,\n className\n )}\n >\n <span\n ref={ref}\n id={id}\n className=\"smwb-rating__control\"\n data-testid=\"rating\"\n role={readOnly ? \"img\" : \"slider\"}\n aria-label={label}\n aria-valuemin={readOnly ? undefined : 0}\n aria-valuemax={readOnly ? undefined : max}\n aria-valuenow={readOnly ? undefined : current}\n aria-valuetext={readOnly ? undefined : valueText}\n aria-disabled={!readOnly && disabled ? true : undefined}\n aria-describedby={helper.describedBy}\n tabIndex={interactive ? 0 : undefined}\n onKeyDown={interactive ? handleKeyDown : undefined}\n >\n {Array.from({ length: max }, (_, index) => {\n const fillRatio = Math.max(0, Math.min(1, display - index));\n return (\n <span\n key={index}\n className=\"smwb-rating__item\"\n style={{ width: size, height: size, cursor: interactive ? \"pointer\" : \"default\" }}\n onClick={(event) => handleSelect(event, index)}\n onMouseMove={\n interactive && precision === 0.5\n ? (event) => setHover(valueFromEvent(event, index))\n : interactive\n ? () => setHover(index + 1)\n : undefined\n }\n // Always clears the preview, so a rating that turns read-only while\n // hovered does not keep it.\n onMouseLeave={() => setHover(null)}\n >\n <span className=\"smwb-rating__icon smwb-rating__icon_empty\">{blankIcon}</span>\n <span className=\"smwb-rating__icon smwb-rating__icon_filled\" style={{ width: `${fillRatio * 100}%` }}>\n {filledIcon}\n </span>\n </span>\n );\n })}\n </span>\n {name ? <input type=\"hidden\" name={name} value={current} readOnly /> : null}\n {hasHelperText(helperText) ? (\n <span id={helper.id} className={cn(\"smwb-rating__helper\", error && \"smwb-rating__helper_error\")}>\n {helperText}\n </span>\n ) : null}\n </span>\n );\n});\n\nexport default Rating;\n"],"names":["Rating","forwardRef","className","value","defaultValue","max","precision","readOnly","disabled","size","icon","emptyIcon","name","color","error","helperText","id","ariaLabel","ariaDescribedBy","onChange","ref","isControlled","internal","setInternal","useState","hover","setHover","current","display","interactive","valueFromEvent","event","starIndex","left","width","isLeftHalf","handleSelect","next","filledIcon","jsx","Icon","blankIcon","commit","clamped","handleKeyDown","helper","useHelperText","valueText","label","jsxs","cn","_","index","fillRatio","hasHelperText"],"mappings":"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"}
@@ -36,5 +36,24 @@ export interface DropdownItemProps<T extends HTMLElement = HTMLElement> {
36
36
  virtualized?: boolean;
37
37
  /** Row height (px) used when `virtualized`. */
38
38
  itemHeight?: number;
39
+ /** Id of the listbox; the options' ids follow from it (`dropdownOptionId`). */
40
+ listboxId?: string;
41
+ /** Ids of the elements that name the listbox and the search box in the menu. */
42
+ labelledBy?: string;
43
+ /** Names the listbox and the search box in the menu when no element does. */
44
+ label?: string;
45
+ /** Several options can be selected (`aria-multiselectable`). */
46
+ multiple?: boolean;
47
+ /** Index of the active option, counting `items` and then the create option; -1 for none. */
48
+ activeIndex?: number;
49
+ /** Marks the active option and keeps it in view: the keyboard moved to it. */
50
+ showActive?: boolean;
51
+ /** Attributes and handlers of the search box in the menu, which the field makes a combobox. */
52
+ searchInputProps?: React.InputHTMLAttributes<HTMLInputElement>;
53
+ searchInputRef?: React.Ref<HTMLInputElement>;
54
+ /** The menu's root element. */
55
+ menuRef?: React.Ref<HTMLDivElement>;
39
56
  }
40
- export declare function DropdownMenu<T extends HTMLElement>({ menuMaxHeight, menuMiddleware, search, onSearchInputChange, items, searchValue, isOpen, onClose, anchorElementRef, value, onItemClick, isLoading, optionRenderer, menuNoItemsMessage, container, createOption, virtualized, itemHeight, }: DropdownItemProps<T>): React.ReactPortal | null;
57
+ /** Id of the option at `index` in the listbox `listboxId`. */
58
+ export declare function dropdownOptionId(listboxId: string, index: number): string;
59
+ export declare function DropdownMenu<T extends HTMLElement>({ menuMaxHeight, menuMiddleware, search, onSearchInputChange, items, searchValue, isOpen, onClose, anchorElementRef, value, onItemClick, isLoading, optionRenderer, menuNoItemsMessage, container, createOption, virtualized, itemHeight, listboxId, labelledBy, label, multiple, activeIndex, showActive, searchInputProps, searchInputRef, menuRef, }: DropdownItemProps<T>): React.ReactPortal | null;