@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,49 +1,52 @@
1
1
  import { jsx as l } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/skeleton/skeleton.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import { forwardRef as u } from "react";
5
- import g from "clsx";
6
- const d = (e) => typeof e == "number" ? `${e}px` : e, C = u(function({
7
- className: f,
8
- variant: p = "text",
9
- width: k,
10
- height: c,
11
- animation: o = "pulse",
12
- count: t = 1,
13
- animationDelay: r,
14
- component: h = "span",
15
- style: w,
16
- ...m
17
- }, a) {
18
- const b = g(
4
+ import { forwardRef as S } from "react";
5
+ import $ from "clsx";
6
+ const w = (o) => typeof o == "number" ? `${o}px` : o, O = S(function({
7
+ className: c,
8
+ variant: d = "text",
9
+ width: b,
10
+ height: _,
11
+ animation: s = "pulse",
12
+ count: n = 1,
13
+ animationDelay: m,
14
+ component: g = "span",
15
+ style: e,
16
+ "data-testid": r,
17
+ ...a
18
+ }, f) {
19
+ const u = $(
19
20
  "smwb-skeleton",
20
- `smwb-skeleton_${p}`,
21
- o === !1 ? "smwb-skeleton_no-animation" : `smwb-skeleton_${o}`,
22
- f
23
- ), _ = h, i = (s) => {
24
- const n = {
25
- ...w,
26
- width: d(k),
27
- height: d(c),
28
- ...r ? { animationDelay: `${s * r}ms` } : {}
21
+ `smwb-skeleton_${d}`,
22
+ s === !1 ? "smwb-skeleton_no-animation" : `smwb-skeleton_${s}`,
23
+ c
24
+ ), x = g, h = (t) => {
25
+ var k, p;
26
+ const i = {
27
+ ...e,
28
+ // An unset prop keeps the width or height the caller set in `style`.
29
+ width: (k = w(b)) != null ? k : e == null ? void 0 : e.width,
30
+ height: (p = w(_)) != null ? p : e == null ? void 0 : e.height,
31
+ ...m ? { animationDelay: `${t * m}ms` } : {}
29
32
  };
30
33
  return /* @__PURE__ */ l(
31
- _,
34
+ x,
32
35
  {
33
- ref: t === 1 ? a : void 0,
34
- ...t === 1 ? m : {},
35
- "data-testid": "skeleton",
36
+ ref: n === 1 ? f : void 0,
37
+ ...n === 1 ? a : {},
38
+ "data-testid": n === 1 && r != null ? r : "skeleton",
36
39
  "aria-hidden": "true",
37
- className: b,
38
- style: n
40
+ className: u,
41
+ style: i
39
42
  },
40
- s
43
+ t
41
44
  );
42
45
  };
43
- return t === 1 ? i(0) : /* @__PURE__ */ l("span", { ref: a, ...m, className: "smwb-skeleton__group", "aria-hidden": "true", children: Array.from({ length: t }, (s, n) => i(n)) });
46
+ return n === 1 ? h(0) : /* @__PURE__ */ l("span", { ref: f, ...a, "data-testid": r, className: "smwb-skeleton__group", "aria-hidden": "true", children: Array.from({ length: n }, (t, i) => h(i)) });
44
47
  });
45
48
  export {
46
- C as Skeleton,
47
- C as default
49
+ O as Skeleton,
50
+ O as default
48
51
  };
49
52
  //# sourceMappingURL=skeleton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.js","sources":["../../../../src/components/feedBack/skeleton/skeleton.tsx"],"sourcesContent":["import { CSSProperties, forwardRef, HTMLAttributes } from \"react\";\nimport cn from \"clsx\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLElement> {\n className?: string;\n /** Shape of the placeholder. */\n variant?: \"text\" | \"circular\" | \"rounded\" | \"rectangular\";\n /** Width — number (px) or any CSS length. */\n width?: number | string;\n /** Height — number (px) or any CSS length. */\n height?: number | string;\n /** Shimmer animation; pass false to disable. */\n animation?: \"pulse\" | \"wave\" | false;\n /** Render N stacked placeholders. */\n count?: number;\n /** Stagger consecutive items by N ms (with `count`). */\n animationDelay?: number;\n /** Root element. */\n component?: \"span\" | \"div\";\n}\n\nconst toCssSize = (value?: number | string): string | undefined => (typeof value === \"number\" ? `${value}px` : value);\n\nexport const Skeleton = forwardRef<HTMLElement, SkeletonProps>(function Skeleton(\n {\n className,\n variant = \"text\",\n width,\n height,\n animation = \"pulse\",\n count = 1,\n animationDelay,\n component = \"span\",\n style,\n ...props\n },\n ref\n) {\n const skeletonClassName = cn(\n \"smwb-skeleton\",\n `smwb-skeleton_${variant}`,\n animation === false ? \"smwb-skeleton_no-animation\" : `smwb-skeleton_${animation}`,\n className\n );\n\n const Tag = component as \"span\";\n\n const renderOne = (i: number) => {\n const inlineStyle: CSSProperties = {\n ...style,\n width: toCssSize(width),\n height: toCssSize(height),\n ...(animationDelay ? { animationDelay: `${i * animationDelay}ms` } : {}),\n };\n return (\n <Tag\n key={i}\n ref={count === 1 ? ref : undefined}\n {...(count === 1 ? props : {})}\n data-testid=\"skeleton\"\n aria-hidden=\"true\"\n className={skeletonClassName}\n style={inlineStyle}\n />\n );\n };\n\n if (count === 1) {\n return renderOne(0);\n }\n\n return (\n <span ref={ref} {...props} className=\"smwb-skeleton__group\" aria-hidden=\"true\">\n {Array.from({ length: count }, (_, i) => renderOne(i))}\n </span>\n );\n});\n\nexport default Skeleton;\n"],"names":["toCssSize","value","Skeleton","forwardRef","className","variant","width","height","animation","count","animationDelay","component","style","props","ref","skeletonClassName","cn","Tag","renderOne","i","inlineStyle","jsx","_"],"mappings":";;;;;AAuBA,MAAMA,IAAY,CAACC,MAAiD,OAAOA,KAAU,WAAW,GAAGA,CAAK,OAAOA,GAElGC,IAAWC,EAAuC,SAC7D;AAAA,EACE,WAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ;AAAA,EACR,gBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAoBC;AAAA,IACxB;AAAA,IACA,iBAAiBX,CAAO;AAAA,IACxBG,MAAc,KAAQ,+BAA+B,iBAAiBA,CAAS;AAAA,IAC/EJ;AAAA,EAAA,GAGIa,IAAMN,GAENO,IAAY,CAACC,MAAc;AAC/B,UAAMC,IAA6B;AAAA,MACjC,GAAGR;AAAA,MACH,OAAOZ,EAAUM,CAAK;AAAA,MACtB,QAAQN,EAAUO,CAAM;AAAA,MACxB,GAAIG,IAAiB,EAAE,gBAAgB,GAAGS,IAAIT,CAAc,SAAS,CAAA;AAAA,IAAC;AAExE,WACE,gBAAAW;AAAA,MAACJ;AAAA,MAAA;AAAA,QAEC,KAAKR,MAAU,IAAIK,IAAM;AAAA,QACxB,GAAIL,MAAU,IAAII,IAAQ,CAAA;AAAA,QAC3B,eAAY;AAAA,QACZ,eAAY;AAAA,QACZ,WAAWE;AAAA,QACX,OAAOK;AAAA,MAAA;AAAA,MANFD;AAAA,IAAA;AAAA,EASX;AAEA,SAAIV,MAAU,IACLS,EAAU,CAAC,IAIlB,gBAAAG,EAAC,UAAK,KAAAP,GAAW,GAAGD,GAAO,WAAU,wBAAuB,eAAY,QACrE,UAAA,MAAM,KAAK,EAAE,QAAQJ,KAAS,CAACa,GAAGH,MAAMD,EAAUC,CAAC,CAAC,GACvD;AAEJ,CAAC;"}
1
+ {"version":3,"file":"skeleton.js","sources":["../../../../src/components/feedBack/skeleton/skeleton.tsx"],"sourcesContent":["import { CSSProperties, forwardRef, HTMLAttributes } from \"react\";\nimport cn from \"clsx\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLElement> {\n className?: string;\n /** Shape of the placeholder. */\n variant?: \"text\" | \"circular\" | \"rounded\" | \"rectangular\";\n /** Width — number (px) or any CSS length. */\n width?: number | string;\n /** Height — number (px) or any CSS length. */\n height?: number | string;\n /** Shimmer animation; pass false to disable. */\n animation?: \"pulse\" | \"wave\" | false;\n /**\n * Render N stacked placeholders. With `count` > 1 they sit in a group `<span>`, which takes the `ref` and the\n * other HTML attributes; `className` and `style` go on each placeholder.\n */\n count?: number;\n /** Stagger consecutive items by N ms (with `count`). */\n animationDelay?: number;\n /** Element of each placeholder. */\n component?: \"span\" | \"div\";\n /**\n * Test id of the placeholder; `skeleton` unless given. With `count` > 1 it\n * marks the group, and each placeholder keeps `skeleton`.\n */\n \"data-testid\"?: string;\n}\n\nconst toCssSize = (value?: number | string): string | undefined => (typeof value === \"number\" ? `${value}px` : value);\n\nexport const Skeleton = forwardRef<HTMLElement, SkeletonProps>(function Skeleton(\n {\n className,\n variant = \"text\",\n width,\n height,\n animation = \"pulse\",\n count = 1,\n animationDelay,\n component = \"span\",\n style,\n \"data-testid\": dataTestId,\n ...props\n },\n ref\n) {\n const skeletonClassName = cn(\n \"smwb-skeleton\",\n `smwb-skeleton_${variant}`,\n animation === false ? \"smwb-skeleton_no-animation\" : `smwb-skeleton_${animation}`,\n className\n );\n\n const Tag = component as \"span\";\n\n const renderOne = (i: number) => {\n const inlineStyle: CSSProperties = {\n ...style,\n // An unset prop keeps the width or height the caller set in `style`.\n width: toCssSize(width) ?? style?.width,\n height: toCssSize(height) ?? style?.height,\n ...(animationDelay ? { animationDelay: `${i * animationDelay}ms` } : {}),\n };\n return (\n <Tag\n key={i}\n ref={count === 1 ? ref : undefined}\n {...(count === 1 ? props : {})}\n data-testid={count === 1 ? (dataTestId ?? \"skeleton\") : \"skeleton\"}\n aria-hidden=\"true\"\n className={skeletonClassName}\n style={inlineStyle}\n />\n );\n };\n\n if (count === 1) {\n return renderOne(0);\n }\n\n return (\n <span ref={ref} {...props} data-testid={dataTestId} className=\"smwb-skeleton__group\" aria-hidden=\"true\">\n {Array.from({ length: count }, (_, i) => renderOne(i))}\n </span>\n );\n});\n\nexport default Skeleton;\n"],"names":["toCssSize","value","Skeleton","forwardRef","className","variant","width","height","animation","count","animationDelay","component","style","dataTestId","props","ref","skeletonClassName","cn","Tag","renderOne","i","inlineStyle","_a","_b","jsx","_"],"mappings":";;;;;AA+BA,MAAMA,IAAY,CAACC,MAAiD,OAAOA,KAAU,WAAW,GAAGA,CAAK,OAAOA,GAElGC,IAAWC,EAAuC,SAC7D;AAAA,EACE,WAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ;AAAA,EACR,gBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,eAAeC;AAAA,EACf,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAoBC;AAAA,IACxB;AAAA,IACA,iBAAiBZ,CAAO;AAAA,IACxBG,MAAc,KAAQ,+BAA+B,iBAAiBA,CAAS;AAAA,IAC/EJ;AAAA,EAAA,GAGIc,IAAMP,GAENQ,IAAY,CAACC,MAAc;;AAC/B,UAAMC,IAA6B;AAAA,MACjC,GAAGT;AAAA;AAAA,MAEH,QAAOU,IAAAtB,EAAUM,CAAK,MAAf,OAAAgB,IAAoBV,KAAA,gBAAAA,EAAO;AAAA,MAClC,SAAQW,IAAAvB,EAAUO,CAAM,MAAhB,OAAAgB,IAAqBX,KAAA,gBAAAA,EAAO;AAAA,MACpC,GAAIF,IAAiB,EAAE,gBAAgB,GAAGU,IAAIV,CAAc,SAAS,CAAA;AAAA,IAAC;AAExE,WACE,gBAAAc;AAAA,MAACN;AAAA,MAAA;AAAA,QAEC,KAAKT,MAAU,IAAIM,IAAM;AAAA,QACxB,GAAIN,MAAU,IAAIK,IAAQ,CAAA;AAAA,QAC3B,eAAaL,MAAU,KAAKI,KAAA,OAAAA,IAA4B;AAAA,QACxD,eAAY;AAAA,QACZ,WAAWG;AAAA,QACX,OAAOK;AAAA,MAAA;AAAA,MANFD;AAAA,IAAA;AAAA,EASX;AAEA,SAAIX,MAAU,IACLU,EAAU,CAAC,IAIlB,gBAAAK,EAAC,UAAK,KAAAT,GAAW,GAAGD,GAAO,eAAaD,GAAY,WAAU,wBAAuB,eAAY,QAC9F,gBAAM,KAAK,EAAE,QAAQJ,EAAA,GAAS,CAACgB,GAAG,MAAMN,EAAU,CAAC,CAAC,EAAA,CACvD;AAEJ,CAAC;"}
@@ -1,28 +1,28 @@
1
- import { jsx as k, jsxs as g } from "react/jsx-runtime";
1
+ import { jsx as f, jsxs as I } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/snackbar/snackbar.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import F, { useState as L, useCallback as G, useContext as q, useRef as E, createContext as y, useEffect as z } from "react";
4
+ import F, { useState as L, useCallback as G, useContext as q, useRef as _, createContext as y, useEffect as z } from "react";
5
5
  import { v4 as H } from "uuid";
6
6
  import { createPortal as J } from "react-dom";
7
- import N from "clsx";
7
+ import A from "clsx";
8
8
  import { TransitionGroup as K, CSSTransition as M } from "react-transition-group";
9
9
  import { useSnackbarsPortal as Q } from "./useSnackbarsPortal.js";
10
10
  import { useEventCallback as U } from "../../../hooks/useEventCallback.js";
11
11
  function V({
12
12
  snack: r,
13
- position: l,
14
- variant: f,
15
- className: m,
16
- component: v,
17
- autoClose: S,
18
- autoCloseTime: w,
19
- snackRest: o,
20
- onSnackRemove: u,
21
- onClose: b
13
+ position: m,
14
+ variant: v,
15
+ className: u,
16
+ component: S,
17
+ autoClose: w,
18
+ autoCloseTime: C,
19
+ snackRest: c,
20
+ onSnackRemove: b,
21
+ onClose: d
22
22
  }) {
23
- var d, a, n, i, C;
24
- const c = E(null);
25
- return /* @__PURE__ */ k(
23
+ var s, a, n, l, x;
24
+ const i = _(null);
25
+ return /* @__PURE__ */ f(
26
26
  M,
27
27
  {
28
28
  appear: !0,
@@ -38,27 +38,27 @@ function V({
38
38
  },
39
39
  unmountOnExit: !0,
40
40
  in: !0,
41
- nodeRef: c,
42
- children: /* @__PURE__ */ k(
41
+ nodeRef: i,
42
+ children: /* @__PURE__ */ f(
43
43
  W,
44
44
  {
45
- ref: c,
46
- component: (d = r.component) != null ? d : v,
45
+ ref: i,
46
+ component: (s = r.component) != null ? s : S,
47
47
  message: r.message,
48
- position: (a = r.position) != null ? a : l,
49
- variant: (n = r.variant) != null ? n : f,
50
- onClick: u(r.id),
51
- className: N(m, r.className),
52
- isAutoClose: (i = r.autoClose) != null ? i : S,
53
- autoCloseTime: (C = r.autoCloseTime) != null ? C : w,
54
- onClose: b(r.id),
55
- ...o
48
+ position: (a = r.position) != null ? a : m,
49
+ variant: (n = r.variant) != null ? n : v,
50
+ onClick: b(r.id),
51
+ className: A(u, r.className),
52
+ isAutoClose: (l = r.autoClose) != null ? l : w,
53
+ autoCloseTime: (x = r.autoCloseTime) != null ? x : C,
54
+ onClose: d(r.id),
55
+ ...c
56
56
  }
57
57
  )
58
58
  }
59
59
  );
60
60
  }
61
- const I = y({
61
+ const $ = y({
62
62
  addSnackbar: () => "",
63
63
  clearAllSnackbars: () => {
64
64
  },
@@ -71,122 +71,123 @@ const I = y({
71
71
  });
72
72
  function ce(r) {
73
73
  const {
74
- position: l = "top-right",
75
- variant: f = "dark",
76
- className: m,
77
- autoClose: v = !0,
78
- autoCloseTime: S = 5e3,
79
- closeOnClick: w = !0,
80
- onClick: o,
81
- component: u = "div",
82
- children: b,
83
- ...c
84
- } = r, [d, a] = L([]), { snackbarDomRoot: n } = Q(), i = G((e) => {
85
- const { key: t, ...s } = e, p = t != null ? t : H(), x = { id: p, ...s };
86
- return a((T) => {
87
- const A = T.findIndex((B) => B.id === p);
88
- if (A === -1)
89
- return [...T, x];
90
- const P = [...T];
91
- return P[A] = x, P;
92
- }), p;
93
- }, []), C = () => {
74
+ position: m = "top-right",
75
+ variant: v = "dark",
76
+ className: u,
77
+ autoClose: S = !0,
78
+ autoCloseTime: w = 5e3,
79
+ closeOnClick: C = !0,
80
+ onClick: c,
81
+ component: b = "div",
82
+ children: d,
83
+ ...i
84
+ } = r, [s, a] = L([]), { snackbarDomRoot: n } = Q(), l = G((e) => {
85
+ const { key: t, ...o } = e, k = t != null ? t : H(), h = { id: k, ...o };
86
+ return a((R) => {
87
+ const g = R.findIndex((B) => B.id === k);
88
+ if (g === -1)
89
+ return [...R, h];
90
+ const E = [...R];
91
+ return E[g] = h, E;
92
+ }), k;
93
+ }, []), x = () => {
94
94
  a([]);
95
- }, _ = () => {
95
+ }, T = () => {
96
96
  a((e) => e.slice(1));
97
- }, $ = () => {
97
+ }, N = () => {
98
98
  a((e) => e.slice(0, -1));
99
- }, h = (e) => {
100
- a((t) => t.filter((s) => s.id !== e));
99
+ }, p = (e) => {
100
+ a((t) => t.filter((o) => o.id !== e));
101
101
  }, j = (e) => (t) => {
102
- o == null || o(t), w && h(e);
102
+ c == null || c(t), C && p(e);
103
103
  }, D = (e) => () => {
104
- h(e);
105
- }, R = d.reduce(
104
+ p(e);
105
+ }, P = s.reduce(
106
106
  (e, t) => {
107
- var p, x;
108
- const s = (p = t.position) != null ? p : l;
109
- return e[s] = [...(x = e[s]) != null ? x : [], t], e;
107
+ var k, h;
108
+ const o = (k = t.position) != null ? k : m;
109
+ return e[o] = [...(h = e[o]) != null ? h : [], t], e;
110
110
  },
111
111
  {}
112
- ), O = Object.keys(R).map((e) => {
113
- const t = R[e];
114
- return /* @__PURE__ */ k(
112
+ ), O = Object.keys(P).map((e) => {
113
+ const t = P[e];
114
+ return /* @__PURE__ */ f(
115
115
  K,
116
116
  {
117
- className: N("smwb-snackbars", `smwb-${e}`),
117
+ className: A("smwb-snackbars", `smwb-${e}`),
118
118
  "data-testid": `snackbars-${e}`,
119
119
  appear: !0,
120
- children: t.map((s) => /* @__PURE__ */ k(
120
+ children: t.map((o) => /* @__PURE__ */ f(
121
121
  V,
122
122
  {
123
- snack: s,
124
- position: l,
125
- variant: f,
126
- className: m,
127
- component: u,
128
- autoClose: v,
129
- autoCloseTime: S,
130
- snackRest: c,
123
+ snack: o,
124
+ position: m,
125
+ variant: v,
126
+ className: u,
127
+ component: b,
128
+ autoClose: S,
129
+ autoCloseTime: w,
130
+ snackRest: i,
131
131
  onSnackRemove: j,
132
132
  onClose: D
133
133
  },
134
- s.id
134
+ o.id
135
135
  ))
136
136
  },
137
137
  e
138
138
  );
139
139
  });
140
- return /* @__PURE__ */ g(
141
- I.Provider,
140
+ return /* @__PURE__ */ I(
141
+ $.Provider,
142
142
  {
143
- value: { addSnackbar: i, clearAllSnackbars: C, clearFirstSnackbar: _, clearLastSnackbar: $, clearByIdSnackbar: h },
143
+ value: { addSnackbar: l, clearAllSnackbars: x, clearFirstSnackbar: T, clearLastSnackbar: N, clearByIdSnackbar: p },
144
144
  children: [
145
- b,
145
+ d,
146
146
  n && J(O, n)
147
147
  ]
148
148
  }
149
149
  );
150
150
  }
151
151
  const W = F.forwardRef(function({
152
- className: l,
153
- message: f,
154
- variant: m = "dark",
155
- position: v = "top-right",
156
- onClick: S,
157
- component: w = "div",
158
- isAutoClose: o,
159
- autoCloseTime: u,
160
- onClose: b,
161
- action: c,
162
- ...d
152
+ className: m,
153
+ message: v,
154
+ variant: u = "dark",
155
+ position: S = "top-right",
156
+ onClick: w,
157
+ component: C = "div",
158
+ isAutoClose: c,
159
+ autoCloseTime: b,
160
+ onClose: d,
161
+ action: i,
162
+ ...s
163
163
  }, a) {
164
- const n = E(), i = U(() => {
165
- !b || !o || !u || (n.current && clearTimeout(n.current), n.current = setTimeout(() => {
166
- b();
167
- }, u));
164
+ var T, N, p;
165
+ const n = _(), l = U(() => {
166
+ !d || !c || !b || (n.current && clearTimeout(n.current), n.current = setTimeout(() => {
167
+ d();
168
+ }, b));
168
169
  });
169
- return z(() => (i(), () => {
170
+ return z(() => (l(), () => {
170
171
  n.current && clearTimeout(n.current);
171
- }), [i]), /* @__PURE__ */ g(
172
- w,
172
+ }), [l]), /* @__PURE__ */ I(
173
+ C,
173
174
  {
174
175
  ref: a,
175
- className: N("smwb-snackbar", l, `smwb-${m}`, `smwb-${v}`),
176
- onClick: S,
177
- role: "alert",
178
- "aria-live": m === "danger" ? "assertive" : "polite",
179
- "aria-atomic": "true",
180
- ...d,
176
+ className: A("smwb-snackbar", m, `smwb-${u}`, `smwb-${S}`),
177
+ onClick: w,
178
+ ...s,
179
+ role: (T = s.role) != null ? T : "alert",
180
+ "aria-live": (N = s["aria-live"]) != null ? N : u === "danger" ? "assertive" : "polite",
181
+ "aria-atomic": (p = s["aria-atomic"]) != null ? p : "true",
181
182
  children: [
182
- /* @__PURE__ */ k("div", { className: "smwb-snackbar__body", children: f }),
183
- c != null ? /* @__PURE__ */ k("div", { className: "smwb-snackbar__action", children: c }) : null
183
+ /* @__PURE__ */ f("div", { className: "smwb-snackbar__body", children: v }),
184
+ i != null ? /* @__PURE__ */ f("div", { className: "smwb-snackbar__action", children: i }) : null
184
185
  ]
185
186
  }
186
187
  );
187
188
  });
188
189
  function ie() {
189
- return q(I);
190
+ return q($);
190
191
  }
191
192
  export {
192
193
  W as Snackbar,
@@ -1 +1 @@
1
- {"version":3,"file":"snackbar.js","sources":["../../../../src/components/feedBack/snackbar/snackbar.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { v4 } from \"uuid\";\nimport { createPortal } from \"react-dom\";\nimport cn from \"clsx\";\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\nimport { useSnackbarsPortal } from \"./useSnackbarsPortal\";\nimport { useEventCallback } from \"../../../hooks/useEventCallback\";\n\nexport const variants = [\"dark\", \"light\", \"danger\", \"success\", \"warning\", \"info\"] as const;\nexport const positions = [\"top\", \"bottom\", \"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"] as const;\n\nexport type Variants = (typeof variants)[number];\nexport type Position = (typeof positions)[number];\n\nexport interface SnackbarsProviderProps extends React.HTMLAttributes<HTMLElement> {\n variant?: Variants;\n position?: Position;\n autoCloseTime?: number;\n closeOnClick?: boolean;\n autoClose?: boolean;\n component?: React.ElementType;\n}\n\ninterface Snack extends SnackbarsProviderProps {\n id: string;\n message: React.ReactNode;\n}\n\ninterface SnackTransitionProps {\n snack: Snack;\n position: Position;\n variant: Variants;\n className?: string;\n component: React.ElementType;\n autoClose: boolean;\n autoCloseTime: number;\n snackRest: Omit<\n SnackbarsProviderProps,\n \"variant\" | \"position\" | \"autoCloseTime\" | \"autoClose\" | \"closeOnClick\" | \"onClick\" | \"component\" | \"children\"\n >;\n onSnackRemove: (id: string) => (event: React.MouseEvent<HTMLElement>) => void;\n onClose: (id: string) => () => void;\n}\n\nfunction SnackTransition({\n snack,\n position,\n variant,\n className,\n component,\n autoClose,\n autoCloseTime,\n snackRest,\n onSnackRemove,\n onClose,\n}: SnackTransitionProps) {\n const nodeRef = useRef<HTMLDivElement>(null);\n\n return (\n <CSSTransition\n appear\n timeout={125}\n classNames={{\n appear: \"smwb-snackbar-enter\",\n appearActive: \"smwb-snackbar-enter-active\",\n appearDone: \"smwb-snackbar-enter-done\",\n enter: \"smwb-snackbar-enter\",\n enterActive: \"smwb-snackbar-enter-active\",\n enterDone: \"smwb-snackbar-enter-done\",\n exitActive: \"smwb-snackbar-exit-active\",\n }}\n unmountOnExit\n in\n nodeRef={nodeRef}\n >\n <Snackbar\n ref={nodeRef}\n component={snack.component ?? component}\n message={snack.message}\n position={snack.position ?? position}\n variant={snack.variant ?? variant}\n onClick={onSnackRemove(snack.id)}\n className={cn(className, snack.className)}\n isAutoClose={snack.autoClose ?? autoClose}\n autoCloseTime={snack.autoCloseTime ?? autoCloseTime}\n onClose={onClose(snack.id)}\n {...snackRest}\n />\n </CSSTransition>\n );\n}\n\nexport interface AddSnackbarOptions extends SnackbarsProviderProps {\n key?: string;\n message: React.ReactNode;\n}\n\nexport type AddSnackbar = (options: AddSnackbarOptions) => string;\n\nexport interface SnackbarOptions {\n addSnackbar: AddSnackbar;\n clearAllSnackbars: () => void;\n clearFirstSnackbar: () => void;\n clearLastSnackbar: () => void;\n clearByIdSnackbar: (id: string) => void;\n}\n\nconst SnackbarContext = createContext<SnackbarOptions>({\n addSnackbar: () => \"\",\n clearAllSnackbars: () => undefined,\n clearFirstSnackbar: () => undefined,\n clearLastSnackbar: () => undefined,\n clearByIdSnackbar: () => undefined,\n});\n\nexport function SnackbarProvider(props: SnackbarsProviderProps) {\n const {\n position = \"top-right\",\n variant = \"dark\",\n className,\n autoClose = true,\n autoCloseTime = 5000,\n closeOnClick = true,\n onClick,\n component = \"div\",\n children,\n ...rest\n } = props;\n\n const [snacks, setSnacks] = useState<Snack[]>([]);\n const { snackbarDomRoot } = useSnackbarsPortal();\n\n const addSnackbar: AddSnackbar = useCallback((options) => {\n const { key, ...rest } = options;\n\n const id = key ?? v4();\n const snack: Snack = { id, ...rest };\n\n setSnacks((prevState) => {\n const index = prevState.findIndex((item) => item.id === id);\n if (index === -1) {\n return [...prevState, snack];\n }\n const next = [...prevState];\n next[index] = snack;\n return next;\n });\n\n return id;\n }, []);\n\n const clearAllSnackbars = () => {\n setSnacks([]);\n };\n\n const clearFirstSnackbar = () => {\n setSnacks((prevState) => prevState.slice(1));\n };\n\n const clearLastSnackbar = () => {\n setSnacks((prevState) => prevState.slice(0, -1));\n };\n\n const clearByIdSnackbar = (id: string) => {\n setSnacks((prevState) => prevState.filter((value) => value.id !== id));\n };\n\n const onSnackRemove = (id: string) => (event: React.MouseEvent<HTMLElement>) => {\n onClick?.(event);\n\n if (closeOnClick) {\n clearByIdSnackbar(id);\n }\n };\n\n const onClose = (id: string) => () => {\n clearByIdSnackbar(id);\n };\n\n const currentPositions = snacks.reduce(\n (acc, snack) => {\n const currentPosition = snack.position ?? position;\n\n acc[currentPosition] = [...(acc[currentPosition] ?? []), snack];\n\n return acc;\n },\n {} as Record<Position, Snack[]>\n );\n\n const snackbars = (Object.keys(currentPositions) as unknown as typeof positions).map((key) => {\n const snacks = currentPositions[key];\n\n return (\n <TransitionGroup\n key={key}\n className={cn(\"smwb-snackbars\", `smwb-${key}`)}\n data-testid={`snackbars-${key}`}\n appear\n >\n {snacks.map((snack) => (\n <SnackTransition\n key={snack.id}\n snack={snack}\n position={position}\n variant={variant}\n className={className}\n component={component}\n autoClose={autoClose}\n autoCloseTime={autoCloseTime}\n snackRest={rest}\n onSnackRemove={onSnackRemove}\n onClose={onClose}\n />\n ))}\n </TransitionGroup>\n );\n });\n\n return (\n <SnackbarContext.Provider\n value={{ addSnackbar, clearAllSnackbars, clearFirstSnackbar, clearLastSnackbar, clearByIdSnackbar }}\n >\n {children}\n {snackbarDomRoot && createPortal(snackbars, snackbarDomRoot)}\n </SnackbarContext.Provider>\n );\n}\n\nexport interface SnackbarProps extends React.HTMLAttributes<HTMLElement> {\n message?: React.ReactNode;\n variant?: Variants;\n position?: Position;\n component?: React.ElementType;\n isAutoClose?: boolean;\n autoCloseTime?: number;\n onClose?: () => void;\n /** Optional action node rendered after the message (e.g. an Undo button). */\n action?: React.ReactNode;\n}\n\nexport const Snackbar = React.forwardRef(function SnackbarInner(\n {\n className,\n message,\n variant = \"dark\",\n position = \"top-right\",\n onClick,\n component = \"div\",\n isAutoClose,\n autoCloseTime,\n onClose,\n action,\n ...rest\n }: SnackbarProps,\n ref\n) {\n const timerClose = useRef<ReturnType<typeof setTimeout>>();\n\n const setCloseTimer = useEventCallback(() => {\n if (!onClose || !isAutoClose || !autoCloseTime) {\n return;\n }\n\n if (timerClose.current) {\n clearTimeout(timerClose.current);\n }\n\n timerClose.current = setTimeout(() => {\n onClose();\n }, autoCloseTime);\n });\n\n useEffect(() => {\n setCloseTimer();\n\n return () => {\n if (timerClose.current) {\n clearTimeout(timerClose.current);\n }\n };\n }, [setCloseTimer]);\n\n const Element = component;\n\n return (\n <Element\n ref={ref}\n className={cn(\"smwb-snackbar\", className, `smwb-${variant}`, `smwb-${position}`)}\n onClick={onClick}\n role=\"alert\"\n aria-live={variant === \"danger\" ? \"assertive\" : \"polite\"}\n aria-atomic=\"true\"\n {...rest}\n >\n <div className=\"smwb-snackbar__body\">{message}</div>\n {action != null ? <div className=\"smwb-snackbar__action\">{action}</div> : null}\n </Element>\n );\n});\n\nexport function useSnackbar() {\n return useContext(SnackbarContext);\n}\n\nexport default SnackbarProvider;\n"],"names":["SnackTransition","snack","position","variant","className","component","autoClose","autoCloseTime","snackRest","onSnackRemove","onClose","nodeRef","useRef","jsx","CSSTransition","Snackbar","_a","_b","_c","cn","_d","_e","SnackbarContext","createContext","SnackbarProvider","props","closeOnClick","onClick","children","rest","snacks","setSnacks","useState","snackbarDomRoot","useSnackbarsPortal","addSnackbar","useCallback","options","key","id","v4","prevState","index","item","next","clearAllSnackbars","clearFirstSnackbar","clearLastSnackbar","clearByIdSnackbar","value","event","currentPositions","acc","currentPosition","snackbars","TransitionGroup","jsxs","createPortal","React","message","isAutoClose","action","ref","timerClose","setCloseTimer","useEventCallback","useEffect","useSnackbar","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"snackbar.js","sources":["../../../../src/components/feedBack/snackbar/snackbar.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { v4 } from \"uuid\";\nimport { createPortal } from \"react-dom\";\nimport cn from \"clsx\";\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\nimport { useSnackbarsPortal } from \"./useSnackbarsPortal\";\nimport { useEventCallback } from \"../../../hooks/useEventCallback\";\n\nexport const variants = [\"dark\", \"light\", \"danger\", \"success\", \"warning\", \"info\"] as const;\nexport const positions = [\"top\", \"bottom\", \"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"] as const;\n\nexport type Variants = (typeof variants)[number];\nexport type Position = (typeof positions)[number];\n\nexport interface SnackbarsProviderProps extends React.HTMLAttributes<HTMLElement> {\n variant?: Variants;\n position?: Position;\n autoCloseTime?: number;\n closeOnClick?: boolean;\n autoClose?: boolean;\n component?: React.ElementType;\n}\n\ninterface Snack extends SnackbarsProviderProps {\n id: string;\n message: React.ReactNode;\n}\n\ninterface SnackTransitionProps {\n snack: Snack;\n position: Position;\n variant: Variants;\n className?: string;\n component: React.ElementType;\n autoClose: boolean;\n autoCloseTime: number;\n snackRest: Omit<\n SnackbarsProviderProps,\n \"variant\" | \"position\" | \"autoCloseTime\" | \"autoClose\" | \"closeOnClick\" | \"onClick\" | \"component\" | \"children\"\n >;\n onSnackRemove: (id: string) => (event: React.MouseEvent<HTMLElement>) => void;\n onClose: (id: string) => () => void;\n}\n\nfunction SnackTransition({\n snack,\n position,\n variant,\n className,\n component,\n autoClose,\n autoCloseTime,\n snackRest,\n onSnackRemove,\n onClose,\n}: SnackTransitionProps) {\n const nodeRef = useRef<HTMLDivElement>(null);\n\n return (\n <CSSTransition\n appear\n timeout={125}\n classNames={{\n appear: \"smwb-snackbar-enter\",\n appearActive: \"smwb-snackbar-enter-active\",\n appearDone: \"smwb-snackbar-enter-done\",\n enter: \"smwb-snackbar-enter\",\n enterActive: \"smwb-snackbar-enter-active\",\n enterDone: \"smwb-snackbar-enter-done\",\n exitActive: \"smwb-snackbar-exit-active\",\n }}\n unmountOnExit\n in\n nodeRef={nodeRef}\n >\n <Snackbar\n ref={nodeRef}\n component={snack.component ?? component}\n message={snack.message}\n position={snack.position ?? position}\n variant={snack.variant ?? variant}\n onClick={onSnackRemove(snack.id)}\n className={cn(className, snack.className)}\n isAutoClose={snack.autoClose ?? autoClose}\n autoCloseTime={snack.autoCloseTime ?? autoCloseTime}\n onClose={onClose(snack.id)}\n {...snackRest}\n />\n </CSSTransition>\n );\n}\n\nexport interface AddSnackbarOptions extends SnackbarsProviderProps {\n key?: string;\n message: React.ReactNode;\n}\n\nexport type AddSnackbar = (options: AddSnackbarOptions) => string;\n\nexport interface SnackbarOptions {\n addSnackbar: AddSnackbar;\n clearAllSnackbars: () => void;\n clearFirstSnackbar: () => void;\n clearLastSnackbar: () => void;\n clearByIdSnackbar: (id: string) => void;\n}\n\nconst SnackbarContext = createContext<SnackbarOptions>({\n addSnackbar: () => \"\",\n clearAllSnackbars: () => undefined,\n clearFirstSnackbar: () => undefined,\n clearLastSnackbar: () => undefined,\n clearByIdSnackbar: () => undefined,\n});\n\nexport function SnackbarProvider(props: SnackbarsProviderProps) {\n const {\n position = \"top-right\",\n variant = \"dark\",\n className,\n autoClose = true,\n autoCloseTime = 5000,\n closeOnClick = true,\n onClick,\n component = \"div\",\n children,\n ...rest\n } = props;\n\n const [snacks, setSnacks] = useState<Snack[]>([]);\n const { snackbarDomRoot } = useSnackbarsPortal();\n\n const addSnackbar: AddSnackbar = useCallback((options) => {\n const { key, ...rest } = options;\n\n const id = key ?? v4();\n const snack: Snack = { id, ...rest };\n\n setSnacks((prevState) => {\n const index = prevState.findIndex((item) => item.id === id);\n if (index === -1) {\n return [...prevState, snack];\n }\n const next = [...prevState];\n next[index] = snack;\n return next;\n });\n\n return id;\n }, []);\n\n const clearAllSnackbars = () => {\n setSnacks([]);\n };\n\n const clearFirstSnackbar = () => {\n setSnacks((prevState) => prevState.slice(1));\n };\n\n const clearLastSnackbar = () => {\n setSnacks((prevState) => prevState.slice(0, -1));\n };\n\n const clearByIdSnackbar = (id: string) => {\n setSnacks((prevState) => prevState.filter((value) => value.id !== id));\n };\n\n const onSnackRemove = (id: string) => (event: React.MouseEvent<HTMLElement>) => {\n onClick?.(event);\n\n if (closeOnClick) {\n clearByIdSnackbar(id);\n }\n };\n\n const onClose = (id: string) => () => {\n clearByIdSnackbar(id);\n };\n\n const currentPositions = snacks.reduce(\n (acc, snack) => {\n const currentPosition = snack.position ?? position;\n\n acc[currentPosition] = [...(acc[currentPosition] ?? []), snack];\n\n return acc;\n },\n {} as Record<Position, Snack[]>\n );\n\n const snackbars = (Object.keys(currentPositions) as unknown as typeof positions).map((key) => {\n const snacks = currentPositions[key];\n\n return (\n <TransitionGroup\n key={key}\n className={cn(\"smwb-snackbars\", `smwb-${key}`)}\n data-testid={`snackbars-${key}`}\n appear\n >\n {snacks.map((snack) => (\n <SnackTransition\n key={snack.id}\n snack={snack}\n position={position}\n variant={variant}\n className={className}\n component={component}\n autoClose={autoClose}\n autoCloseTime={autoCloseTime}\n snackRest={rest}\n onSnackRemove={onSnackRemove}\n onClose={onClose}\n />\n ))}\n </TransitionGroup>\n );\n });\n\n return (\n <SnackbarContext.Provider\n value={{ addSnackbar, clearAllSnackbars, clearFirstSnackbar, clearLastSnackbar, clearByIdSnackbar }}\n >\n {children}\n {snackbarDomRoot && createPortal(snackbars, snackbarDomRoot)}\n </SnackbarContext.Provider>\n );\n}\n\nexport interface SnackbarProps extends React.HTMLAttributes<HTMLElement> {\n message?: React.ReactNode;\n variant?: Variants;\n position?: Position;\n component?: React.ElementType;\n isAutoClose?: boolean;\n autoCloseTime?: number;\n onClose?: () => void;\n /** Optional action node rendered after the message (e.g. an Undo button). */\n action?: React.ReactNode;\n}\n\nexport const Snackbar = React.forwardRef(function SnackbarInner(\n {\n className,\n message,\n variant = \"dark\",\n position = \"top-right\",\n onClick,\n component = \"div\",\n isAutoClose,\n autoCloseTime,\n onClose,\n action,\n ...rest\n }: SnackbarProps,\n ref\n) {\n const timerClose = useRef<ReturnType<typeof setTimeout>>();\n\n const setCloseTimer = useEventCallback(() => {\n if (!onClose || !isAutoClose || !autoCloseTime) {\n return;\n }\n\n if (timerClose.current) {\n clearTimeout(timerClose.current);\n }\n\n timerClose.current = setTimeout(() => {\n onClose();\n }, autoCloseTime);\n });\n\n useEffect(() => {\n setCloseTimer();\n\n return () => {\n if (timerClose.current) {\n clearTimeout(timerClose.current);\n }\n };\n }, [setCloseTimer]);\n\n const Element = component;\n\n return (\n <Element\n ref={ref}\n className={cn(\"smwb-snackbar\", className, `smwb-${variant}`, `smwb-${position}`)}\n onClick={onClick}\n {...rest}\n // Defaults: the caller's own role, aria-live and aria-atomic win, and an\n // explicit undefined keeps these.\n role={rest.role ?? \"alert\"}\n aria-live={rest[\"aria-live\"] ?? (variant === \"danger\" ? \"assertive\" : \"polite\")}\n aria-atomic={rest[\"aria-atomic\"] ?? \"true\"}\n >\n <div className=\"smwb-snackbar__body\">{message}</div>\n {action != null ? <div className=\"smwb-snackbar__action\">{action}</div> : null}\n </Element>\n );\n});\n\nexport function useSnackbar() {\n return useContext(SnackbarContext);\n}\n\nexport default SnackbarProvider;\n"],"names":["SnackTransition","snack","position","variant","className","component","autoClose","autoCloseTime","snackRest","onSnackRemove","onClose","nodeRef","useRef","jsx","CSSTransition","Snackbar","_a","_b","_c","cn","_d","_e","SnackbarContext","createContext","SnackbarProvider","props","closeOnClick","onClick","children","rest","snacks","setSnacks","useState","snackbarDomRoot","useSnackbarsPortal","addSnackbar","useCallback","options","key","id","v4","prevState","index","item","next","clearAllSnackbars","clearFirstSnackbar","clearLastSnackbar","clearByIdSnackbar","value","event","currentPositions","acc","currentPosition","snackbars","TransitionGroup","jsxs","createPortal","React","message","isAutoClose","action","ref","timerClose","setCloseTimer","useEventCallback","useEffect","useSnackbar","useContext"],"mappings":"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"}
@@ -7,13 +7,21 @@ export interface TooltipProps {
7
7
  offsetX?: number;
8
8
  offsetY?: number;
9
9
  };
10
+ /** What the tip says: text or markup. */
10
11
  message: React.ReactNode;
11
12
  placement?: Placement;
12
13
  /** Controls tooltip visibility when trigger is manual. */
13
14
  open?: boolean;
14
- /** hover (default): show on pointer enter; click: toggle; manual: use open only. */
15
+ /**
16
+ * What shows the tooltip. `hover` (default): the pointer over the target or keyboard focus
17
+ * in it, until both have left. Keyboard focus is focus with a focus ring (`:focus-visible`),
18
+ * not the focus a mouse press gives a button. `click`: a click on the target shows or hides
19
+ * it. `manual`: `open` alone. Escape hides a `hover` or `click` tooltip.
20
+ */
15
21
  trigger?: TooltipTrigger;
22
+ /** Milliseconds from the pointer entering the target, or keyboard focus moving into it, until a hover tooltip shows. */
16
23
  openDelay?: number;
24
+ /** Milliseconds from the pointer and keyboard focus both leaving the target until a hover tooltip hides. */
17
25
  closeDelay?: number;
18
26
  }
19
27
  export declare const Tooltip: React.ForwardRefExoticComponent<TooltipProps & {
@@ -1,72 +1,92 @@
1
- import { jsxs as _, jsx as v } from "react/jsx-runtime";
1
+ import { jsxs as N, jsx as R } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/tooltip/tooltip.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import { forwardRef as M, useState as f, useRef as w, useCallback as d, useEffect as N } from "react";
5
- import j from "clsx";
6
- import { useFloating as A, autoUpdate as F, offset as L, flip as S, shift as V } from "@floating-ui/react";
7
- import { resolvePlacement as X } from "../../../utils/floating.js";
8
- function Y({ reference: h, placement: u, offset: e, className: a, children: m }) {
9
- var o, n;
10
- const l = X(u), { refs: p, floatingStyles: t } = A({
11
- elements: { reference: h },
12
- placement: l.placement,
13
- whileElementsMounted: F,
4
+ import { forwardRef as j, useState as w, useRef as m, useCallback as k, useEffect as A } from "react";
5
+ import B from "clsx";
6
+ import { useFloating as I, autoUpdate as L, offset as S, flip as V, shift as X } from "@floating-ui/react";
7
+ import { resolvePlacement as Y } from "../../../utils/floating.js";
8
+ import { useDismissOnEscape as F } from "../../../hooks/useDismissOnEscape.js";
9
+ function H({ reference: u, placement: p, offset: t, className: d, children: h }) {
10
+ var o, s;
11
+ const c = Y(p), { refs: v, floatingStyles: e } = I({
12
+ elements: { reference: u },
13
+ placement: c.placement,
14
+ whileElementsMounted: L,
14
15
  middleware: [
15
- L({ mainAxis: (o = e == null ? void 0 : e.offsetY) != null ? o : 0, crossAxis: (n = e == null ? void 0 : e.offsetX) != null ? n : 0 }),
16
+ S({ mainAxis: (o = t == null ? void 0 : t.offsetY) != null ? o : 0, crossAxis: (s = t == null ? void 0 : t.offsetX) != null ? s : 0 }),
16
17
  // A fixed placement turns to the other side, and slides along it, when the
17
18
  // viewport has no room for it.
18
- ...l.autoMiddleware ? [l.autoMiddleware] : [S(), V({ padding: 8 })]
19
+ ...c.autoMiddleware ? [c.autoMiddleware] : [V(), X({ padding: 8 })]
19
20
  ]
20
21
  });
21
- return /* @__PURE__ */ v("div", { ref: p.setFloating, className: j("smwb-tooltip", a), style: t, children: m });
22
+ return /* @__PURE__ */ R("div", { ref: v.setFloating, className: B("smwb-tooltip", d), style: e, children: h });
22
23
  }
23
- const Z = M(function({
24
- className: u,
25
- children: e,
26
- placement: a = "top",
27
- offset: m = { offsetX: 0, offsetY: 0 },
28
- message: l,
29
- open: p,
30
- trigger: t = "hover",
24
+ function U(u) {
25
+ try {
26
+ return u.matches(":focus-visible");
27
+ } catch {
28
+ return !0;
29
+ }
30
+ }
31
+ const re = j(function({
32
+ className: p,
33
+ children: t,
34
+ placement: d = "top",
35
+ offset: h = { offsetX: 0, offsetY: 0 },
36
+ message: c,
37
+ open: v,
38
+ trigger: e = "hover",
31
39
  openDelay: o = 0,
32
- closeDelay: n = 0
33
- }, k) {
34
- const [T, b] = f(null), [P, i] = f(!1), [x, C] = f(!1), s = w(null), c = w(null), r = d(() => {
35
- s.current !== null && (clearTimeout(s.current), s.current = null), c.current !== null && (clearTimeout(c.current), c.current = null);
40
+ closeDelay: s = 0
41
+ }, _) {
42
+ const [b, M] = w(null), [O, l] = w(!1), [P, x] = w(!1), a = m(null), f = m(null), T = m(!1), i = m(!1), n = k(() => {
43
+ a.current !== null && (clearTimeout(a.current), a.current = null), f.current !== null && (clearTimeout(f.current), f.current = null);
36
44
  }, []);
37
- N(() => () => r(), [r]);
38
- const O = d(() => {
39
- if (r(), o <= 0) {
40
- i(!0);
45
+ A(() => () => n(), [n]);
46
+ const C = k(() => {
47
+ if (n(), o <= 0) {
48
+ l(!0);
41
49
  return;
42
50
  }
43
- s.current = setTimeout(() => i(!0), o);
44
- }, [r, o]), R = d(() => {
45
- if (r(), n <= 0) {
46
- i(!1);
51
+ a.current = setTimeout(() => l(!0), o);
52
+ }, [n, o]), E = k(() => {
53
+ if (n(), s <= 0) {
54
+ l(!1);
47
55
  return;
48
56
  }
49
- c.current = setTimeout(() => i(!1), n);
50
- }, [r, n]);
51
- return /* @__PURE__ */ _("div", { className: "smwb-tooltip__wrapper", role: "tooltip", ref: k, children: [
52
- /* @__PURE__ */ v(
57
+ f.current = setTimeout(() => l(!1), s);
58
+ }, [n, s]);
59
+ return F(e === "hover" && O, () => {
60
+ n(), i.current = !1, l(!1);
61
+ }), F(e === "click" && P, () => x(!1)), /* @__PURE__ */ N("div", { className: "smwb-tooltip__wrapper", role: "tooltip", ref: _, children: [
62
+ /* @__PURE__ */ R(
53
63
  "div",
54
64
  {
55
65
  className: "smwb-tooltip__ref",
56
- ref: b,
57
- onPointerEnter: t === "hover" ? O : void 0,
58
- onPointerLeave: t === "hover" ? R : void 0,
59
- onClick: t === "click" ? () => {
60
- C((E) => !E);
66
+ ref: M,
67
+ onPointerEnter: () => {
68
+ T.current = !0, e === "hover" && C();
69
+ },
70
+ onPointerLeave: () => {
71
+ T.current = !1, e === "hover" && !i.current && E();
72
+ },
73
+ onFocus: (r) => {
74
+ r.currentTarget.contains(r.target) && (i.current = U(r.target), e === "hover" && i.current && C());
75
+ },
76
+ onBlur: (r) => {
77
+ r.currentTarget.contains(r.relatedTarget) || (i.current = !1, e === "hover" && !T.current && E());
78
+ },
79
+ onClick: e === "click" ? () => {
80
+ x((r) => !r);
61
81
  } : void 0,
62
- children: e
82
+ children: t
63
83
  }
64
84
  ),
65
- (t === "manual" ? p === !0 : t === "click" ? x : P) && T ? /* @__PURE__ */ v(Y, { reference: T, placement: a, offset: m, className: u, children: l }) : null
85
+ (e === "manual" ? v === !0 : e === "click" ? P : O) && b ? /* @__PURE__ */ R(H, { reference: b, placement: d, offset: h, className: p, children: c }) : null
66
86
  ] });
67
87
  });
68
88
  export {
69
- Z as Tooltip,
70
- Z as default
89
+ re as Tooltip,
90
+ re as default
71
91
  };
72
92
  //# sourceMappingURL=tooltip.js.map