@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 +1 @@
1
- {"version":3,"file":"textFieldWrapper.js","sources":["../../../../../src/components/inputs/textField/textFieldWrapper.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { TextFieldAdornment } from \"./textFieldAdornment\";\n\nexport interface TextFieldWrapperProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n helperText?: React.ReactNode;\n variant?: \"outlined\" | \"filled\";\n disabled?: boolean;\n className?: string;\n error?: boolean;\n fullWidth?: boolean;\n isFilledState?: boolean;\n isFocused?: boolean;\n children: React.ReactNode;\n htmlFor?: string;\n shrink?: boolean;\n onHolderMouseDown?: React.MouseEventHandler<HTMLDivElement>;\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n inline?: boolean;\n}\n\nexport function TextFieldWrapper({\n label,\n helperText = <>&nbsp;</>,\n variant,\n disabled,\n className,\n error,\n fullWidth,\n isFilledState,\n isFocused,\n htmlFor,\n shrink,\n children,\n onHolderMouseDown,\n startAdornment,\n endAdornment,\n inline,\n ...rest\n}: TextFieldWrapperProps) {\n const isFilledVariant = variant === \"filled\";\n const isNotchedActive = label && (isFilledState || isFocused || shrink);\n\n const classes = cn(className, \"smwb-text-field\", {\n \"smwb-text-field--filled\": !inline && isFilledVariant,\n \"smwb-text-field--inline\": inline,\n \"smwb-text-field--focused\": !inline && isFocused,\n \"smwb-text-field--error\": error,\n \"smwb-text-field--disabled\": disabled,\n \"smwb-text-field--full-width\": fullWidth,\n });\n const labelClasses = cn(\"smwb-text-field__label\", {\n \"smwb-text-field__label--shrink\": isNotchedActive,\n });\n const notchedClasses = cn(\"smwb-text-field__notched\", {\n \"smwb-text-field__notched--with-label\": label,\n \"smwb-text-field__notched--active\": isNotchedActive,\n });\n\n return (\n <div className={classes} {...rest} data-testid=\"text-field\">\n {!inline && label && (\n <label className={labelClasses} htmlFor={htmlFor || \"\"}>\n {label}\n </label>\n )}\n <div className=\"smwb-text-field__input-holder\" onMouseDown={onHolderMouseDown}>\n {startAdornment && (\n <TextFieldAdornment variant={variant} inline={Boolean(inline)} position=\"start\">\n {startAdornment}\n </TextFieldAdornment>\n )}\n {children}\n {endAdornment && <TextFieldAdornment position=\"end\">{endAdornment}</TextFieldAdornment>}\n {!inline && variant === \"outlined\" && (\n <fieldset className={notchedClasses}>\n <legend>{label ? <span>{label}</span> : <span className=\"smwb-notranslate\">&#8203;</span>}</legend>\n </fieldset>\n )}\n </div>\n {!inline && helperText && (\n <p className=\"smwb-text-field__helper-line\">\n <span className=\"smwb-text-field__helper-text\">{helperText}</span>\n </p>\n )}\n </div>\n );\n}\n"],"names":["TextFieldWrapper","label","helperText","variant","disabled","className","error","fullWidth","isFilledState","isFocused","htmlFor","shrink","children","onHolderMouseDown","startAdornment","endAdornment","inline","rest","isFilledVariant","isNotchedActive","classes","cn","labelClasses","notchedClasses","jsx","jsxs","TextFieldAdornment"],"mappings":";;;AAuBO,SAASA,EAAiB;AAAA,EAC/B,OAAAC;AAAA,EACA,YAAAC,2BAAe,UAAA,IAAA,CAAM;AAAA,EACrB,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,GAAGC;AACL,GAA0B;AACxB,QAAMC,IAAkBf,MAAY,UAC9BgB,IAAkBlB,MAAUO,KAAiBC,KAAaE,IAE1DS,IAAUC,EAAGhB,GAAW,mBAAmB;AAAA,IAC/C,2BAA2B,CAACW,KAAUE;AAAA,IACtC,2BAA2BF;AAAA,IAC3B,4BAA4B,CAACA,KAAUP;AAAA,IACvC,0BAA0BH;AAAA,IAC1B,6BAA6BF;AAAA,IAC7B,+BAA+BG;AAAA,EAAA,CAChC,GACKe,IAAeD,EAAG,0BAA0B;AAAA,IAChD,kCAAkCF;AAAA,EAAA,CACnC,GACKI,IAAiBF,EAAG,4BAA4B;AAAA,IACpD,wCAAwCpB;AAAA,IACxC,oCAAoCkB;AAAA,EAAA,CACrC;AAED,2BACG,OAAA,EAAI,WAAWC,GAAU,GAAGH,GAAM,eAAY,cAC5C,UAAA;AAAA,IAAA,CAACD,KAAUf,KACV,gBAAAuB,EAAC,SAAA,EAAM,WAAWF,GAAc,SAASZ,KAAW,IACjD,UAAAT,EAAA,CACH;AAAA,IAEF,gBAAAwB,EAAC,OAAA,EAAI,WAAU,iCAAgC,aAAaZ,GACzD,UAAA;AAAA,MAAAC,KACC,gBAAAU,EAACE,KAAmB,SAAAvB,GAAkB,QAAQ,EAAQa,GAAS,UAAS,SACrE,UAAAF,EAAA,CACH;AAAA,MAEDF;AAAA,MACAG,KAAgB,gBAAAS,EAACE,GAAA,EAAmB,UAAS,OAAO,UAAAX,GAAa;AAAA,MACjE,CAACC,KAAUb,MAAY,gCACrB,YAAA,EAAS,WAAWoB,GACnB,UAAA,gBAAAC,EAAC,UAAA,EAAQ,cAAQ,gBAAAA,EAAC,QAAA,EAAM,aAAM,IAAU,gBAAAA,EAAC,UAAK,WAAU,oBAAmB,UAAA,IAAA,CAAO,EAAA,CAAQ,EAAA,CAC5F;AAAA,IAAA,GAEJ;AAAA,IACC,CAACR,KAAUd,KACV,gBAAAsB,EAAC,KAAA,EAAE,WAAU,gCACX,UAAA,gBAAAA,EAAC,QAAA,EAAK,WAAU,gCAAgC,UAAAtB,EAAA,CAAW,EAAA,CAC7D;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"textFieldWrapper.js","sources":["../../../../../src/components/inputs/textField/textFieldWrapper.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { TextFieldAdornment } from \"./textFieldAdornment\";\nimport { hasHelperText } from \"../../../hooks/useHelperText\";\n\nexport interface TextFieldWrapperProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n helperText?: React.ReactNode;\n /**\n * Id of the helper text, for the control's `aria-describedby`. Only shown helper text takes it: not the blank line\n * drawn without helper text, and an inline field shows none.\n */\n helperTextId?: string;\n variant?: \"outlined\" | \"filled\";\n disabled?: boolean;\n className?: string;\n error?: boolean;\n fullWidth?: boolean;\n isFilledState?: boolean;\n isFocused?: boolean;\n children: React.ReactNode;\n /** Id of the control the label names. Without it, the label names nothing. */\n htmlFor?: string;\n /**\n * Id of the `<label>`. A control that `htmlFor` cannot label (one that is not\n * a form element, such as SelectField's `role=\"button\"`) points\n * `aria-labelledby` at it.\n */\n labelId?: string;\n shrink?: boolean;\n onHolderMouseDown?: React.MouseEventHandler<HTMLDivElement>;\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n inline?: boolean;\n /** Test id of the root `<div>`; `text-field` unless given. */\n \"data-testid\"?: string;\n}\n\nexport function TextFieldWrapper({\n label,\n helperText,\n helperTextId,\n variant,\n disabled,\n className,\n error,\n fullWidth,\n isFilledState,\n isFocused,\n htmlFor,\n labelId,\n shrink,\n children,\n onHolderMouseDown,\n startAdornment,\n endAdornment,\n inline,\n \"data-testid\": dataTestId = \"text-field\",\n ...rest\n}: TextFieldWrapperProps) {\n const isFilledVariant = variant === \"filled\";\n const isNotchedActive = label && (isFilledState || isFocused || shrink);\n // Without helper text a blank line holds its place.\n const helperLine = helperText === undefined ? <>&nbsp;</> : helperText;\n\n const classes = cn(className, \"smwb-text-field\", {\n \"smwb-text-field--filled\": !inline && isFilledVariant,\n \"smwb-text-field--inline\": inline,\n \"smwb-text-field--focused\": !inline && isFocused,\n \"smwb-text-field--error\": error,\n \"smwb-text-field--disabled\": disabled,\n \"smwb-text-field--full-width\": fullWidth,\n });\n const labelClasses = cn(\"smwb-text-field__label\", {\n \"smwb-text-field__label--shrink\": isNotchedActive,\n });\n const notchedClasses = cn(\"smwb-text-field__notched\", {\n \"smwb-text-field__notched--with-label\": label,\n \"smwb-text-field__notched--active\": isNotchedActive,\n });\n\n return (\n <div className={classes} {...rest} data-testid={dataTestId}>\n {!inline && label && (\n <label id={labelId} className={labelClasses} htmlFor={htmlFor}>\n {label}\n </label>\n )}\n <div className=\"smwb-text-field__input-holder\" onMouseDown={onHolderMouseDown}>\n {startAdornment && (\n <TextFieldAdornment variant={variant} inline={Boolean(inline)} position=\"start\">\n {startAdornment}\n </TextFieldAdornment>\n )}\n {children}\n {endAdornment && <TextFieldAdornment position=\"end\">{endAdornment}</TextFieldAdornment>}\n {!inline && variant === \"outlined\" && (\n <fieldset className={notchedClasses}>\n <legend>{label ? <span>{label}</span> : <span className=\"smwb-notranslate\">&#8203;</span>}</legend>\n </fieldset>\n )}\n </div>\n {!inline && helperLine && (\n <p className=\"smwb-text-field__helper-line\">\n <span\n className=\"smwb-text-field__helper-text\"\n id={hasHelperText(helperText, inline) ? helperTextId : undefined}\n >\n {helperLine}\n </span>\n </p>\n )}\n </div>\n );\n}\n"],"names":["TextFieldWrapper","label","helperText","helperTextId","variant","disabled","className","error","fullWidth","isFilledState","isFocused","htmlFor","labelId","shrink","children","onHolderMouseDown","startAdornment","endAdornment","inline","dataTestId","rest","isFilledVariant","isNotchedActive","helperLine","jsx","Fragment","classes","cn","labelClasses","notchedClasses","jsxs","TextFieldAdornment","hasHelperText"],"mappings":";;;;AAsCO,SAASA,EAAiB;AAAA,EAC/B,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,eAAeC,IAAa;AAAA,EAC5B,GAAGC;AACL,GAA0B;AACxB,QAAMC,IAAkBjB,MAAY,UAC9BkB,IAAkBrB,MAAUQ,KAAiBC,KAAaG,IAE1DU,IAAarB,MAAe,SAAY,gBAAAsB,EAAAC,GAAA,EAAE,eAAM,IAAMvB,GAEtDwB,IAAUC,EAAGrB,GAAW,mBAAmB;AAAA,IAC/C,2BAA2B,CAACY,KAAUG;AAAA,IACtC,2BAA2BH;AAAA,IAC3B,4BAA4B,CAACA,KAAUR;AAAA,IACvC,0BAA0BH;AAAA,IAC1B,6BAA6BF;AAAA,IAC7B,+BAA+BG;AAAA,EAAA,CAChC,GACKoB,IAAeD,EAAG,0BAA0B;AAAA,IAChD,kCAAkCL;AAAA,EAAA,CACnC,GACKO,IAAiBF,EAAG,4BAA4B;AAAA,IACpD,wCAAwC1B;AAAA,IACxC,oCAAoCqB;AAAA,EAAA,CACrC;AAED,2BACG,OAAA,EAAI,WAAWI,GAAU,GAAGN,GAAM,eAAaD,GAC7C,UAAA;AAAA,IAAA,CAACD,KAAUjB,KACV,gBAAAuB,EAAC,SAAA,EAAM,IAAIZ,GAAS,WAAWgB,GAAc,SAAAjB,GAC1C,UAAAV,EAAA,CACH;AAAA,IAEF,gBAAA6B,EAAC,OAAA,EAAI,WAAU,iCAAgC,aAAaf,GACzD,UAAA;AAAA,MAAAC,KACC,gBAAAQ,EAACO,KAAmB,SAAA3B,GAAkB,QAAQ,EAAQc,GAAS,UAAS,SACrE,UAAAF,EAAA,CACH;AAAA,MAEDF;AAAA,MACAG,KAAgB,gBAAAO,EAACO,GAAA,EAAmB,UAAS,OAAO,UAAAd,GAAa;AAAA,MACjE,CAACC,KAAUd,MAAY,gCACrB,YAAA,EAAS,WAAWyB,GACnB,UAAA,gBAAAL,EAAC,UAAA,EAAQ,cAAQ,gBAAAA,EAAC,QAAA,EAAM,aAAM,IAAU,gBAAAA,EAAC,UAAK,WAAU,oBAAmB,UAAA,IAAA,CAAO,EAAA,CAAQ,EAAA,CAC5F;AAAA,IAAA,GAEJ;AAAA,IACC,CAACN,KAAUK,KACV,gBAAAC,EAAC,KAAA,EAAE,WAAU,gCACX,UAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,IAAIQ,EAAc9B,GAAYgB,CAAM,IAAIf,IAAe;AAAA,QAEtD,UAAAoB;AAAA,MAAA;AAAA,IAAA,EACH,CACF;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -1,116 +1,122 @@
1
- import { jsxs as U, Fragment as $, jsx as n } from "react/jsx-runtime";
2
- import q, { useMemo as z, useState as m, useRef as C, useCallback as a } from "react";
3
- import { useFloating as G, autoUpdate as H } from "@floating-ui/react";
4
- import J from "react-transition-group/Transition";
5
- import { resolvePlacement as K, buildFloatingMiddleware as Q } from "../../../utils/floating.js";
1
+ import { jsxs as $, Fragment as q, jsx as a } from "react/jsx-runtime";
2
+ import z, { useMemo as G, useState as y, useRef as T, useCallback as m, useEffect as H } from "react";
3
+ import { useFloating as J, autoUpdate as Q } from "@floating-ui/react";
4
+ import W from "react-transition-group/Transition";
5
+ import { resolvePlacement as X, buildFloatingMiddleware as Y } from "../../../utils/floating.js";
6
6
  import { useSafeLayoutEffect as P } from "../../../hooks/useSafeLayoutEffect.js";
7
- import { useForkRef as T } from "../../../hooks/useForkRef.js";
8
- import { TimePickerInput as W } from "./timePickerInput.js";
9
- import { TimePickerColumns as X } from "./timePickerColumns.js";
10
- import { isValidTimeDate as F } from "./timeUtils.js";
11
- import { createPortal as Y } from "react-dom";
12
- import { ClickAwayListener as Z } from "../../clickAwayListener/clickAwayListener.js";
13
- const ee = (u) => ({
14
- transition: `opacity ${u}ms ease-in-out`,
7
+ import { useForkRef as F } from "../../../hooks/useForkRef.js";
8
+ import { isTopOverlayLayer as Z } from "../../../utils/overlayLayer.js";
9
+ import { TimePickerInput as ee } from "./timePickerInput.js";
10
+ import { TimePickerColumns as te } from "./timePickerColumns.js";
11
+ import { isValidTimeDate as L } from "./timeUtils.js";
12
+ import { createPortal as oe } from "react-dom";
13
+ import { ClickAwayListener as ne } from "../../clickAwayListener/clickAwayListener.js";
14
+ const re = (k) => ({
15
+ transition: `opacity ${k}ms ease-in-out`,
15
16
  opacity: 0
16
- }), te = {
17
+ }), ae = {
17
18
  entering: { opacity: 1 },
18
19
  entered: { opacity: 1 },
19
20
  exiting: { opacity: 0 }
20
- }, pe = q.forwardRef(function(i, S) {
21
+ }, ge = z.forwardRef(function(u, O) {
21
22
  const {
22
- value: l,
23
- onChange: r,
24
- placement: x = "bottom-start",
23
+ value: f,
24
+ onChange: i,
25
+ placement: D = "bottom-start",
25
26
  disabled: t,
26
- disableClock: f,
27
- clockAriaLabel: D = "Choose time",
28
- format: d,
29
- onBlur: E,
30
- ...O
31
- } = i, o = z(() => l === void 0 ? void 0 : new Date(l), [l]), [V, p] = m(() => F(o) ? o : /* @__PURE__ */ new Date()), [k, s] = m(!1), g = C(null), c = C(null), w = K(x), { refs: y, floatingStyles: A } = G({
32
- open: k,
33
- placement: w.placement,
34
- whileElementsMounted: H,
35
- middleware: Q(w)
36
- }), B = T(g, y.setReference, S), L = T(c, y.setFloating), [v, M] = m();
27
+ disableClock: v,
28
+ clockAriaLabel: S = "Choose time",
29
+ format: w,
30
+ onBlur: x,
31
+ ...V
32
+ } = u, o = G(() => f === void 0 ? void 0 : new Date(f), [f]), [A, g] = y(() => L(o) ? o : /* @__PURE__ */ new Date()), [b, s] = y(!1), d = T(null), c = T(null), h = X(D), { refs: R, floatingStyles: B } = J({
33
+ open: b,
34
+ placement: h.placement,
35
+ whileElementsMounted: Q,
36
+ middleware: Y(h)
37
+ }), M = F(d, R.setReference, O), j = F(c, R.setFloating), [C, I] = y();
37
38
  P(() => {
38
- M(document.body);
39
+ I(document.body);
39
40
  }, []), P(() => {
40
- t || p(F(o) ? o : /* @__PURE__ */ new Date());
41
+ t || g(L(o) ? o : /* @__PURE__ */ new Date());
41
42
  }, [o, t]);
42
- const j = a(() => {
43
+ const N = m(() => {
43
44
  t || s((e) => !e);
44
- }, [t]), I = a((e) => {
45
- var h, R;
46
- const b = e.target;
47
- (h = c.current) != null && h.contains(b) || (R = g.current) != null && R.contains(b) || s(!1);
48
- }, []), N = a(
45
+ }, [t]), _ = m((e) => {
46
+ var n, r;
47
+ const l = e.target;
48
+ (n = c.current) != null && n.contains(l) || (r = d.current) != null && r.contains(l) || s(!1);
49
+ }, []), p = b && !t && !v;
50
+ H(() => {
51
+ if (!p)
52
+ return;
53
+ const e = (l) => {
54
+ var E;
55
+ const n = c.current;
56
+ if (l.key !== "Escape" || !n || !Z(n))
57
+ return;
58
+ s(!1);
59
+ const r = document.activeElement;
60
+ (!r || r === document.body || n.contains(r)) && ((E = d.current) == null || E.focus());
61
+ };
62
+ return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
63
+ }, [p]);
64
+ const K = m(
49
65
  (e) => {
50
- p(e), r == null || r(void 0, e, i);
66
+ g(e), i == null || i(void 0, e, u);
51
67
  },
52
- [r, i]
53
- ), _ = a(() => {
68
+ [i, u]
69
+ ), U = m(() => {
54
70
  s(!1);
55
71
  }, []);
56
- return /* @__PURE__ */ U($, { children: [
57
- /* @__PURE__ */ n(
58
- W,
72
+ return /* @__PURE__ */ $(q, { children: [
73
+ /* @__PURE__ */ a(
74
+ ee,
59
75
  {
60
- ref: B,
76
+ ref: M,
61
77
  value: o,
62
- onChange: r,
63
- onBlur: E,
64
- onToggle: j,
78
+ onChange: i,
79
+ onBlur: x,
80
+ onToggle: N,
65
81
  disabled: t,
66
- disableClock: f,
67
- format: d,
68
- ...O
82
+ disableClock: v,
83
+ format: w,
84
+ ...V
69
85
  }
70
86
  ),
71
- v ? Y(
72
- /* @__PURE__ */ n(
73
- J,
87
+ C ? oe(
88
+ /* @__PURE__ */ a(W, { nodeRef: c, in: p, timeout: 150, mountOnEnter: !0, unmountOnExit: !0, children: (e) => /* @__PURE__ */ a(ne, { onClickAway: _, children: /* @__PURE__ */ a(
89
+ "div",
74
90
  {
75
- nodeRef: c,
76
- in: k && !t && !f,
77
- timeout: 150,
78
- mountOnEnter: !0,
79
- unmountOnExit: !0,
80
- children: (e) => /* @__PURE__ */ n(Z, { onClickAway: I, children: /* @__PURE__ */ n(
81
- "div",
91
+ ref: j,
92
+ className: "smwb-date-picker smwb-time-picker",
93
+ style: {
94
+ ...B,
95
+ ...re(150),
96
+ ...ae[e]
97
+ },
98
+ "data-testid": "time-picker",
99
+ "data-smwb-overlay-layer": "",
100
+ role: "dialog",
101
+ "aria-modal": "false",
102
+ "aria-label": S,
103
+ children: /* @__PURE__ */ a("div", { className: "smwb-date-picker__inner", children: /* @__PURE__ */ a(
104
+ te,
82
105
  {
83
- ref: L,
84
- className: "smwb-date-picker smwb-time-picker",
85
- style: {
86
- ...A,
87
- ...ee(150),
88
- ...te[e]
89
- },
90
- "data-testid": "time-picker",
91
- "data-smwb-overlay-layer": "",
92
- role: "dialog",
93
- "aria-modal": "false",
94
- "aria-label": D,
95
- children: /* @__PURE__ */ n("div", { className: "smwb-date-picker__inner", children: /* @__PURE__ */ n(
96
- X,
97
- {
98
- value: V,
99
- format: d,
100
- onChange: N,
101
- onComplete: _
102
- }
103
- ) })
106
+ value: A,
107
+ format: w,
108
+ onChange: K,
109
+ onComplete: U
104
110
  }
105
111
  ) })
106
112
  }
107
- ),
108
- v
113
+ ) }) }),
114
+ C
109
115
  ) : null
110
116
  ] });
111
117
  });
112
118
  export {
113
- pe as TimePicker,
114
- pe as default
119
+ ge as TimePicker,
120
+ ge as default
115
121
  };
116
122
  //# sourceMappingURL=timePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timePicker.js","sources":["../../../../../src/components/inputs/timePicker/timePicker.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef, useState } from \"react\";\nimport { autoUpdate, useFloating } from \"@floating-ui/react\";\nimport Transition, { TransitionStatus } from \"react-transition-group/Transition\";\nimport { buildFloatingMiddleware, Placement, resolvePlacement } from \"../../../utils/floating\";\nimport { useSafeLayoutEffect } from \"../../../hooks/useSafeLayoutEffect\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\nimport { TextFieldProps } from \"../textField\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport { TimePickerInput } from \"./timePickerInput\";\nimport { TimePickerColumns } from \"./timePickerColumns\";\nimport { isValidTimeDate } from \"./timeUtils\";\nimport { createPortal } from \"react-dom\";\n\nconst defaultStyle = (duration: number) => ({\n transition: `opacity ${duration}ms ease-in-out`,\n opacity: 0,\n});\n\nconst transitionStyles = {\n entering: { opacity: 1 },\n entered: { opacity: 1 },\n exiting: { opacity: 0 },\n} as Record<TransitionStatus, { opacity: number }>;\n\nexport interface TimePickerProps extends Omit<TextFieldProps, \"onBlur\" | \"onChange\" | \"value\" | \"defaultValue\"> {\n /** Time format pattern with tokens HH, mm, ss, e.g. \"HH:mm\" or \"HH:mm:ss\". */\n format?: string;\n placement?: Placement;\n disableClock?: boolean;\n label?: string;\n clockAriaLabel?: string;\n autoComplete?: string;\n value?: Date | string;\n clockIcon?: React.ReactNode;\n onChange?: (event?: React.ChangeEvent<HTMLInputElement>, value?: Date, data?: TimePickerProps) => void;\n onBlur?: (event?: React.FocusEvent<HTMLInputElement>, value?: Date, data?: TimePickerProps) => void;\n}\n\nexport const TimePicker = React.forwardRef(function TimePicker(props: TimePickerProps, ref) {\n const {\n value: valueProp,\n onChange: onChangeProp,\n placement = \"bottom-start\",\n disabled,\n disableClock,\n clockAriaLabel = \"Choose time\",\n format,\n onBlur: onBlurProp,\n ...rest\n } = props;\n const value = useMemo(() => (valueProp === undefined ? undefined : new Date(valueProp)), [valueProp]);\n const [viewValue, setViewValue] = useState<Date>(() => (isValidTimeDate(value) ? value : new Date()));\n const [isOpen, setIsOpen] = useState(false);\n\n const anchorRef = useRef<HTMLDivElement | null>(null);\n const clockRef = useRef<HTMLDivElement | null>(null);\n\n const resolved = resolvePlacement(placement);\n const { refs, floatingStyles } = useFloating({\n open: isOpen,\n placement: resolved.placement,\n whileElementsMounted: autoUpdate,\n middleware: buildFloatingMiddleware(resolved),\n });\n\n const anchorForkRef = useForkRef(anchorRef, refs.setReference, ref);\n const clockForkRef = useForkRef(clockRef, refs.setFloating);\n\n // The clock is portalled: its target is resolved in the browser only. A server\n // render (no document) and the first client render emit nothing there, so the\n // picker renders and hydrates on a server-rendered page.\n const [portalRoot, setPortalRoot] = useState<HTMLElement>();\n useSafeLayoutEffect(() => {\n setPortalRoot(document.body);\n }, []);\n\n useSafeLayoutEffect(() => {\n if (disabled) {\n return;\n }\n\n setViewValue(isValidTimeDate(value) ? value : new Date());\n }, [value, disabled]);\n\n const onToggle = useCallback(() => {\n if (!disabled) {\n setIsOpen((prevState) => !prevState);\n }\n }, [disabled]);\n\n const onClickAway = useCallback((event: Event | React.SyntheticEvent) => {\n const target = event.target as HTMLElement;\n\n if (clockRef.current?.contains(target) || anchorRef.current?.contains(target)) {\n return;\n }\n\n setIsOpen(false);\n }, []);\n\n const onTimeChange = useCallback(\n (next: Date) => {\n setViewValue(next);\n onChangeProp?.(undefined, next, props);\n },\n [onChangeProp, props]\n );\n\n const onComplete = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n return (\n <>\n <TimePickerInput\n ref={anchorForkRef}\n value={value}\n onChange={onChangeProp}\n onBlur={onBlurProp}\n onToggle={onToggle}\n disabled={disabled}\n disableClock={disableClock}\n format={format}\n {...rest}\n />\n {portalRoot\n ? createPortal(\n <Transition\n nodeRef={clockRef}\n in={isOpen && !disabled && !disableClock}\n timeout={150}\n mountOnEnter\n unmountOnExit\n >\n {(state) => (\n <ClickAwayListener onClickAway={onClickAway}>\n <div\n ref={clockForkRef}\n className=\"smwb-date-picker smwb-time-picker\"\n style={{\n ...floatingStyles,\n ...defaultStyle(150),\n ...transitionStyles[state],\n }}\n data-testid=\"time-picker\"\n data-smwb-overlay-layer=\"\"\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={clockAriaLabel}\n >\n <div className=\"smwb-date-picker__inner\">\n <TimePickerColumns\n value={viewValue}\n format={format}\n onChange={onTimeChange}\n onComplete={onComplete}\n />\n </div>\n </div>\n </ClickAwayListener>\n )}\n </Transition>,\n portalRoot\n )\n : null}\n </>\n );\n});\n\nexport default TimePicker;\n"],"names":["defaultStyle","duration","transitionStyles","TimePicker","React","props","ref","valueProp","onChangeProp","placement","disabled","disableClock","clockAriaLabel","format","onBlurProp","rest","value","useMemo","viewValue","setViewValue","useState","isValidTimeDate","isOpen","setIsOpen","anchorRef","useRef","clockRef","resolved","resolvePlacement","refs","floatingStyles","useFloating","autoUpdate","buildFloatingMiddleware","anchorForkRef","useForkRef","clockForkRef","portalRoot","setPortalRoot","useSafeLayoutEffect","onToggle","useCallback","prevState","onClickAway","event","target","_a","_b","onTimeChange","next","onComplete","jsxs","Fragment","jsx","TimePickerInput","createPortal","Transition","state","ClickAwayListener","TimePickerColumns"],"mappings":"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"}
1
+ {"version":3,"file":"timePicker.js","sources":["../../../../../src/components/inputs/timePicker/timePicker.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { autoUpdate, useFloating } from \"@floating-ui/react\";\nimport Transition, { TransitionStatus } from \"react-transition-group/Transition\";\nimport { buildFloatingMiddleware, Placement, resolvePlacement } from \"../../../utils/floating\";\nimport { useSafeLayoutEffect } from \"../../../hooks/useSafeLayoutEffect\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\nimport { isTopOverlayLayer } from \"../../../utils/overlayLayer\";\nimport { TextFieldProps } from \"../textField\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport { TimePickerInput } from \"./timePickerInput\";\nimport { TimePickerColumns } from \"./timePickerColumns\";\nimport { isValidTimeDate } from \"./timeUtils\";\nimport { createPortal } from \"react-dom\";\n\nconst defaultStyle = (duration: number) => ({\n transition: `opacity ${duration}ms ease-in-out`,\n opacity: 0,\n});\n\nconst transitionStyles = {\n entering: { opacity: 1 },\n entered: { opacity: 1 },\n exiting: { opacity: 0 },\n} as Record<TransitionStatus, { opacity: number }>;\n\nexport interface TimePickerProps extends Omit<TextFieldProps, \"onBlur\" | \"onChange\" | \"value\" | \"defaultValue\"> {\n /** Time format pattern with tokens HH, mm, ss, e.g. \"HH:mm\" or \"HH:mm:ss\". */\n format?: string;\n placement?: Placement;\n disableClock?: boolean;\n label?: string;\n clockAriaLabel?: string;\n autoComplete?: string;\n value?: Date | string;\n clockIcon?: React.ReactNode;\n onChange?: (event?: React.ChangeEvent<HTMLInputElement>, value?: Date, data?: TimePickerProps) => void;\n onBlur?: (event?: React.FocusEvent<HTMLInputElement>, value?: Date, data?: TimePickerProps) => void;\n}\n\nexport const TimePicker = React.forwardRef(function TimePicker(props: TimePickerProps, ref) {\n const {\n value: valueProp,\n onChange: onChangeProp,\n placement = \"bottom-start\",\n disabled,\n disableClock,\n clockAriaLabel = \"Choose time\",\n format,\n onBlur: onBlurProp,\n ...rest\n } = props;\n const value = useMemo(() => (valueProp === undefined ? undefined : new Date(valueProp)), [valueProp]);\n const [viewValue, setViewValue] = useState<Date>(() => (isValidTimeDate(value) ? value : new Date()));\n const [isOpen, setIsOpen] = useState(false);\n\n const anchorRef = useRef<HTMLDivElement | null>(null);\n const clockRef = useRef<HTMLDivElement | null>(null);\n\n const resolved = resolvePlacement(placement);\n const { refs, floatingStyles } = useFloating({\n open: isOpen,\n placement: resolved.placement,\n whileElementsMounted: autoUpdate,\n middleware: buildFloatingMiddleware(resolved),\n });\n\n const anchorForkRef = useForkRef(anchorRef, refs.setReference, ref);\n const clockForkRef = useForkRef(clockRef, refs.setFloating);\n\n // The clock is portalled: its target is resolved in the browser only. A server\n // render (no document) and the first client render emit nothing there, so the\n // picker renders and hydrates on a server-rendered page.\n const [portalRoot, setPortalRoot] = useState<HTMLElement>();\n useSafeLayoutEffect(() => {\n setPortalRoot(document.body);\n }, []);\n\n useSafeLayoutEffect(() => {\n if (disabled) {\n return;\n }\n\n setViewValue(isValidTimeDate(value) ? value : new Date());\n }, [value, disabled]);\n\n const onToggle = useCallback(() => {\n if (!disabled) {\n setIsOpen((prevState) => !prevState);\n }\n }, [disabled]);\n\n const onClickAway = useCallback((event: Event | React.SyntheticEvent) => {\n const target = event.target as HTMLElement;\n\n if (clockRef.current?.contains(target) || anchorRef.current?.contains(target)) {\n return;\n }\n\n setIsOpen(false);\n }, []);\n\n const panelOpen = isOpen && !disabled && !disableClock;\n\n // Escape closes the panel while it is the topmost overlay layer, so the next one\n // reaches a Modal or Sheet around the picker. Focus left in the panel (or on\n // <body> after a click there) goes back to the input rather than being lost.\n useEffect(() => {\n if (!panelOpen) {\n return;\n }\n const onKeyDown = (event: KeyboardEvent) => {\n const panel = clockRef.current;\n if (event.key !== \"Escape\" || !panel || !isTopOverlayLayer(panel)) {\n return;\n }\n setIsOpen(false);\n const active = document.activeElement;\n if (!active || active === document.body || panel.contains(active)) {\n anchorRef.current?.focus();\n }\n };\n document.addEventListener(\"keydown\", onKeyDown);\n\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [panelOpen]);\n\n const onTimeChange = useCallback(\n (next: Date) => {\n setViewValue(next);\n onChangeProp?.(undefined, next, props);\n },\n [onChangeProp, props]\n );\n\n const onComplete = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n return (\n <>\n <TimePickerInput\n ref={anchorForkRef}\n value={value}\n onChange={onChangeProp}\n onBlur={onBlurProp}\n onToggle={onToggle}\n disabled={disabled}\n disableClock={disableClock}\n format={format}\n {...rest}\n />\n {portalRoot\n ? createPortal(\n <Transition nodeRef={clockRef} in={panelOpen} timeout={150} mountOnEnter unmountOnExit>\n {(state) => (\n <ClickAwayListener onClickAway={onClickAway}>\n <div\n ref={clockForkRef}\n className=\"smwb-date-picker smwb-time-picker\"\n style={{\n ...floatingStyles,\n ...defaultStyle(150),\n ...transitionStyles[state],\n }}\n data-testid=\"time-picker\"\n data-smwb-overlay-layer=\"\"\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={clockAriaLabel}\n >\n <div className=\"smwb-date-picker__inner\">\n <TimePickerColumns\n value={viewValue}\n format={format}\n onChange={onTimeChange}\n onComplete={onComplete}\n />\n </div>\n </div>\n </ClickAwayListener>\n )}\n </Transition>,\n portalRoot\n )\n : null}\n </>\n );\n});\n\nexport default TimePicker;\n"],"names":["defaultStyle","duration","transitionStyles","TimePicker","React","props","ref","valueProp","onChangeProp","placement","disabled","disableClock","clockAriaLabel","format","onBlurProp","rest","value","useMemo","viewValue","setViewValue","useState","isValidTimeDate","isOpen","setIsOpen","anchorRef","useRef","clockRef","resolved","resolvePlacement","refs","floatingStyles","useFloating","autoUpdate","buildFloatingMiddleware","anchorForkRef","useForkRef","clockForkRef","portalRoot","setPortalRoot","useSafeLayoutEffect","onToggle","useCallback","prevState","onClickAway","event","target","_a","_b","panelOpen","useEffect","onKeyDown","panel","isTopOverlayLayer","active","onTimeChange","next","onComplete","jsxs","Fragment","jsx","TimePickerInput","createPortal","Transition","state","ClickAwayListener","TimePickerColumns"],"mappings":"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"}
@@ -1,69 +1,88 @@
1
- import { jsx as a, jsxs as g } from "react/jsx-runtime";
2
- import k from "react";
3
- import b from "clsx";
4
- import { useId as v } from "../../../hooks/useId.js";
5
- import { TextFieldWrapper as y } from "../textField/textFieldWrapper.js";
6
- const F = k.forwardRef(function(e, h) {
1
+ import { jsx as i, jsxs as w } from "react/jsx-runtime";
2
+ import p from "react";
3
+ import f from "clsx";
4
+ import { useHelperText as v } from "../../../hooks/useHelperText.js";
5
+ import { useId as B } from "../../../hooks/useId.js";
6
+ import { cancelToggle as $, forgetCancelledToggle as j } from "../../../utils/readOnlyToggle.js";
7
+ import { TextFieldWrapper as q } from "../textField/textFieldWrapper.js";
8
+ const W = p.forwardRef(function(e, _) {
7
9
  const {
8
- disabled: l,
9
- readOnly: r,
10
+ disabled: o,
11
+ readOnly: l,
10
12
  required: t,
11
- checked: o,
12
- className: w,
13
- id: _,
14
- label: c,
15
- labelPlacement: m,
16
- size: f = "medium",
17
- color: u = "primary",
18
- helperText: p,
19
- error: i,
20
- ...x
21
- } = e, n = v(_), N = (s) => {
22
- var d;
23
- if (r) {
24
- s.preventDefault();
13
+ checked: c,
14
+ className: u,
15
+ id: x,
16
+ label: d,
17
+ labelPlacement: s,
18
+ size: y = "medium",
19
+ color: k = "primary",
20
+ helperText: m,
21
+ error: n,
22
+ "aria-describedby": N,
23
+ ...g
24
+ } = e, b = B(x), h = v(m, { describedBy: N }), T = (a) => {
25
+ var r;
26
+ if (l) {
27
+ j(a, c);
25
28
  return;
26
29
  }
27
- (d = e.onChange) == null || d.call(e, s, s.target.checked, e);
30
+ (r = e.onChange) == null || r.call(e, a, a.target.checked, e);
31
+ }, C = (a) => {
32
+ var r;
33
+ (r = e.onClick) == null || r.call(e, a), l && $(a, c);
28
34
  };
29
- return /* @__PURE__ */ a(y, { helperText: p, disabled: l, error: i, className: "smwb-text-field-checkbox", children: /* @__PURE__ */ g("span", { className: b("smwb-toggle__wrapper", m && `smwb-toggle__wrapper_label-${m}`), children: [
30
- c ? /* @__PURE__ */ a("label", { htmlFor: n, className: "smwb-toggle__label", children: c }) : null,
31
- /* @__PURE__ */ g(
32
- "label",
33
- {
34
- className: b("smwb-toggle", `smwb-toggle_size-${f}`, `smwb-toggle_color-${u}`, w, {
35
- "smwb-disabled": l,
36
- "smwb-readonly": r
37
- }),
38
- children: [
39
- /* @__PURE__ */ a(
40
- "input",
41
- {
42
- type: "checkbox",
43
- id: n,
44
- className: "smwb-toggle__checkbox",
45
- "aria-checked": o,
46
- "aria-invalid": i || void 0,
47
- "aria-required": t || void 0,
48
- role: "switch",
49
- checked: o,
50
- disabled: l,
51
- readOnly: r,
52
- required: t,
53
- ref: h,
54
- ...x,
55
- onChange: N
56
- }
57
- ),
58
- /* @__PURE__ */ a("span", { className: "smwb-toggle__track" }),
59
- /* @__PURE__ */ a("span", { className: "smwb-toggle__thumb" })
60
- ]
61
- }
62
- )
63
- ] }) });
35
+ return /* @__PURE__ */ i(
36
+ q,
37
+ {
38
+ helperText: m,
39
+ helperTextId: h.id,
40
+ disabled: o,
41
+ error: n,
42
+ className: "smwb-text-field-checkbox",
43
+ children: /* @__PURE__ */ w("span", { className: f("smwb-toggle__wrapper", s && `smwb-toggle__wrapper_label-${s}`), children: [
44
+ d ? /* @__PURE__ */ i("label", { htmlFor: b, className: "smwb-toggle__label", children: d }) : null,
45
+ /* @__PURE__ */ w(
46
+ "label",
47
+ {
48
+ className: f("smwb-toggle", `smwb-toggle_size-${y}`, `smwb-toggle_color-${k}`, u, {
49
+ "smwb-disabled": o,
50
+ "smwb-readonly": l
51
+ }),
52
+ children: [
53
+ /* @__PURE__ */ i(
54
+ "input",
55
+ {
56
+ type: "checkbox",
57
+ id: b,
58
+ className: "smwb-toggle__checkbox",
59
+ "aria-checked": c,
60
+ "aria-invalid": n || void 0,
61
+ "aria-required": t || void 0,
62
+ "aria-describedby": h.describedBy,
63
+ role: "switch",
64
+ checked: c,
65
+ disabled: o,
66
+ readOnly: l,
67
+ required: t,
68
+ ref: _,
69
+ ...g,
70
+ "aria-readonly": l || g["aria-readonly"],
71
+ onChange: T,
72
+ onClick: C
73
+ }
74
+ ),
75
+ /* @__PURE__ */ i("span", { className: "smwb-toggle__track" }),
76
+ /* @__PURE__ */ i("span", { className: "smwb-toggle__thumb" })
77
+ ]
78
+ }
79
+ )
80
+ ] })
81
+ }
82
+ );
64
83
  });
65
84
  export {
66
- F as Toggle,
67
- F as default
85
+ W as Toggle,
86
+ W as default
68
87
  };
69
88
  //# sourceMappingURL=toggle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggle.js","sources":["../../../../../src/components/inputs/toggle/toggle.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 ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n checked?: boolean;\n className?: string;\n id?: string;\n label?: string;\n labelPlacement?: \"top\" | \"left\" | \"right\";\n size?: SelectionControlSize;\n color?: SelectionControlColor;\n /** Unified handler: `(event, checked, data)`. */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, checked: boolean, data: ToggleProps) => void;\n helperText?: React.ReactNode;\n error?: boolean;\n}\n\nexport const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(function Toggle(props, ref) {\n const {\n disabled,\n readOnly,\n required,\n checked,\n className,\n id: idProp,\n label,\n labelPlacement,\n size = \"medium\",\n color = \"primary\",\n helperText,\n error,\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 props.onChange?.(e, e.target.checked, props);\n };\n\n return (\n <TextFieldWrapper helperText={helperText} disabled={disabled} error={error} className=\"smwb-text-field-checkbox\">\n <span className={cn(\"smwb-toggle__wrapper\", labelPlacement && `smwb-toggle__wrapper_label-${labelPlacement}`)}>\n {label ? (\n <label htmlFor={id} className=\"smwb-toggle__label\">\n {label}\n </label>\n ) : null}\n <label\n className={cn(\"smwb-toggle\", `smwb-toggle_size-${size}`, `smwb-toggle_color-${color}`, className, {\n \"smwb-disabled\": disabled,\n \"smwb-readonly\": readOnly,\n })}\n >\n <input\n type=\"checkbox\"\n id={id}\n className=\"smwb-toggle__checkbox\"\n aria-checked={checked}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n role={\"switch\"}\n checked={checked}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n ref={ref}\n {...args}\n onChange={handleChange}\n />\n <span className=\"smwb-toggle__track\"></span>\n <span className=\"smwb-toggle__thumb\"></span>\n </label>\n </span>\n </TextFieldWrapper>\n );\n});\n\nexport default Toggle;\n"],"names":["Toggle","React","props","ref","disabled","readOnly","required","checked","className","idProp","label","labelPlacement","size","color","helperText","error","args","id","useId","handleChange","e","_a","TextFieldWrapper","jsxs","cn","jsx"],"mappings":";;;;;AAuBO,MAAMA,IAASC,EAAM,WAA0C,SAAgBC,GAAOC,GAAK;AAChG,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,WAAAC;AAAA,IACA,IAAIC;AAAA,IACJ,OAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDd,GACEe,IAAKC,EAAMT,CAAM,GAEjBU,IAAe,CAACC,MAA2C;;AAC/D,QAAIf,GAAU;AACZ,MAAAe,EAAE,eAAA;AACF;AAAA,IACF;AACA,KAAAC,IAAAnB,EAAM,aAAN,QAAAmB,EAAA,KAAAnB,GAAiBkB,GAAGA,EAAE,OAAO,SAASlB;AAAA,EACxC;AAEA,2BACGoB,GAAA,EAAiB,YAAAR,GAAwB,UAAAV,GAAoB,OAAAW,GAAc,WAAU,4BACpF,UAAA,gBAAAQ,EAAC,QAAA,EAAK,WAAWC,EAAG,wBAAwBb,KAAkB,8BAA8BA,CAAc,EAAE,GACzG,UAAA;AAAA,IAAAD,sBACE,SAAA,EAAM,SAASO,GAAI,WAAU,sBAC3B,aACH,IACE;AAAA,IACJ,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAG,eAAe,oBAAoBZ,CAAI,IAAI,qBAAqBC,CAAK,IAAIL,GAAW;AAAA,UAChG,iBAAiBJ;AAAA,UACjB,iBAAiBC;AAAA,QAAA,CAClB;AAAA,QAED,UAAA;AAAA,UAAA,gBAAAoB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,IAAAR;AAAA,cACA,WAAU;AAAA,cACV,gBAAcV;AAAA,cACd,gBAAcQ,KAAS;AAAA,cACvB,iBAAeT,KAAY;AAAA,cAC3B,MAAM;AAAA,cACN,SAAAC;AAAA,cACA,UAAAH;AAAA,cACA,UAAAC;AAAA,cACA,UAAAC;AAAA,cACA,KAAAH;AAAA,cACC,GAAGa;AAAA,cACJ,UAAUG;AAAA,YAAA;AAAA,UAAA;AAAA,UAEZ,gBAAAM,EAAC,QAAA,EAAK,WAAU,qBAAA,CAAqB;AAAA,UACrC,gBAAAA,EAAC,QAAA,EAAK,WAAU,qBAAA,CAAqB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACvC,EAAA,CACF,EAAA,CACF;AAEJ,CAAC;"}
1
+ {"version":3,"file":"toggle.js","sources":["../../../../../src/components/inputs/toggle/toggle.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 ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n disabled?: boolean;\n /**\n * Keeps the switch as it is: clicks on it or its label and Space change nothing, and `onChange` is not called.\n * It stays focusable, and its input tells assistive technology it is read-only (`aria-readonly`).\n */\n readOnly?: boolean;\n required?: boolean;\n checked?: boolean;\n className?: string;\n id?: string;\n label?: string;\n labelPlacement?: \"top\" | \"left\" | \"right\";\n size?: SelectionControlSize;\n color?: SelectionControlColor;\n /** Unified handler: `(event, checked, data)`. */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, checked: boolean, data: ToggleProps) => void;\n helperText?: React.ReactNode;\n error?: boolean;\n}\n\nexport const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(function Toggle(props, ref) {\n const {\n disabled,\n readOnly,\n required,\n checked,\n className,\n id: idProp,\n label,\n labelPlacement,\n size = \"medium\",\n color = \"primary\",\n helperText,\n error,\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, checked);\n return;\n }\n props.onChange?.(e, e.target.checked, props);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n props.onClick?.(e);\n if (readOnly) cancelToggle(e, 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 <span className={cn(\"smwb-toggle__wrapper\", labelPlacement && `smwb-toggle__wrapper_label-${labelPlacement}`)}>\n {label ? (\n <label htmlFor={id} className=\"smwb-toggle__label\">\n {label}\n </label>\n ) : null}\n <label\n className={cn(\"smwb-toggle\", `smwb-toggle_size-${size}`, `smwb-toggle_color-${color}`, className, {\n \"smwb-disabled\": disabled,\n \"smwb-readonly\": readOnly,\n })}\n >\n <input\n type=\"checkbox\"\n id={id}\n className=\"smwb-toggle__checkbox\"\n aria-checked={checked}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n aria-describedby={helper.describedBy}\n role={\"switch\"}\n checked={checked}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n ref={ref}\n {...args}\n aria-readonly={readOnly || args[\"aria-readonly\"]}\n onChange={handleChange}\n onClick={handleClick}\n />\n <span className=\"smwb-toggle__track\"></span>\n <span className=\"smwb-toggle__thumb\"></span>\n </label>\n </span>\n </TextFieldWrapper>\n );\n});\n\nexport default Toggle;\n"],"names":["Toggle","React","props","ref","disabled","readOnly","required","checked","className","idProp","label","labelPlacement","size","color","helperText","error","ariaDescribedBy","args","id","useId","helper","useHelperText","handleChange","e","forgetCancelledToggle","_a","handleClick","cancelToggle","jsx","TextFieldWrapper","jsxs","cn"],"mappings":";;;;;;;AA6BO,MAAMA,IAASC,EAAM,WAA0C,SAAgBC,GAAOC,GAAK;AAChG,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,WAAAC;AAAA,IACA,IAAIC;AAAA,IACJ,OAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,oBAAoBC;AAAA,IACpB,GAAGC;AAAA,EAAA,IACDf,GACEgB,IAAKC,EAAMV,CAAM,GACjBW,IAASC,EAAcP,GAAY,EAAE,aAAaE,GAAiB,GAEnEM,IAAe,CAACC,MAA2C;;AAC/D,QAAIlB,GAAU;AACZ,MAAAmB,EAAsBD,GAAGhB,CAAO;AAChC;AAAA,IACF;AACA,KAAAkB,IAAAvB,EAAM,aAAN,QAAAuB,EAAA,KAAAvB,GAAiBqB,GAAGA,EAAE,OAAO,SAASrB;AAAA,EACxC,GAEMwB,IAAc,CAACH,MAA0C;;AAC7D,KAAAE,IAAAvB,EAAM,YAAN,QAAAuB,EAAA,KAAAvB,GAAgBqB,IACZlB,KAAUsB,EAAaJ,GAAGhB,CAAO;AAAA,EACvC;AAEA,SACE,gBAAAqB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,YAAAf;AAAA,MACA,cAAcM,EAAO;AAAA,MACrB,UAAAhB;AAAA,MACA,OAAAW;AAAA,MACA,WAAU;AAAA,MAEV,UAAA,gBAAAe,EAAC,UAAK,WAAWC,EAAG,wBAAwBpB,KAAkB,8BAA8BA,CAAc,EAAE,GACzG,UAAA;AAAA,QAAAD,sBACE,SAAA,EAAM,SAASQ,GAAI,WAAU,sBAC3B,aACH,IACE;AAAA,QACJ,gBAAAY;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWC,EAAG,eAAe,oBAAoBnB,CAAI,IAAI,qBAAqBC,CAAK,IAAIL,GAAW;AAAA,cAChG,iBAAiBJ;AAAA,cACjB,iBAAiBC;AAAA,YAAA,CAClB;AAAA,YAED,UAAA;AAAA,cAAA,gBAAAuB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,IAAAV;AAAA,kBACA,WAAU;AAAA,kBACV,gBAAcX;AAAA,kBACd,gBAAcQ,KAAS;AAAA,kBACvB,iBAAeT,KAAY;AAAA,kBAC3B,oBAAkBc,EAAO;AAAA,kBACzB,MAAM;AAAA,kBACN,SAAAb;AAAA,kBACA,UAAAH;AAAA,kBACA,UAAAC;AAAA,kBACA,UAAAC;AAAA,kBACA,KAAAH;AAAA,kBACC,GAAGc;AAAA,kBACJ,iBAAeZ,KAAYY,EAAK,eAAe;AAAA,kBAC/C,UAAUK;AAAA,kBACV,SAASI;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEX,gBAAAE,EAAC,QAAA,EAAK,WAAU,qBAAA,CAAqB;AAAA,cACrC,gBAAAA,EAAC,QAAA,EAAK,WAAU,qBAAA,CAAqB;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACvC,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
@@ -1,34 +1,35 @@
1
- import { jsxs as t, jsx as n } from "react/jsx-runtime";
2
- import c from "clsx";
3
- import { Slider as m } from "../slider/slider.js";
4
- function h(r, l) {
5
- return typeof r == "function" ? r(l) : Array.isArray(l) ? `${l[0]} – ${l[1]}` : l == null ? "" : String(l);
1
+ import { jsxs as o, jsx as a } from "react/jsx-runtime";
2
+ import h from "clsx";
3
+ import { useId as f } from "../../../hooks/useId.js";
4
+ import { Slider as b } from "../slider/slider.js";
5
+ function _(i, l) {
6
+ return typeof i == "function" ? i(l) : Array.isArray(l) ? `${l[0]} – ${l[1]}` : l == null ? "" : String(l);
6
7
  }
7
- function w({
8
- readout: r,
8
+ function N({
9
+ readout: i,
9
10
  endAdornment: l,
10
- onReset: i,
11
+ onReset: r,
11
12
  resetLabel: s,
12
- label: e,
13
+ label: n,
13
14
  className: u,
14
- ...a
15
+ ...e
15
16
  }) {
16
- const d = r !== void 0 && r !== !1, o = e != null || d || l != null || i != null;
17
- return /* @__PURE__ */ t("div", { className: c("smwb-value-slider", u), children: [
18
- o ? /* @__PURE__ */ t("div", { className: "smwb-value-slider__header", children: [
19
- e != null ? /* @__PURE__ */ n("span", { className: "smwb-value-slider__label", children: e }) : null,
20
- /* @__PURE__ */ n("span", { className: "smwb-value-slider__spacer" }),
21
- d ? /* @__PURE__ */ n("span", { className: "smwb-value-slider__readout", children: h(r, a.value) }) : null,
17
+ const d = i !== void 0 && i !== !1, c = n != null || d || l != null || r != null, t = `${f()}-label`, m = e["aria-labelledby"] || (n && !e["aria-label"] ? t : void 0);
18
+ return /* @__PURE__ */ o("div", { className: h("smwb-value-slider", u), children: [
19
+ c ? /* @__PURE__ */ o("div", { className: "smwb-value-slider__header", children: [
20
+ n != null ? /* @__PURE__ */ a("span", { id: t, className: "smwb-value-slider__label", children: n }) : null,
21
+ /* @__PURE__ */ a("span", { className: "smwb-value-slider__spacer" }),
22
+ d ? /* @__PURE__ */ a("span", { className: "smwb-value-slider__readout", children: _(i, e.value) }) : null,
22
23
  l,
23
- i != null ? /* @__PURE__ */ n(
24
+ r != null ? /* @__PURE__ */ a(
24
25
  "button",
25
26
  {
26
27
  type: "button",
27
28
  className: "smwb-value-slider__reset",
28
29
  "aria-label": s != null ? s : "Reset",
29
- disabled: !!a.disabled,
30
- onClick: () => i(),
31
- children: /* @__PURE__ */ n(
30
+ disabled: !!e.disabled,
31
+ onClick: () => r(),
32
+ children: /* @__PURE__ */ a(
32
33
  "svg",
33
34
  {
34
35
  viewBox: "0 0 24 24",
@@ -38,17 +39,17 @@ function w({
38
39
  fill: "none",
39
40
  stroke: "currentColor",
40
41
  strokeWidth: "2",
41
- children: /* @__PURE__ */ n("path", { d: "M3 12a9 9 0 1 0 3-6.7M3 4v4h4", strokeLinecap: "round", strokeLinejoin: "round" })
42
+ children: /* @__PURE__ */ a("path", { d: "M3 12a9 9 0 1 0 3-6.7M3 4v4h4", strokeLinecap: "round", strokeLinejoin: "round" })
42
43
  }
43
44
  )
44
45
  }
45
46
  ) : null
46
47
  ] }) : null,
47
- /* @__PURE__ */ n(m, { ...a })
48
+ /* @__PURE__ */ a(b, { ...e, "aria-labelledby": m })
48
49
  ] });
49
50
  }
50
51
  export {
51
- w as ValueSlider,
52
- w as default
52
+ N as ValueSlider,
53
+ N as default
53
54
  };
54
55
  //# sourceMappingURL=valueSlider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"valueSlider.js","sources":["../../../../../src/components/inputs/valueSlider/valueSlider.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { Slider, type SliderProps, type SliderValue } from \"../slider\";\n\nexport interface ValueSliderProps extends SliderProps {\n /**\n * Read-only value readout beside the label. `true` shows the raw value; pass a\n * formatter for units/precision (e.g. `(v) => `${v}%``). Reflects `value`.\n */\n readout?: boolean | ((value: SliderValue | undefined) => string);\n /** Content at the end of the header row — a reset button, a favourite star, etc. */\n endAdornment?: React.ReactNode;\n /** Renders a built-in reset control in the header; called on click. */\n onReset?: () => void;\n /** Accessible label for the reset control. */\n resetLabel?: string;\n}\n\nfunction formatReadout(readout: ValueSliderProps[\"readout\"], value: SliderValue | undefined): string {\n if (typeof readout === \"function\") return readout(value);\n if (Array.isArray(value)) return `${value[0]} – ${value[1]}`;\n return value == null ? \"\" : String(value);\n}\n\n/**\n * `Slider` plus the value-readout + adornment header row every app rebuilds: a\n * read-only formatted value next to the label, an optional reset \"eraser\", and an\n * `endAdornment` slot. A drop-in preset — all `Slider` props pass through; the\n * label is rendered in the header instead of inside Slider.\n */\nexport function ValueSlider({\n readout,\n endAdornment,\n onReset,\n resetLabel,\n label,\n className,\n ...sliderProps\n}: ValueSliderProps): React.ReactElement {\n const hasReadout = readout !== undefined && readout !== false;\n const showHeader = label != null || hasReadout || endAdornment != null || onReset != null;\n\n return (\n <div className={cn(\"smwb-value-slider\", className)}>\n {showHeader ? (\n <div className=\"smwb-value-slider__header\">\n {label != null ? <span className=\"smwb-value-slider__label\">{label}</span> : null}\n <span className=\"smwb-value-slider__spacer\" />\n {hasReadout ? (\n <span className=\"smwb-value-slider__readout\">{formatReadout(readout, sliderProps.value)}</span>\n ) : null}\n {endAdornment}\n {onReset != null ? (\n <button\n type=\"button\"\n className=\"smwb-value-slider__reset\"\n aria-label={resetLabel ?? \"Reset\"}\n disabled={!!sliderProps.disabled}\n onClick={() => onReset()}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n aria-hidden=\"true\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M3 12a9 9 0 1 0 3-6.7M3 4v4h4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n ) : null}\n </div>\n ) : null}\n <Slider {...sliderProps} />\n </div>\n );\n}\n\nexport default ValueSlider;\n"],"names":["formatReadout","readout","value","ValueSlider","endAdornment","onReset","resetLabel","label","className","sliderProps","hasReadout","showHeader","cn","jsxs","jsx","Slider"],"mappings":";;;AAkBA,SAASA,EAAcC,GAAsCC,GAAwC;AACnG,SAAI,OAAOD,KAAY,aAAmBA,EAAQC,CAAK,IACnD,MAAM,QAAQA,CAAK,IAAU,GAAGA,EAAM,CAAC,CAAC,MAAMA,EAAM,CAAC,CAAC,KACnDA,KAAS,OAAO,KAAK,OAAOA,CAAK;AAC1C;AAQO,SAASC,EAAY;AAAA,EAC1B,SAAAF;AAAA,EACA,cAAAG;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAAyC;AACvC,QAAMC,IAAaT,MAAY,UAAaA,MAAY,IAClDU,IAAaJ,KAAS,QAAQG,KAAcN,KAAgB,QAAQC,KAAW;AAErF,2BACG,OAAA,EAAI,WAAWO,EAAG,qBAAqBJ,CAAS,GAC9C,UAAA;AAAA,IAAAG,IACC,gBAAAE,EAAC,OAAA,EAAI,WAAU,6BACZ,UAAA;AAAA,MAAAN,KAAS,OAAO,gBAAAO,EAAC,QAAA,EAAK,WAAU,4BAA4B,aAAM,IAAU;AAAA,MAC7E,gBAAAA,EAAC,QAAA,EAAK,WAAU,4BAAA,CAA4B;AAAA,MAC3CJ,IACC,gBAAAI,EAAC,QAAA,EAAK,WAAU,8BAA8B,YAAcb,GAASQ,EAAY,KAAK,EAAA,CAAE,IACtF;AAAA,MACHL;AAAA,MACAC,KAAW,OACV,gBAAAS;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,cAAYR,KAAA,OAAAA,IAAc;AAAA,UAC1B,UAAU,CAAC,CAACG,EAAY;AAAA,UACxB,SAAS,MAAMJ,EAAA;AAAA,UAEf,UAAA,gBAAAS;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,OAAM;AAAA,cACN,QAAO;AAAA,cACP,eAAY;AAAA,cACZ,MAAK;AAAA,cACL,QAAO;AAAA,cACP,aAAY;AAAA,cAEZ,4BAAC,QAAA,EAAK,GAAE,iCAAgC,eAAc,SAAQ,gBAAe,QAAA,CAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,QACvF;AAAA,MAAA,IAEA;AAAA,IAAA,EAAA,CACN,IACE;AAAA,IACJ,gBAAAA,EAACC,GAAA,EAAQ,GAAGN,EAAA,CAAa;AAAA,EAAA,GAC3B;AAEJ;"}
1
+ {"version":3,"file":"valueSlider.js","sources":["../../../../../src/components/inputs/valueSlider/valueSlider.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { useId } from \"../../../hooks/useId\";\nimport { Slider, type SliderProps, type SliderValue } from \"../slider\";\n\nexport interface ValueSliderProps extends SliderProps {\n /**\n * Label text, drawn in the header row beside the readout. It names the slider,\n * as `Slider`'s label does; each thumb of a range adds its own word: with\n * `label=\"Price\"` they read \"Price minimum\" and \"Price maximum\".\n */\n label?: string;\n /**\n * Accessible name of the slider. Replaces the name the header `label` gives\n * it; a ValueSlider without a label needs it or `aria-labelledby`. Each thumb\n * of a range adds its own word, as with `label`.\n */\n \"aria-label\"?: string;\n /**\n * Read-only value readout beside the label. `true` shows the raw value; pass a\n * formatter for units/precision (e.g. `(v) => `${v}%``). Reflects `value`.\n */\n readout?: boolean | ((value: SliderValue | undefined) => string);\n /** Content at the end of the header row — a reset button, a favourite star, etc. */\n endAdornment?: React.ReactNode;\n /** Renders a built-in reset control in the header; called on click. */\n onReset?: () => void;\n /** Accessible label for the reset control. */\n resetLabel?: string;\n}\n\nfunction formatReadout(readout: ValueSliderProps[\"readout\"], value: SliderValue | undefined): string {\n if (typeof readout === \"function\") return readout(value);\n if (Array.isArray(value)) return `${value[0]} – ${value[1]}`;\n return value == null ? \"\" : String(value);\n}\n\n/**\n * `Slider` plus the value-readout + adornment header row every app rebuilds: a\n * read-only formatted value next to the label, an optional reset \"eraser\", and an\n * `endAdornment` slot. A drop-in preset — all `Slider` props pass through; the\n * label is rendered in the header instead of inside Slider.\n */\nexport function ValueSlider({\n readout,\n endAdornment,\n onReset,\n resetLabel,\n label,\n className,\n ...sliderProps\n}: ValueSliderProps): React.ReactElement {\n const hasReadout = readout !== undefined && readout !== false;\n const showHeader = label != null || hasReadout || endAdornment != null || onReset != null;\n // The header label names the slider through Slider's aria-labelledby, which\n // goes on its range input (each thumb of a range adds its own word). A\n // caller's aria-label or aria-labelledby replaces it, as with Slider's label.\n const labelId = `${useId()}-label`;\n const labelledBy = sliderProps[\"aria-labelledby\"] || (label && !sliderProps[\"aria-label\"] ? labelId : undefined);\n\n return (\n <div className={cn(\"smwb-value-slider\", className)}>\n {showHeader ? (\n <div className=\"smwb-value-slider__header\">\n {label != null ? (\n <span id={labelId} className=\"smwb-value-slider__label\">\n {label}\n </span>\n ) : null}\n <span className=\"smwb-value-slider__spacer\" />\n {hasReadout ? (\n <span className=\"smwb-value-slider__readout\">{formatReadout(readout, sliderProps.value)}</span>\n ) : null}\n {endAdornment}\n {onReset != null ? (\n <button\n type=\"button\"\n className=\"smwb-value-slider__reset\"\n aria-label={resetLabel ?? \"Reset\"}\n disabled={!!sliderProps.disabled}\n onClick={() => onReset()}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n aria-hidden=\"true\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M3 12a9 9 0 1 0 3-6.7M3 4v4h4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n ) : null}\n </div>\n ) : null}\n <Slider {...sliderProps} aria-labelledby={labelledBy} />\n </div>\n );\n}\n\nexport default ValueSlider;\n"],"names":["formatReadout","readout","value","ValueSlider","endAdornment","onReset","resetLabel","label","className","sliderProps","hasReadout","showHeader","labelId","useId","labelledBy","cn","jsxs","jsx","Slider"],"mappings":";;;;AA+BA,SAASA,EAAcC,GAAsCC,GAAwC;AACnG,SAAI,OAAOD,KAAY,aAAmBA,EAAQC,CAAK,IACnD,MAAM,QAAQA,CAAK,IAAU,GAAGA,EAAM,CAAC,CAAC,MAAMA,EAAM,CAAC,CAAC,KACnDA,KAAS,OAAO,KAAK,OAAOA,CAAK;AAC1C;AAQO,SAASC,EAAY;AAAA,EAC1B,SAAAF;AAAA,EACA,cAAAG;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAAyC;AACvC,QAAMC,IAAaT,MAAY,UAAaA,MAAY,IAClDU,IAAaJ,KAAS,QAAQG,KAAcN,KAAgB,QAAQC,KAAW,MAI/EO,IAAU,GAAGC,EAAA,CAAO,UACpBC,IAAaL,EAAY,iBAAiB,MAAMF,KAAS,CAACE,EAAY,YAAY,IAAIG,IAAU;AAEtG,2BACG,OAAA,EAAI,WAAWG,EAAG,qBAAqBP,CAAS,GAC9C,UAAA;AAAA,IAAAG,IACC,gBAAAK,EAAC,OAAA,EAAI,WAAU,6BACZ,UAAA;AAAA,MAAAT,KAAS,yBACP,QAAA,EAAK,IAAIK,GAAS,WAAU,4BAC1B,aACH,IACE;AAAA,MACJ,gBAAAK,EAAC,QAAA,EAAK,WAAU,4BAAA,CAA4B;AAAA,MAC3CP,IACC,gBAAAO,EAAC,QAAA,EAAK,WAAU,8BAA8B,YAAchB,GAASQ,EAAY,KAAK,EAAA,CAAE,IACtF;AAAA,MACHL;AAAA,MACAC,KAAW,OACV,gBAAAY;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,cAAYX,KAAA,OAAAA,IAAc;AAAA,UAC1B,UAAU,CAAC,CAACG,EAAY;AAAA,UACxB,SAAS,MAAMJ,EAAA;AAAA,UAEf,UAAA,gBAAAY;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,OAAM;AAAA,cACN,QAAO;AAAA,cACP,eAAY;AAAA,cACZ,MAAK;AAAA,cACL,QAAO;AAAA,cACP,aAAY;AAAA,cAEZ,4BAAC,QAAA,EAAK,GAAE,iCAAgC,eAAc,SAAQ,gBAAe,QAAA,CAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,QACvF;AAAA,MAAA,IAEA;AAAA,IAAA,EAAA,CACN,IACE;AAAA,IACJ,gBAAAA,EAACC,GAAA,EAAQ,GAAGT,GAAa,mBAAiBK,EAAA,CAAY;AAAA,EAAA,GACxD;AAEJ;"}