@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,50 +1,61 @@
1
- import { jsxs as r, jsx as e, Fragment as k } from "react/jsx-runtime";
2
- import d from "clsx";
3
- import { TextFieldAdornment as a } from "./textFieldAdornment.js";
4
- function T({
1
+ import { jsxs as n, jsx as e, Fragment as L } from "react/jsx-runtime";
2
+ import i from "clsx";
3
+ import { TextFieldAdornment as f } from "./textFieldAdornment.js";
4
+ import { hasHelperText as M } from "../../../hooks/useHelperText.js";
5
+ function y({
5
6
  label: s,
6
- helperText: i = /* @__PURE__ */ e(k, { children: " " }),
7
+ helperText: d,
8
+ helperTextId: h,
7
9
  variant: l,
8
- disabled: f,
9
- className: h,
10
- error: x,
11
- fullWidth: w,
12
- isFilledState: b,
10
+ disabled: x,
11
+ className: w,
12
+ error: b,
13
+ fullWidth: p,
14
+ isFilledState: _,
13
15
  isFocused: c,
14
- htmlFor: _,
15
- shrink: p,
16
- children: N,
17
- onHolderMouseDown: u,
16
+ htmlFor: N,
17
+ labelId: u,
18
+ shrink: v,
19
+ children: F,
20
+ onHolderMouseDown: g,
18
21
  startAdornment: o,
19
- endAdornment: m,
22
+ endAdornment: r,
20
23
  inline: t,
21
- ...F
24
+ "data-testid": j = "text-field",
25
+ ...C
22
26
  }) {
23
- const g = l === "filled", n = s && (b || c || p), j = d(h, "smwb-text-field", {
24
- "smwb-text-field--filled": !t && g,
27
+ const k = l === "filled", m = s && (_ || c || v), a = d === void 0 ? /* @__PURE__ */ e(L, { children: " " }) : d, B = i(w, "smwb-text-field", {
28
+ "smwb-text-field--filled": !t && k,
25
29
  "smwb-text-field--inline": t,
26
30
  "smwb-text-field--focused": !t && c,
27
- "smwb-text-field--error": x,
28
- "smwb-text-field--disabled": f,
29
- "smwb-text-field--full-width": w
30
- }), v = d("smwb-text-field__label", {
31
- "smwb-text-field__label--shrink": n
32
- }), C = d("smwb-text-field__notched", {
31
+ "smwb-text-field--error": b,
32
+ "smwb-text-field--disabled": x,
33
+ "smwb-text-field--full-width": p
34
+ }), D = i("smwb-text-field__label", {
35
+ "smwb-text-field__label--shrink": m
36
+ }), H = i("smwb-text-field__notched", {
33
37
  "smwb-text-field__notched--with-label": s,
34
- "smwb-text-field__notched--active": n
38
+ "smwb-text-field__notched--active": m
35
39
  });
36
- return /* @__PURE__ */ r("div", { className: j, ...F, "data-testid": "text-field", children: [
37
- !t && s && /* @__PURE__ */ e("label", { className: v, htmlFor: _ || "", children: s }),
38
- /* @__PURE__ */ r("div", { className: "smwb-text-field__input-holder", onMouseDown: u, children: [
39
- o && /* @__PURE__ */ e(a, { variant: l, inline: !!t, position: "start", children: o }),
40
- N,
41
- m && /* @__PURE__ */ e(a, { position: "end", children: m }),
42
- !t && l === "outlined" && /* @__PURE__ */ e("fieldset", { className: C, children: /* @__PURE__ */ e("legend", { children: s ? /* @__PURE__ */ e("span", { children: s }) : /* @__PURE__ */ e("span", { className: "smwb-notranslate", children: "​" }) }) })
40
+ return /* @__PURE__ */ n("div", { className: B, ...C, "data-testid": j, children: [
41
+ !t && s && /* @__PURE__ */ e("label", { id: u, className: D, htmlFor: N, children: s }),
42
+ /* @__PURE__ */ n("div", { className: "smwb-text-field__input-holder", onMouseDown: g, children: [
43
+ o && /* @__PURE__ */ e(f, { variant: l, inline: !!t, position: "start", children: o }),
44
+ F,
45
+ r && /* @__PURE__ */ e(f, { position: "end", children: r }),
46
+ !t && l === "outlined" && /* @__PURE__ */ e("fieldset", { className: H, children: /* @__PURE__ */ e("legend", { children: s ? /* @__PURE__ */ e("span", { children: s }) : /* @__PURE__ */ e("span", { className: "smwb-notranslate", children: "​" }) }) })
43
47
  ] }),
44
- !t && i && /* @__PURE__ */ e("p", { className: "smwb-text-field__helper-line", children: /* @__PURE__ */ e("span", { className: "smwb-text-field__helper-text", children: i }) })
48
+ !t && a && /* @__PURE__ */ e("p", { className: "smwb-text-field__helper-line", children: /* @__PURE__ */ e(
49
+ "span",
50
+ {
51
+ className: "smwb-text-field__helper-text",
52
+ id: M(d, t) ? h : void 0,
53
+ children: a
54
+ }
55
+ ) })
45
56
  ] });
46
57
  }
47
58
  export {
48
- T as TextFieldWrapper
59
+ y as TextFieldWrapper
49
60
  };
50
61
  //# sourceMappingURL=textFieldWrapper.js.map
@@ -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,118 +1,124 @@
1
- import { jsxs as U, Fragment as $, jsx as n } from "react/jsx-runtime";
1
+ import { jsxs as $, Fragment as q, jsx as i } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/timePicker/timePicker.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import q, { useMemo as z, useState as m, useRef as C, useCallback as i } from "react";
5
- import { useFloating as G, autoUpdate as H } from "@floating-ui/react";
6
- import J from "react-transition-group/Transition";
7
- import { resolvePlacement as K, buildFloatingMiddleware as Q } from "../../../utils/floating.js";
4
+ import z, { useMemo as G, useState as y, useRef as T, useCallback as m, useEffect as H } from "react";
5
+ import { useFloating as J, autoUpdate as Q } from "@floating-ui/react";
6
+ import W from "react-transition-group/Transition";
7
+ import { resolvePlacement as X, buildFloatingMiddleware as Y } from "../../../utils/floating.js";
8
8
  import { useSafeLayoutEffect as P } from "../../../hooks/useSafeLayoutEffect.js";
9
- import { useForkRef as T } from "../../../hooks/useForkRef.js";
10
- import { TimePickerInput as W } from "./timePickerInput.js";
11
- import { TimePickerColumns as X } from "./timePickerColumns.js";
12
- import { isValidTimeDate as F } from "./timeUtils.js";
13
- import { createPortal as Y } from "react-dom";
14
- import { ClickAwayListener as Z } from "../../clickAwayListener/clickAwayListener.js";
15
- const ee = (u) => ({
16
- transition: `opacity ${u}ms ease-in-out`,
9
+ import { useForkRef as F } from "../../../hooks/useForkRef.js";
10
+ import { isTopOverlayLayer as Z } from "../../../utils/overlayLayer.js";
11
+ import { TimePickerInput as ee } from "./timePickerInput.js";
12
+ import { TimePickerColumns as te } from "./timePickerColumns.js";
13
+ import { isValidTimeDate as L } from "./timeUtils.js";
14
+ import { createPortal as oe } from "react-dom";
15
+ import { ClickAwayListener as ne } from "../../clickAwayListener/clickAwayListener.js";
16
+ const re = (k) => ({
17
+ transition: `opacity ${k}ms ease-in-out`,
17
18
  opacity: 0
18
- }), te = {
19
+ }), ie = {
19
20
  entering: { opacity: 1 },
20
21
  entered: { opacity: 1 },
21
22
  exiting: { opacity: 0 }
22
- }, ge = q.forwardRef(function(a, S) {
23
+ }, he = z.forwardRef(function(u, O) {
23
24
  const {
24
- value: l,
25
- onChange: r,
26
- placement: x = "bottom-start",
25
+ value: f,
26
+ onChange: a,
27
+ placement: D = "bottom-start",
27
28
  disabled: t,
28
- disableClock: f,
29
- clockAriaLabel: D = "Choose time",
30
- format: d,
31
- onBlur: E,
32
- ...O
33
- } = a, 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({
34
- open: k,
35
- placement: w.placement,
36
- whileElementsMounted: H,
37
- middleware: Q(w)
38
- }), B = T(g, y.setReference, S), L = T(c, y.setFloating), [v, M] = m();
29
+ disableClock: v,
30
+ clockAriaLabel: S = "Choose time",
31
+ format: w,
32
+ onBlur: x,
33
+ ...V
34
+ } = 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({
35
+ open: b,
36
+ placement: h.placement,
37
+ whileElementsMounted: Q,
38
+ middleware: Y(h)
39
+ }), M = F(d, R.setReference, O), j = F(c, R.setFloating), [C, I] = y();
39
40
  P(() => {
40
- M(document.body);
41
+ I(document.body);
41
42
  }, []), P(() => {
42
- t || p(F(o) ? o : /* @__PURE__ */ new Date());
43
+ t || g(L(o) ? o : /* @__PURE__ */ new Date());
43
44
  }, [o, t]);
44
- const j = i(() => {
45
+ const N = m(() => {
45
46
  t || s((e) => !e);
46
- }, [t]), I = i((e) => {
47
- var h, R;
48
- const b = e.target;
49
- (h = c.current) != null && h.contains(b) || (R = g.current) != null && R.contains(b) || s(!1);
50
- }, []), N = i(
47
+ }, [t]), _ = m((e) => {
48
+ var n, r;
49
+ const l = e.target;
50
+ (n = c.current) != null && n.contains(l) || (r = d.current) != null && r.contains(l) || s(!1);
51
+ }, []), p = b && !t && !v;
52
+ H(() => {
53
+ if (!p)
54
+ return;
55
+ const e = (l) => {
56
+ var E;
57
+ const n = c.current;
58
+ if (l.key !== "Escape" || !n || !Z(n))
59
+ return;
60
+ s(!1);
61
+ const r = document.activeElement;
62
+ (!r || r === document.body || n.contains(r)) && ((E = d.current) == null || E.focus());
63
+ };
64
+ return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
65
+ }, [p]);
66
+ const K = m(
51
67
  (e) => {
52
- p(e), r == null || r(void 0, e, a);
68
+ g(e), a == null || a(void 0, e, u);
53
69
  },
54
- [r, a]
55
- ), _ = i(() => {
70
+ [a, u]
71
+ ), U = m(() => {
56
72
  s(!1);
57
73
  }, []);
58
- return /* @__PURE__ */ U($, { children: [
59
- /* @__PURE__ */ n(
60
- W,
74
+ return /* @__PURE__ */ $(q, { children: [
75
+ /* @__PURE__ */ i(
76
+ ee,
61
77
  {
62
- ref: B,
78
+ ref: M,
63
79
  value: o,
64
- onChange: r,
65
- onBlur: E,
66
- onToggle: j,
80
+ onChange: a,
81
+ onBlur: x,
82
+ onToggle: N,
67
83
  disabled: t,
68
- disableClock: f,
69
- format: d,
70
- ...O
84
+ disableClock: v,
85
+ format: w,
86
+ ...V
71
87
  }
72
88
  ),
73
- v ? Y(
74
- /* @__PURE__ */ n(
75
- J,
89
+ C ? oe(
90
+ /* @__PURE__ */ i(W, { nodeRef: c, in: p, timeout: 150, mountOnEnter: !0, unmountOnExit: !0, children: (e) => /* @__PURE__ */ i(ne, { onClickAway: _, children: /* @__PURE__ */ i(
91
+ "div",
76
92
  {
77
- nodeRef: c,
78
- in: k && !t && !f,
79
- timeout: 150,
80
- mountOnEnter: !0,
81
- unmountOnExit: !0,
82
- children: (e) => /* @__PURE__ */ n(Z, { onClickAway: I, children: /* @__PURE__ */ n(
83
- "div",
93
+ ref: j,
94
+ className: "smwb-date-picker smwb-time-picker",
95
+ style: {
96
+ ...B,
97
+ ...re(150),
98
+ ...ie[e]
99
+ },
100
+ "data-testid": "time-picker",
101
+ "data-smwb-overlay-layer": "",
102
+ role: "dialog",
103
+ "aria-modal": "false",
104
+ "aria-label": S,
105
+ children: /* @__PURE__ */ i("div", { className: "smwb-date-picker__inner", children: /* @__PURE__ */ i(
106
+ te,
84
107
  {
85
- ref: L,
86
- className: "smwb-date-picker smwb-time-picker",
87
- style: {
88
- ...A,
89
- ...ee(150),
90
- ...te[e]
91
- },
92
- "data-testid": "time-picker",
93
- "data-smwb-overlay-layer": "",
94
- role: "dialog",
95
- "aria-modal": "false",
96
- "aria-label": D,
97
- children: /* @__PURE__ */ n("div", { className: "smwb-date-picker__inner", children: /* @__PURE__ */ n(
98
- X,
99
- {
100
- value: V,
101
- format: d,
102
- onChange: N,
103
- onComplete: _
104
- }
105
- ) })
108
+ value: A,
109
+ format: w,
110
+ onChange: K,
111
+ onComplete: U
106
112
  }
107
113
  ) })
108
114
  }
109
- ),
110
- v
115
+ ) }) }),
116
+ C
111
117
  ) : null
112
118
  ] });
113
119
  });
114
120
  export {
115
- ge as TimePicker,
116
- ge as default
121
+ he as TimePicker,
122
+ he as default
117
123
  };
118
124
  //# 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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"}
@@ -2,6 +2,10 @@ import React, { InputHTMLAttributes } from "react";
2
2
  import type { SelectionControlColor, SelectionControlSize } from "../checkbox/checkbox";
3
3
  export interface ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "onChange" | "size"> {
4
4
  disabled?: boolean;
5
+ /**
6
+ * Keeps the switch as it is: clicks on it or its label and Space change nothing, and `onChange` is not called.
7
+ * It stays focusable, and its input tells assistive technology it is read-only (`aria-readonly`).
8
+ */
5
9
  readOnly?: boolean;
6
10
  required?: boolean;
7
11
  checked?: boolean;
@@ -1,71 +1,90 @@
1
- import { jsx as a, jsxs as g } from "react/jsx-runtime";
1
+ import { jsx as i, jsxs as w } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/toggle/toggle.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import k from "react";
5
- import b from "clsx";
6
- import { useId as v } from "../../../hooks/useId.js";
7
- import { TextFieldWrapper as y } from "../textField/textFieldWrapper.js";
8
- const R = k.forwardRef(function(e, h) {
4
+ import p from "react";
5
+ import f from "clsx";
6
+ import { useHelperText as v } from "../../../hooks/useHelperText.js";
7
+ import { useId as B } from "../../../hooks/useId.js";
8
+ import { cancelToggle as $, forgetCancelledToggle as j } from "../../../utils/readOnlyToggle.js";
9
+ import { TextFieldWrapper as q } from "../textField/textFieldWrapper.js";
10
+ const E = p.forwardRef(function(e, _) {
9
11
  const {
10
- disabled: l,
11
- readOnly: r,
12
- required: o,
13
- checked: s,
14
- className: w,
15
- id: _,
16
- label: m,
17
- labelPlacement: c,
18
- size: f = "medium",
19
- color: u = "primary",
20
- helperText: p,
21
- error: i,
22
- ...x
23
- } = e, n = v(_), N = (t) => {
24
- var d;
25
- if (r) {
26
- t.preventDefault();
12
+ disabled: o,
13
+ readOnly: l,
14
+ required: t,
15
+ checked: c,
16
+ className: u,
17
+ id: x,
18
+ label: d,
19
+ labelPlacement: s,
20
+ size: y = "medium",
21
+ color: k = "primary",
22
+ helperText: m,
23
+ error: n,
24
+ "aria-describedby": N,
25
+ ...g
26
+ } = e, b = B(x), h = v(m, { describedBy: N }), T = (a) => {
27
+ var r;
28
+ if (l) {
29
+ j(a, c);
27
30
  return;
28
31
  }
29
- (d = e.onChange) == null || d.call(e, t, t.target.checked, e);
32
+ (r = e.onChange) == null || r.call(e, a, a.target.checked, e);
33
+ }, C = (a) => {
34
+ var r;
35
+ (r = e.onClick) == null || r.call(e, a), l && $(a, c);
30
36
  };
31
- return /* @__PURE__ */ a(y, { helperText: p, disabled: l, error: i, className: "smwb-text-field-checkbox", children: /* @__PURE__ */ g("span", { className: b("smwb-toggle__wrapper", c && `smwb-toggle__wrapper_label-${c}`), children: [
32
- m ? /* @__PURE__ */ a("label", { htmlFor: n, className: "smwb-toggle__label", children: m }) : null,
33
- /* @__PURE__ */ g(
34
- "label",
35
- {
36
- className: b("smwb-toggle", `smwb-toggle_size-${f}`, `smwb-toggle_color-${u}`, w, {
37
- "smwb-disabled": l,
38
- "smwb-readonly": r
39
- }),
40
- children: [
41
- /* @__PURE__ */ a(
42
- "input",
43
- {
44
- type: "checkbox",
45
- id: n,
46
- className: "smwb-toggle__checkbox",
47
- "aria-checked": s,
48
- "aria-invalid": i || void 0,
49
- "aria-required": o || void 0,
50
- role: "switch",
51
- checked: s,
52
- disabled: l,
53
- readOnly: r,
54
- required: o,
55
- ref: h,
56
- ...x,
57
- onChange: N
58
- }
59
- ),
60
- /* @__PURE__ */ a("span", { className: "smwb-toggle__track" }),
61
- /* @__PURE__ */ a("span", { className: "smwb-toggle__thumb" })
62
- ]
63
- }
64
- )
65
- ] }) });
37
+ return /* @__PURE__ */ i(
38
+ q,
39
+ {
40
+ helperText: m,
41
+ helperTextId: h.id,
42
+ disabled: o,
43
+ error: n,
44
+ className: "smwb-text-field-checkbox",
45
+ children: /* @__PURE__ */ w("span", { className: f("smwb-toggle__wrapper", s && `smwb-toggle__wrapper_label-${s}`), children: [
46
+ d ? /* @__PURE__ */ i("label", { htmlFor: b, className: "smwb-toggle__label", children: d }) : null,
47
+ /* @__PURE__ */ w(
48
+ "label",
49
+ {
50
+ className: f("smwb-toggle", `smwb-toggle_size-${y}`, `smwb-toggle_color-${k}`, u, {
51
+ "smwb-disabled": o,
52
+ "smwb-readonly": l
53
+ }),
54
+ children: [
55
+ /* @__PURE__ */ i(
56
+ "input",
57
+ {
58
+ type: "checkbox",
59
+ id: b,
60
+ className: "smwb-toggle__checkbox",
61
+ "aria-checked": c,
62
+ "aria-invalid": n || void 0,
63
+ "aria-required": t || void 0,
64
+ "aria-describedby": h.describedBy,
65
+ role: "switch",
66
+ checked: c,
67
+ disabled: o,
68
+ readOnly: l,
69
+ required: t,
70
+ ref: _,
71
+ ...g,
72
+ "aria-readonly": l || g["aria-readonly"],
73
+ onChange: T,
74
+ onClick: C
75
+ }
76
+ ),
77
+ /* @__PURE__ */ i("span", { className: "smwb-toggle__track" }),
78
+ /* @__PURE__ */ i("span", { className: "smwb-toggle__thumb" })
79
+ ]
80
+ }
81
+ )
82
+ ] })
83
+ }
84
+ );
66
85
  });
67
86
  export {
68
- R as Toggle,
69
- R as default
87
+ E as Toggle,
88
+ E as default
70
89
  };
71
90
  //# 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":";;;;;;;AAyBO,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":";;;;;;;;;AA+BO,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,6 +1,18 @@
1
1
  import React from "react";
2
2
  import { type SliderProps, type SliderValue } from "../slider";
3
3
  export interface ValueSliderProps extends SliderProps {
4
+ /**
5
+ * Label text, drawn in the header row beside the readout. It names the slider,
6
+ * as `Slider`'s label does; each thumb of a range adds its own word: with
7
+ * `label="Price"` they read "Price minimum" and "Price maximum".
8
+ */
9
+ label?: string;
10
+ /**
11
+ * Accessible name of the slider. Replaces the name the header `label` gives
12
+ * it; a ValueSlider without a label needs it or `aria-labelledby`. Each thumb
13
+ * of a range adds its own word, as with `label`.
14
+ */
15
+ "aria-label"?: string;
4
16
  /**
5
17
  * Read-only value readout beside the label. `true` shows the raw value; pass a
6
18
  * formatter for units/precision (e.g. `(v) => `${v}%``). Reflects `value`.