@lumx/react 3.0.1 → 3.0.2-alpha-react-utils.2

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 (619) hide show
  1. package/{esm/_internal/useDisableBodyScroll.js → _internal/0062d1bc.js} +1 -1
  2. package/_internal/0062d1bc.js.map +1 -0
  3. package/_internal/03e8323d.d.ts +118 -0
  4. package/_internal/0402f9bc.d.ts +183 -0
  5. package/{esm/_internal/List2.js → _internal/0b370acc.js} +7 -10
  6. package/_internal/0b370acc.js.map +1 -0
  7. package/_internal/0d154d73.d.ts +67 -0
  8. package/_internal/113e3b40.d.ts +31 -0
  9. package/{esm/_internal/InputLabel.js → _internal/12ab39e4.js} +4 -4
  10. package/_internal/12ab39e4.js.map +1 -0
  11. package/{esm/_internal/DatePickerField.js → _internal/13e759f3.js} +10 -14
  12. package/_internal/13e759f3.js.map +1 -0
  13. package/{esm/_internal/SideNavigationItem.js → _internal/158b46d5.js} +8 -8
  14. package/_internal/158b46d5.js.map +1 -0
  15. package/_internal/17b74e16.d.ts +31 -0
  16. package/_internal/1b1530a4.d.ts +43 -0
  17. package/_internal/20976405.js +87 -0
  18. package/_internal/20976405.js.map +1 -0
  19. package/_internal/20b0e9a5.d.ts +77 -0
  20. package/{esm/_internal/Chip2.js → _internal/26cd9c63.js} +4 -4
  21. package/_internal/26cd9c63.js.map +1 -0
  22. package/{esm/_internal/ListSubheader.js → _internal/27f21164.js} +3 -3
  23. package/_internal/27f21164.js.map +1 -0
  24. package/{esm/_internal/constants.js → _internal/288dfd0f.js} +1 -1
  25. package/_internal/288dfd0f.js.map +1 -0
  26. package/_internal/28aaf23a.d.ts +41 -0
  27. package/_internal/2c829c0b.d.ts +57 -0
  28. package/{esm/_internal/useFocusTrap.js → _internal/2cc0aec5.js} +3 -3
  29. package/_internal/2cc0aec5.js.map +1 -0
  30. package/{esm/_internal/types.js → _internal/2d0a5b28.js} +3 -3
  31. package/_internal/2d0a5b28.js.map +1 -0
  32. package/_internal/2d4b5a5e.d.ts +92 -0
  33. package/_internal/2d770113.d.ts +38 -0
  34. package/{esm/_internal/TableRow.js → _internal/2fe97f00.js} +5 -5
  35. package/_internal/2fe97f00.js.map +1 -0
  36. package/_internal/31c16fa0.d.ts +37 -0
  37. package/{esm/_internal/renderLink.js → _internal/329a01d3.js} +2 -2
  38. package/_internal/329a01d3.js.map +1 -0
  39. package/{esm/_internal/SkeletonTypography.js → _internal/3326e990.js} +4 -4
  40. package/_internal/3326e990.js.map +1 -0
  41. package/{esm/_internal/IconButton.js → _internal/377b2f44.js} +7 -11
  42. package/_internal/377b2f44.js.map +1 -0
  43. package/{esm/_internal/CommentBlock.js → _internal/3b8d2a6e.js} +6 -6
  44. package/_internal/3b8d2a6e.js.map +1 -0
  45. package/_internal/3bd3186e.d.ts +57 -0
  46. package/{esm/_internal/ImageBlock.js → _internal/48e40868.js} +5 -5
  47. package/_internal/48e40868.js.map +1 -0
  48. package/{esm/_internal/TextField.js → _internal/490ec1da.js} +10 -10
  49. package/_internal/490ec1da.js.map +1 -0
  50. package/_internal/49127d69.d.ts +52 -0
  51. package/{esm/_internal/Message2.js → _internal/4dcd87cb.js} +5 -5
  52. package/_internal/4dcd87cb.js.map +1 -0
  53. package/{esm/_internal/Dropdown2.js → _internal/4f44d848.js} +6 -6
  54. package/_internal/4f44d848.js.map +1 -0
  55. package/{esm/_internal/partitionMulti.js → _internal/4fc64a2e.js} +2 -2
  56. package/_internal/4fc64a2e.js.map +1 -0
  57. package/_internal/53a831be.js +108 -0
  58. package/_internal/53a831be.js.map +1 -0
  59. package/_internal/55271fa1.d.ts +34 -0
  60. package/_internal/55d30377.d.ts +22 -0
  61. package/{esm/_internal/Switch2.js → _internal/56385b04.js} +7 -7
  62. package/_internal/56385b04.js.map +1 -0
  63. package/_internal/599e250a.d.ts +88 -0
  64. package/_internal/5a054691.d.ts +33 -0
  65. package/{esm/_internal/Avatar2.js → _internal/5a127b58.js} +5 -5
  66. package/_internal/5a127b58.js.map +1 -0
  67. package/{esm/_internal/ExpansionPanel.js → _internal/5a1c0db4.js} +10 -10
  68. package/_internal/5a1c0db4.js.map +1 -0
  69. package/{esm/_internal/RadioGroup.js → _internal/5babcc39.js} +7 -7
  70. package/_internal/5babcc39.js.map +1 -0
  71. package/_internal/5c1bf4d4.d.ts +81 -0
  72. package/_internal/5d8ed4ee.js +113 -0
  73. package/_internal/5d8ed4ee.js.map +1 -0
  74. package/{esm/_internal/Thumbnail2.js → _internal/616f2912.js} +6 -6
  75. package/_internal/616f2912.js.map +1 -0
  76. package/_internal/61f915de.d.ts +49 -0
  77. package/{esm/_internal/ChipGroup.js → _internal/620081fa.js} +4 -4
  78. package/_internal/620081fa.js.map +1 -0
  79. package/{esm/_internal/_rollupPluginBabelHelpers.js → _internal/6340c129.js} +18 -2
  80. package/_internal/6340c129.js.map +1 -0
  81. package/_internal/6581c863.d.ts +34 -0
  82. package/_internal/66de4d45.d.ts +32 -0
  83. package/_internal/6735c5c8.d.ts +62 -0
  84. package/_internal/69dd1472.js +112 -0
  85. package/_internal/69dd1472.js.map +1 -0
  86. package/{esm/_internal/Slider2.js → _internal/6a0e1c77.js} +7 -7
  87. package/_internal/6a0e1c77.js.map +1 -0
  88. package/_internal/701c20b0.d.ts +24 -0
  89. package/{esm/_internal/Progress2.js → _internal/7391188a.js} +4 -4
  90. package/_internal/7391188a.js.map +1 -0
  91. package/{esm/_internal/ButtonRoot.js → _internal/74cb6c26.js} +6 -5
  92. package/_internal/74cb6c26.js.map +1 -0
  93. package/{esm/_internal/ProgressTrackerStepPanel.js → _internal/761031bf.js} +11 -9
  94. package/_internal/761031bf.js.map +1 -0
  95. package/{esm/_internal/DragHandle.js → _internal/76fed69d.js} +5 -5
  96. package/_internal/76fed69d.js.map +1 -0
  97. package/{esm/_internal/type.js → _internal/78ef8e34.js} +1 -1
  98. package/_internal/78ef8e34.js.map +1 -0
  99. package/_internal/7b906e16.d.ts +17 -0
  100. package/_internal/7be11ddc.d.ts +35 -0
  101. package/_internal/7d39705e.d.ts +20 -0
  102. package/{esm/_internal/useDelayedVisibility.js → _internal/7e03266f.js} +2 -2
  103. package/_internal/7e03266f.js.map +1 -0
  104. package/{esm/_internal/Button2.js → _internal/7e8d0ac5.js} +6 -6
  105. package/_internal/7e8d0ac5.js.map +1 -0
  106. package/{esm/_internal/Flag2.js → _internal/7ffa45f6.js} +5 -5
  107. package/_internal/7ffa45f6.js.map +1 -0
  108. package/{esm/_internal/AutocompleteMultiple.js → _internal/84c1ec44.js} +10 -10
  109. package/_internal/84c1ec44.js.map +1 -0
  110. package/{esm/_internal/PostBlock.js → _internal/8518279f.js} +6 -6
  111. package/_internal/8518279f.js.map +1 -0
  112. package/{esm/_internal/mergeRefs.js → _internal/853713cd.js} +1 -1
  113. package/_internal/853713cd.js.map +1 -0
  114. package/_internal/86566d75.d.ts +27 -0
  115. package/_internal/86d22dde.d.ts +57 -0
  116. package/_internal/8e755ded.d.ts +101 -0
  117. package/_internal/901471f5.d.ts +37 -0
  118. package/_internal/935ce959.d.ts +49 -0
  119. package/_internal/97089888.d.ts +16 -0
  120. package/_internal/97cc728c.d.ts +26 -0
  121. package/{esm/_internal/Popover2.js → _internal/9ab3c637.js} +7 -6
  122. package/_internal/9ab3c637.js.map +1 -0
  123. package/{esm/_internal/Toolbar2.js → _internal/9ca3f59c.js} +3 -3
  124. package/_internal/9ca3f59c.js.map +1 -0
  125. package/_internal/9e95ea38.d.ts +43 -0
  126. package/{esm/_internal/Uploader2.js → _internal/a0108f92.js} +5 -5
  127. package/_internal/a0108f92.js.map +1 -0
  128. package/_internal/a493a193.d.ts +65 -0
  129. package/{esm/_internal/Icon2.js → _internal/a521723d.js} +4 -4
  130. package/_internal/a521723d.js.map +1 -0
  131. package/_internal/a6fad025.d.ts +107 -0
  132. package/{esm/_internal/Lightbox2.js → _internal/a8fa525f.js} +13 -12
  133. package/_internal/a8fa525f.js.map +1 -0
  134. package/{esm/_internal/AlertDialog.js → _internal/aca2ecf5.js} +9 -9
  135. package/_internal/aca2ecf5.js.map +1 -0
  136. package/{esm/_internal/Divider2.js → _internal/aef2ef1c.js} +5 -5
  137. package/_internal/aef2ef1c.js.map +1 -0
  138. package/{esm/_internal/Mosaic2.js → _internal/af048b0c.js} +5 -5
  139. package/_internal/af048b0c.js.map +1 -0
  140. package/_internal/af2cd0cd.d.ts +17 -0
  141. package/{esm/_internal/Slides.js → _internal/afec6b62.js} +278 -87
  142. package/_internal/afec6b62.js.map +1 -0
  143. package/{esm/_internal/InputHelper.js → _internal/b0eb3a30.js} +4 -4
  144. package/_internal/b0eb3a30.js.map +1 -0
  145. package/{esm/_internal/Dialog2.js → _internal/b89517ea.js} +14 -13
  146. package/_internal/b89517ea.js.map +1 -0
  147. package/{esm/_internal/Checkbox2.js → _internal/bafa6fcc.js} +8 -8
  148. package/_internal/bafa6fcc.js.map +1 -0
  149. package/{esm/_internal/ButtonGroup.js → _internal/bbbeb49e.js} +3 -7
  150. package/_internal/bbbeb49e.js.map +1 -0
  151. package/_internal/c11f6162.d.ts +52 -0
  152. package/{esm/_internal/Notification2.js → _internal/c723dab4.js} +8 -8
  153. package/_internal/c723dab4.js.map +1 -0
  154. package/_internal/c87cc857.d.ts +42 -0
  155. package/{esm/_internal/SelectMultiple.js → _internal/c97f8d04.js} +13 -13
  156. package/_internal/c97f8d04.js.map +1 -0
  157. package/_internal/cbb373ea.d.ts +6 -0
  158. package/_internal/cbef23b6.d.ts +104 -0
  159. package/_internal/cdf77f06.d.ts +88 -0
  160. package/{esm/_internal/LinkPreview.js → _internal/d350f2ff.js} +6 -6
  161. package/_internal/d350f2ff.js.map +1 -0
  162. package/{esm/_internal/Badge2.js → _internal/d71a8cf7.js} +4 -4
  163. package/_internal/d71a8cf7.js.map +1 -0
  164. package/{esm/_internal/GridItem.js → _internal/d9337952.js} +4 -4
  165. package/_internal/d9337952.js.map +1 -0
  166. package/_internal/def14e1a.d.ts +24 -0
  167. package/_internal/e0cd29c7.d.ts +35 -0
  168. package/{esm/_internal/useRovingTabIndex.js → _internal/e354228f.js} +4 -81
  169. package/_internal/e354228f.js.map +1 -0
  170. package/_internal/e3922a05.d.ts +22 -0
  171. package/_internal/e3cb6177.d.ts +75 -0
  172. package/_internal/e810c841.d.ts +182 -0
  173. package/_internal/ea700b01.d.ts +43 -0
  174. package/_internal/eca6d4dc.d.ts +269 -0
  175. package/{esm/_internal/Link2.js → _internal/eed07003.js} +6 -6
  176. package/_internal/eed07003.js.map +1 -0
  177. package/_internal/f1c9b334.d.ts +22 -0
  178. package/{esm/_internal/TabPanel.js → _internal/f3c3a674.js} +9 -7
  179. package/_internal/f3c3a674.js.map +1 -0
  180. package/{esm/_internal/UserBlock.js → _internal/f571cdcd.js} +6 -6
  181. package/_internal/f571cdcd.js.map +1 -0
  182. package/{esm/_internal/Tooltip2.js → _internal/f5bdff7e.js} +8 -8
  183. package/_internal/f5bdff7e.js.map +1 -0
  184. package/_internal/f851fc00.d.ts +34 -0
  185. package/_internal/f859b007.d.ts +49 -0
  186. package/_internal/fb384b79.d.ts +38 -0
  187. package/_internal/fc4c034b.js +63 -0
  188. package/_internal/fc4c034b.js.map +1 -0
  189. package/{esm/index2.js → _internal/fc608bd9.js} +1 -1
  190. package/_internal/fc608bd9.js.map +1 -0
  191. package/_internal/fd1f4d68.d.ts +36 -0
  192. package/{esm/_internal/getRootClassName.js → _internal/fd867c9d.js} +33 -33
  193. package/_internal/fd867c9d.js.map +1 -0
  194. package/{esm/_internal/FlexBox.js → _internal/ff8081e5.js} +9 -7
  195. package/_internal/ff8081e5.js.map +1 -0
  196. package/{esm/_internal/GenericBlock.js → _internal/ffd1bfe3.js} +7 -9
  197. package/_internal/ffd1bfe3.js.map +1 -0
  198. package/components/alert-dialog.d.ts +6 -0
  199. package/components/alert-dialog.js +2 -0
  200. package/{esm/_internal → components}/alert-dialog.js.map +1 -1
  201. package/components/autocomplete.d.ts +8 -0
  202. package/components/autocomplete.js +2 -0
  203. package/{esm/_internal → components}/autocomplete.js.map +1 -1
  204. package/components/avatar.d.ts +4 -0
  205. package/components/avatar.js +2 -0
  206. package/{esm/_internal → components}/avatar.js.map +1 -1
  207. package/components/badge.d.ts +3 -0
  208. package/components/badge.js +2 -0
  209. package/{esm/_internal → components}/badge.js.map +1 -1
  210. package/components/button.d.ts +8 -0
  211. package/components/button.js +4 -0
  212. package/{esm/_internal → components}/button.js.map +1 -1
  213. package/components/checkbox.d.ts +3 -0
  214. package/components/checkbox.js +2 -0
  215. package/{esm/_internal → components}/checkbox.js.map +1 -1
  216. package/components/chip.d.ts +3 -0
  217. package/components/chip.js +3 -0
  218. package/{esm/_internal → components}/chip.js.map +1 -1
  219. package/components/comment-block.d.ts +5 -0
  220. package/components/comment-block.js +2 -0
  221. package/{esm/_internal → components}/comment-block.js.map +1 -1
  222. package/components/date-picker.d.ts +7 -0
  223. package/components/date-picker.js +2 -0
  224. package/{esm/_internal → components}/date-picker.js.map +1 -1
  225. package/components/dialog.d.ts +3 -0
  226. package/components/dialog.js +2 -0
  227. package/{esm/_internal → components}/dialog.js.map +1 -1
  228. package/components/divider.d.ts +3 -0
  229. package/components/divider.js +2 -0
  230. package/{esm/_internal → components}/divider.js.map +1 -1
  231. package/components/drag-handle.d.ts +3 -0
  232. package/components/drag-handle.js +2 -0
  233. package/{esm/_internal → components}/drag-handle.js.map +1 -1
  234. package/components/dropdown.d.ts +4 -0
  235. package/components/dropdown.js +2 -0
  236. package/{esm/_internal → components}/dropdown.js.map +1 -1
  237. package/components/expansion-panel.d.ts +7 -0
  238. package/components/expansion-panel.js +2 -0
  239. package/components/expansion-panel.js.map +1 -0
  240. package/components/flag.d.ts +3 -0
  241. package/components/flag.js +2 -0
  242. package/{esm/_internal → components}/flag.js.map +1 -1
  243. package/components/flex-box.d.ts +3 -0
  244. package/components/flex-box.js +2 -0
  245. package/{esm/_internal → components}/flex-box.js.map +1 -1
  246. package/components/generic-block.d.ts +4 -0
  247. package/components/generic-block.js +2 -0
  248. package/{esm/_internal → components}/generic-block.js.map +1 -1
  249. package/components/grid.d.ts +3 -0
  250. package/components/grid.js +2 -0
  251. package/{esm/_internal → components}/grid.js.map +1 -1
  252. package/components/heading.d.ts +4 -0
  253. package/components/heading.js +2 -0
  254. package/components/heading.js.map +1 -0
  255. package/components/icon.d.ts +3 -0
  256. package/components/icon.js +2 -0
  257. package/{esm/_internal → components}/icon.js.map +1 -1
  258. package/components/image-block.d.ts +4 -0
  259. package/components/image-block.js +2 -0
  260. package/{esm/_internal → components}/image-block.js.map +1 -1
  261. package/components/input-helper.d.ts +3 -0
  262. package/components/input-helper.js +2 -0
  263. package/{esm/_internal → components}/input-helper.js.map +1 -1
  264. package/components/input-label.d.ts +3 -0
  265. package/components/input-label.js +2 -0
  266. package/{esm/_internal → components}/input-label.js.map +1 -1
  267. package/components/lightbox.d.ts +7 -0
  268. package/components/lightbox.js +2 -0
  269. package/{esm/_internal → components}/lightbox.js.map +1 -1
  270. package/components/link-preview.d.ts +5 -0
  271. package/components/link-preview.js +2 -0
  272. package/{esm/_internal → components}/link-preview.js.map +1 -1
  273. package/components/link.d.ts +3 -0
  274. package/components/link.js +2 -0
  275. package/{esm/_internal → components}/link.js.map +1 -1
  276. package/components/list.d.ts +3 -0
  277. package/components/list.js +3 -0
  278. package/{esm/_internal → components}/list.js.map +1 -1
  279. package/components/message.d.ts +3 -0
  280. package/components/message.js +2 -0
  281. package/{esm/_internal → components}/message.js.map +1 -1
  282. package/components/mosaic.d.ts +4 -0
  283. package/components/mosaic.js +2 -0
  284. package/{esm/_internal → components}/mosaic.js.map +1 -1
  285. package/components/notification.d.ts +3 -0
  286. package/components/notification.js +2 -0
  287. package/{esm/_internal → components}/notification.js.map +1 -1
  288. package/components/popover.d.ts +3 -0
  289. package/components/popover.js +2 -0
  290. package/{esm/_internal → components}/popover.js.map +1 -1
  291. package/components/post-block.d.ts +4 -0
  292. package/components/post-block.js +2 -0
  293. package/{esm/_internal → components}/post-block.js.map +1 -1
  294. package/components/progress-tracker.d.ts +3 -0
  295. package/components/progress-tracker.js +2 -0
  296. package/{esm/_internal → components}/progress-tracker.js.map +1 -1
  297. package/components/progress.d.ts +3 -0
  298. package/components/progress.js +2 -0
  299. package/{esm/_internal → components}/progress.js.map +1 -1
  300. package/components/radio-button.d.ts +3 -0
  301. package/components/radio-button.js +2 -0
  302. package/{esm/_internal → components}/radio-button.js.map +1 -1
  303. package/components/select.d.ts +7 -0
  304. package/components/select.js +2 -0
  305. package/{esm/_internal → components}/select.js.map +1 -1
  306. package/components/side-navigation.d.ts +7 -0
  307. package/components/side-navigation.js +2 -0
  308. package/{esm/_internal → components}/side-navigation.js.map +1 -1
  309. package/components/skeleton.d.ts +3 -0
  310. package/components/skeleton.js +2 -0
  311. package/{esm/_internal → components}/skeleton.js.map +1 -1
  312. package/components/slider.d.ts +3 -0
  313. package/components/slider.js +2 -0
  314. package/{esm/_internal → components}/slider.js.map +1 -1
  315. package/components/slideshow.d.ts +7 -0
  316. package/components/slideshow.js +2 -0
  317. package/{esm/_internal → components}/slideshow.js.map +1 -1
  318. package/components/switch.d.ts +3 -0
  319. package/components/switch.js +2 -0
  320. package/{esm/_internal → components}/switch.js.map +1 -1
  321. package/components/table.d.ts +3 -0
  322. package/components/table.js +2 -0
  323. package/{esm/_internal → components}/table.js.map +1 -1
  324. package/components/tabs.d.ts +4 -0
  325. package/components/tabs.js +2 -0
  326. package/{esm/_internal → components}/tabs.js.map +1 -1
  327. package/components/text-field.d.ts +7 -0
  328. package/components/text-field.js +2 -0
  329. package/{esm/_internal → components}/text-field.js.map +1 -1
  330. package/components/text.d.ts +3 -0
  331. package/components/text.js +2 -0
  332. package/components/text.js.map +1 -0
  333. package/components/thumbnail.d.ts +4 -0
  334. package/components/thumbnail.js +3 -0
  335. package/{esm/_internal → components}/thumbnail.js.map +1 -1
  336. package/components/toolbar.d.ts +3 -0
  337. package/components/toolbar.js +2 -0
  338. package/{esm/_internal → components}/toolbar.js.map +1 -1
  339. package/components/tooltip.d.ts +4 -0
  340. package/components/tooltip.js +2 -0
  341. package/{esm/_internal → components}/tooltip.js.map +1 -1
  342. package/components/uploader.d.ts +3 -0
  343. package/components/uploader.js +2 -0
  344. package/{esm/_internal → components}/uploader.js.map +1 -1
  345. package/components/user-block.d.ts +5 -0
  346. package/components/user-block.js +2 -0
  347. package/{esm/_internal → components}/user-block.js.map +1 -1
  348. package/components.d.ts +2 -0
  349. package/{esm/_internal/components.js → components.js} +2 -1
  350. package/components.js.map +1 -0
  351. package/index.d.ts +56 -0
  352. package/index.js +57 -0
  353. package/{esm/index.js.map → index.js.map} +1 -1
  354. package/package.json +7 -7
  355. package/src/components/alert-dialog/AlertDialog.tsx +2 -1
  356. package/src/components/autocomplete/Autocomplete.tsx +2 -2
  357. package/src/components/autocomplete/AutocompleteMultiple.tsx +2 -1
  358. package/src/components/avatar/Avatar.tsx +2 -1
  359. package/src/components/badge/Badge.test.tsx +1 -1
  360. package/src/components/badge/Badge.tsx +2 -1
  361. package/src/components/button/Button.test.tsx +1 -1
  362. package/src/components/button/Button.tsx +2 -1
  363. package/src/components/button/ButtonGroup.tsx +2 -1
  364. package/src/components/button/ButtonRoot.test.tsx +1 -1
  365. package/src/components/button/ButtonRoot.tsx +2 -1
  366. package/src/components/button/IconButton.tsx +2 -1
  367. package/src/components/checkbox/Checkbox.test.tsx +1 -1
  368. package/src/components/checkbox/Checkbox.tsx +2 -1
  369. package/src/components/chip/Chip.test.tsx +1 -1
  370. package/src/components/chip/Chip.tsx +3 -1
  371. package/src/components/chip/ChipGroup.tsx +2 -1
  372. package/src/components/comment-block/CommentBlock.tsx +2 -1
  373. package/src/components/date-picker/DatePicker.tsx +1 -1
  374. package/src/components/date-picker/DatePickerControlled.tsx +1 -1
  375. package/src/components/date-picker/DatePickerField.tsx +1 -1
  376. package/src/components/date-picker/constants.ts +1 -1
  377. package/src/components/date-picker/types.ts +1 -1
  378. package/src/components/dialog/Dialog.tsx +4 -8
  379. package/src/components/divider/Divider.test.tsx +1 -1
  380. package/src/components/divider/Divider.tsx +3 -2
  381. package/src/components/drag-handle/DragHandle.tsx +2 -1
  382. package/src/components/dropdown/Dropdown.tsx +2 -1
  383. package/src/components/expansion-panel/ExpansionPanel.test.tsx +1 -1
  384. package/src/components/expansion-panel/ExpansionPanel.tsx +3 -10
  385. package/src/components/flag/Flag.test.tsx +1 -1
  386. package/src/components/flag/Flag.tsx +2 -1
  387. package/src/components/flex-box/FlexBox.stories.tsx +68 -4
  388. package/src/components/flex-box/FlexBox.tsx +14 -7
  389. package/src/components/flex-box/__snapshots__/FlexBox.test.tsx.snap +51 -0
  390. package/src/components/generic-block/GenericBlock.stories.jsx +23 -1
  391. package/src/components/generic-block/GenericBlock.tsx +3 -1
  392. package/src/components/grid/Grid.tsx +2 -1
  393. package/src/components/grid/GridItem.tsx +2 -1
  394. package/src/components/heading/Heading.stories.tsx +108 -0
  395. package/src/components/heading/Heading.test.tsx +77 -0
  396. package/src/components/heading/Heading.tsx +63 -0
  397. package/src/components/heading/HeadingLevelProvider.tsx +30 -0
  398. package/src/components/heading/constants.ts +16 -0
  399. package/src/components/heading/context.tsx +13 -0
  400. package/src/components/heading/index.ts +3 -0
  401. package/src/components/heading/useHeadingLevel.tsx +8 -0
  402. package/src/components/icon/Icon.test.tsx +1 -1
  403. package/src/components/icon/Icon.tsx +2 -1
  404. package/src/components/image-block/ImageBlock.tsx +2 -1
  405. package/src/components/index.ts +2 -1
  406. package/src/components/input-helper/InputHelper.tsx +2 -1
  407. package/src/components/input-label/InputLabel.tsx +2 -1
  408. package/src/components/lightbox/Lightbox.tsx +2 -1
  409. package/src/components/link/Link.tsx +2 -1
  410. package/src/components/link-preview/LinkPreview.test.tsx +1 -1
  411. package/src/components/link-preview/LinkPreview.tsx +2 -1
  412. package/src/components/list/List.tsx +2 -1
  413. package/src/components/list/ListDivider.tsx +2 -1
  414. package/src/components/list/ListItem.tsx +3 -8
  415. package/src/components/list/ListSubheader.tsx +2 -1
  416. package/src/components/list/useInteractiveList.tsx +1 -1
  417. package/src/components/message/Message.test.tsx +1 -1
  418. package/src/components/message/Message.tsx +2 -1
  419. package/src/components/mosaic/Mosaic.tsx +2 -1
  420. package/src/components/notification/Notification.tsx +2 -1
  421. package/src/components/popover/Popover.tsx +2 -1
  422. package/src/components/post-block/PostBlock.tsx +2 -1
  423. package/src/components/progress/Progress.tsx +2 -1
  424. package/src/components/progress-tracker/ProgressTracker.tsx +2 -1
  425. package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +1 -1
  426. package/src/components/progress-tracker/ProgressTrackerStep.tsx +2 -1
  427. package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +2 -1
  428. package/src/components/radio-button/RadioButton.test.tsx +1 -1
  429. package/src/components/radio-button/RadioButton.tsx +2 -1
  430. package/src/components/radio-button/RadioGroup.tsx +2 -1
  431. package/src/components/select/Select.test.tsx +1 -1
  432. package/src/components/select/Select.tsx +2 -1
  433. package/src/components/select/SelectMultiple.test.tsx +1 -1
  434. package/src/components/select/SelectMultiple.tsx +2 -1
  435. package/src/components/select/WithSelectContext.tsx +1 -1
  436. package/src/components/select/constants.ts +1 -1
  437. package/src/components/side-navigation/SideNavigation.tsx +2 -1
  438. package/src/components/side-navigation/SideNavigationItem.test.tsx +1 -1
  439. package/src/components/side-navigation/SideNavigationItem.tsx +3 -9
  440. package/src/components/skeleton/SkeletonCircle.tsx +2 -1
  441. package/src/components/skeleton/SkeletonRectangle.tsx +2 -1
  442. package/src/components/skeleton/SkeletonTypography.tsx +2 -1
  443. package/src/components/slider/Slider.tsx +2 -1
  444. package/src/components/slideshow/Slides.tsx +35 -4
  445. package/src/components/slideshow/Slideshow.stories.tsx +98 -2
  446. package/src/components/slideshow/Slideshow.tsx +16 -4
  447. package/src/components/slideshow/SlideshowControls.stories.tsx +1 -1
  448. package/src/components/slideshow/SlideshowControls.tsx +51 -12
  449. package/src/components/slideshow/SlideshowItem.tsx +2 -6
  450. package/src/components/slideshow/SlideshowItemGroup.tsx +64 -0
  451. package/src/components/slideshow/__snapshots__/Slideshow.test.tsx.snap +4 -1
  452. package/src/components/slideshow/useSlideFocusManagement.tsx +92 -0
  453. package/src/components/switch/Switch.test.tsx +1 -1
  454. package/src/components/switch/Switch.tsx +2 -1
  455. package/src/components/table/Table.tsx +2 -1
  456. package/src/components/table/TableBody.tsx +2 -1
  457. package/src/components/table/TableCell.tsx +3 -1
  458. package/src/components/table/TableHeader.tsx +2 -1
  459. package/src/components/table/TableRow.tsx +2 -1
  460. package/src/components/tabs/Tab.test.tsx +1 -1
  461. package/src/components/tabs/Tab.tsx +2 -1
  462. package/src/components/tabs/TabList.test.tsx +1 -1
  463. package/src/components/tabs/TabList.tsx +2 -1
  464. package/src/components/tabs/TabPanel.tsx +2 -1
  465. package/src/components/text/Text.stories.tsx +80 -0
  466. package/src/components/text/Text.test.tsx +62 -0
  467. package/src/components/text/Text.tsx +95 -0
  468. package/src/components/text/index.ts +1 -0
  469. package/src/components/text-field/TextField.test.tsx +1 -1
  470. package/src/components/text-field/TextField.tsx +2 -1
  471. package/src/components/thumbnail/Thumbnail.tsx +2 -1
  472. package/src/components/thumbnail/types.ts +1 -1
  473. package/src/components/toolbar/Toolbar.tsx +2 -1
  474. package/src/components/tooltip/Tooltip.tsx +2 -1
  475. package/src/components/tooltip/useTooltipOpen.tsx +1 -1
  476. package/src/components/uploader/Uploader.test.tsx +1 -1
  477. package/src/components/uploader/Uploader.tsx +2 -1
  478. package/src/components/user-block/UserBlock.tsx +2 -1
  479. package/src/hooks/useCallbackOnEscape.ts +2 -1
  480. package/src/hooks/useClickAway.tsx +1 -1
  481. package/src/hooks/useDisableBodyScroll.ts +1 -1
  482. package/src/hooks/useFocusTrap.ts +1 -1
  483. package/src/hooks/useInterval.tsx +1 -1
  484. package/src/hooks/useOnResize.ts +1 -1
  485. package/src/hooks/useRovingTabIndex.tsx +9 -0
  486. package/src/index.ts +6 -0
  487. package/src/testing/utils/commonTestsSuite.ts +1 -1
  488. package/src/utils/{getRootClassName.ts → className.ts} +2 -0
  489. package/src/utils/event.ts +1 -0
  490. package/src/utils/focus/constants.ts +5 -0
  491. package/src/utils/focus/getFirstAndLastFocusable.ts +4 -10
  492. package/src/utils/focus/getFocusableElements.test.ts +151 -0
  493. package/src/utils/focus/getFocusableElements.ts +7 -0
  494. package/src/utils/index.ts +5 -0
  495. package/src/utils/utils.test.ts +1 -1
  496. package/types.d.ts +96 -11
  497. package/utils/index.d.ts +29 -0
  498. package/utils/index.js +2 -0
  499. package/utils/index.js.map +1 -0
  500. package/esm/_internal/AlertDialog.js.map +0 -1
  501. package/esm/_internal/AutocompleteMultiple.js.map +0 -1
  502. package/esm/_internal/Avatar2.js.map +0 -1
  503. package/esm/_internal/Badge2.js.map +0 -1
  504. package/esm/_internal/Button2.js.map +0 -1
  505. package/esm/_internal/ButtonGroup.js.map +0 -1
  506. package/esm/_internal/ButtonRoot.js.map +0 -1
  507. package/esm/_internal/Checkbox2.js.map +0 -1
  508. package/esm/_internal/Chip2.js.map +0 -1
  509. package/esm/_internal/ChipGroup.js.map +0 -1
  510. package/esm/_internal/ClickAwayProvider.js +0 -213
  511. package/esm/_internal/ClickAwayProvider.js.map +0 -1
  512. package/esm/_internal/CommentBlock.js.map +0 -1
  513. package/esm/_internal/DatePickerField.js.map +0 -1
  514. package/esm/_internal/Dialog2.js.map +0 -1
  515. package/esm/_internal/Divider2.js.map +0 -1
  516. package/esm/_internal/DragHandle.js.map +0 -1
  517. package/esm/_internal/Dropdown2.js.map +0 -1
  518. package/esm/_internal/ExpansionPanel.js.map +0 -1
  519. package/esm/_internal/Flag2.js.map +0 -1
  520. package/esm/_internal/FlexBox.js.map +0 -1
  521. package/esm/_internal/GenericBlock.js.map +0 -1
  522. package/esm/_internal/GridItem.js.map +0 -1
  523. package/esm/_internal/Icon2.js.map +0 -1
  524. package/esm/_internal/IconButton.js.map +0 -1
  525. package/esm/_internal/ImageBlock.js.map +0 -1
  526. package/esm/_internal/InputHelper.js.map +0 -1
  527. package/esm/_internal/InputLabel.js.map +0 -1
  528. package/esm/_internal/Lightbox2.js.map +0 -1
  529. package/esm/_internal/Link2.js.map +0 -1
  530. package/esm/_internal/LinkPreview.js.map +0 -1
  531. package/esm/_internal/List2.js.map +0 -1
  532. package/esm/_internal/ListSubheader.js.map +0 -1
  533. package/esm/_internal/Message2.js.map +0 -1
  534. package/esm/_internal/Mosaic2.js.map +0 -1
  535. package/esm/_internal/Notification2.js.map +0 -1
  536. package/esm/_internal/Popover2.js.map +0 -1
  537. package/esm/_internal/PostBlock.js.map +0 -1
  538. package/esm/_internal/Progress2.js.map +0 -1
  539. package/esm/_internal/ProgressTrackerStepPanel.js.map +0 -1
  540. package/esm/_internal/RadioGroup.js.map +0 -1
  541. package/esm/_internal/SelectMultiple.js.map +0 -1
  542. package/esm/_internal/SideNavigationItem.js.map +0 -1
  543. package/esm/_internal/SkeletonTypography.js.map +0 -1
  544. package/esm/_internal/Slider2.js.map +0 -1
  545. package/esm/_internal/Slides.js.map +0 -1
  546. package/esm/_internal/Switch2.js.map +0 -1
  547. package/esm/_internal/TabPanel.js.map +0 -1
  548. package/esm/_internal/TableRow.js.map +0 -1
  549. package/esm/_internal/TextField.js.map +0 -1
  550. package/esm/_internal/Thumbnail2.js.map +0 -1
  551. package/esm/_internal/Toolbar2.js.map +0 -1
  552. package/esm/_internal/Tooltip2.js.map +0 -1
  553. package/esm/_internal/Uploader2.js.map +0 -1
  554. package/esm/_internal/UserBlock.js.map +0 -1
  555. package/esm/_internal/_rollupPluginBabelHelpers.js.map +0 -1
  556. package/esm/_internal/alert-dialog.js +0 -34
  557. package/esm/_internal/autocomplete.js +0 -32
  558. package/esm/_internal/avatar.js +0 -13
  559. package/esm/_internal/badge.js +0 -10
  560. package/esm/_internal/button.js +0 -25
  561. package/esm/_internal/checkbox.js +0 -14
  562. package/esm/_internal/chip.js +0 -12
  563. package/esm/_internal/comment-block.js +0 -24
  564. package/esm/_internal/components.js.map +0 -1
  565. package/esm/_internal/constants.js.map +0 -1
  566. package/esm/_internal/date-picker.js +0 -32
  567. package/esm/_internal/dialog.js +0 -27
  568. package/esm/_internal/divider.js +0 -10
  569. package/esm/_internal/drag-handle.js +0 -11
  570. package/esm/_internal/dropdown.js +0 -21
  571. package/esm/_internal/expansion-panel.js +0 -32
  572. package/esm/_internal/expansion-panel.js.map +0 -1
  573. package/esm/_internal/flag.js +0 -11
  574. package/esm/_internal/flex-box.js +0 -11
  575. package/esm/_internal/generic-block.js +0 -20
  576. package/esm/_internal/getRootClassName.js.map +0 -1
  577. package/esm/_internal/grid.js +0 -10
  578. package/esm/_internal/icon.js +0 -10
  579. package/esm/_internal/image-block.js +0 -14
  580. package/esm/_internal/input-helper.js +0 -10
  581. package/esm/_internal/input-label.js +0 -10
  582. package/esm/_internal/lightbox.js +0 -27
  583. package/esm/_internal/link-preview.js +0 -15
  584. package/esm/_internal/link.js +0 -12
  585. package/esm/_internal/list.js +0 -15
  586. package/esm/_internal/mergeRefs.js.map +0 -1
  587. package/esm/_internal/message.js +0 -11
  588. package/esm/_internal/mosaic.js +0 -14
  589. package/esm/_internal/notification.js +0 -18
  590. package/esm/_internal/partitionMulti.js.map +0 -1
  591. package/esm/_internal/popover.js +0 -15
  592. package/esm/_internal/post-block.js +0 -15
  593. package/esm/_internal/progress-tracker.js +0 -16
  594. package/esm/_internal/progress.js +0 -10
  595. package/esm/_internal/radio-button.js +0 -13
  596. package/esm/_internal/renderLink.js.map +0 -1
  597. package/esm/_internal/select.js +0 -31
  598. package/esm/_internal/side-navigation.js +0 -25
  599. package/esm/_internal/skeleton.js +0 -10
  600. package/esm/_internal/slider.js +0 -13
  601. package/esm/_internal/slideshow.js +0 -27
  602. package/esm/_internal/switch.js +0 -13
  603. package/esm/_internal/table.js +0 -12
  604. package/esm/_internal/tabs.js +0 -14
  605. package/esm/_internal/text-field.js +0 -26
  606. package/esm/_internal/thumbnail.js +0 -13
  607. package/esm/_internal/toolbar.js +0 -9
  608. package/esm/_internal/tooltip.js +0 -18
  609. package/esm/_internal/type.js.map +0 -1
  610. package/esm/_internal/types.js.map +0 -1
  611. package/esm/_internal/uploader.js +0 -11
  612. package/esm/_internal/useDelayedVisibility.js.map +0 -1
  613. package/esm/_internal/useDisableBodyScroll.js.map +0 -1
  614. package/esm/_internal/useFocusTrap.js.map +0 -1
  615. package/esm/_internal/useRovingTabIndex.js.map +0 -1
  616. package/esm/_internal/user-block.js +0 -17
  617. package/esm/index.js +0 -91
  618. package/esm/index2.js.map +0 -1
  619. package/src/utils/index.tsx +0 -7
@@ -0,0 +1,92 @@
1
+ import React, { useEffect } from 'react';
2
+ import { getFocusableElements } from '@lumx/react/utils/focus/getFocusableElements';
3
+
4
+ export interface UseSlideFocusManagementProps {
5
+ isSlideDisplayed?: boolean;
6
+ slideRef: React.RefObject<HTMLDivElement>;
7
+ }
8
+
9
+ /**
10
+ * Classname set on elements whose focus was blocked.
11
+ * This is to easily find elements that have been tempered with,
12
+ * and not elements whose focus was already initially blocked.
13
+ * */
14
+ const BLOCKED_FOCUS_CLASSNAME = `focus-blocked`;
15
+
16
+ /**
17
+ * Manage how slides must behave when visible or not.
18
+ * When not visible, they should be hidden from screen readers and not focusable.
19
+ */
20
+ export const useSlideFocusManagement = ({ isSlideDisplayed, slideRef }: UseSlideFocusManagementProps) => {
21
+ useEffect(() => {
22
+ const element = slideRef?.current;
23
+
24
+ if (!element) {
25
+ return undefined;
26
+ }
27
+
28
+ /**
29
+ * Display given slide to screen readers and, if focus was blocked, restore focus on elements.
30
+ */
31
+ const enableSlide = () => {
32
+ // Hide from screen readers
33
+ element.setAttribute('aria-hidden', 'false');
34
+ // Find elements we have blocked focus on
35
+ element.querySelectorAll(`.${BLOCKED_FOCUS_CLASSNAME}`).forEach((focusableElement) => {
36
+ focusableElement.removeAttribute('tabindex');
37
+ focusableElement.classList.remove(BLOCKED_FOCUS_CLASSNAME);
38
+ });
39
+ };
40
+
41
+ /**
42
+ * Hide given slide from screen readers and block focus on all focusable elements within.
43
+ */
44
+ const blockSlide = () => {
45
+ element.setAttribute('aria-hidden', 'true');
46
+ getFocusableElements(element).forEach((focusableElement) => {
47
+ focusableElement.setAttribute('tabindex', '-1');
48
+ focusableElement.classList.add(BLOCKED_FOCUS_CLASSNAME);
49
+ });
50
+ };
51
+
52
+ const handleDisplay = () => {
53
+ if (!element) {
54
+ return;
55
+ }
56
+ if (isSlideDisplayed) {
57
+ enableSlide();
58
+ } else {
59
+ blockSlide();
60
+ }
61
+ };
62
+
63
+ // Callback function to execute when mutations are observed
64
+ const callback: MutationCallback = (mutationsList) => {
65
+ if (element) {
66
+ for (const mutation of mutationsList) {
67
+ if (mutation.type === 'childList') {
68
+ handleDisplay();
69
+ }
70
+ }
71
+ }
72
+ };
73
+
74
+ // Create an observer instance linked to the callback function
75
+ const observer = new MutationObserver(callback);
76
+
77
+ if (element) {
78
+ handleDisplay();
79
+
80
+ /** If slide is hidden, start observing for elements to block focus */
81
+ if (!isSlideDisplayed) {
82
+ observer.observe(element, { attributes: true, childList: true, subtree: true });
83
+ }
84
+ }
85
+
86
+ return () => {
87
+ if (!isSlideDisplayed) {
88
+ observer.disconnect();
89
+ }
90
+ };
91
+ }, [isSlideDisplayed, slideRef]);
92
+ };
@@ -7,7 +7,7 @@ import { build, oneOf } from 'test-data-bot';
7
7
  import without from 'lodash/without';
8
8
 
9
9
  import { Wrapper, commonTestsSuite } from '@lumx/react/testing/utils';
10
- import { getBasicClass } from '@lumx/react/utils';
10
+ import { getBasicClass } from '@lumx/react/utils/className';
11
11
 
12
12
  import { Theme, Alignment } from '@lumx/react';
13
13
  import { Switch, SwitchProps } from './Switch';
@@ -7,7 +7,8 @@ import isEmpty from 'lodash/isEmpty';
7
7
 
8
8
  import { Alignment, InputHelper, InputLabel, Theme } from '@lumx/react';
9
9
 
10
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme } from '@lumx/react/utils';
10
+ import { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';
11
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
11
12
 
12
13
  /**
13
14
  * Defines the props of the component.
@@ -4,7 +4,8 @@ import classNames from 'classnames';
4
4
 
5
5
  import { Theme } from '@lumx/react';
6
6
 
7
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme } from '@lumx/react/utils';
7
+ import { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';
8
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
8
9
 
9
10
  /**
10
11
  * Defines the props of the component.
@@ -2,7 +2,8 @@ import React, { forwardRef } from 'react';
2
2
 
3
3
  import classNames from 'classnames';
4
4
 
5
- import { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';
5
+ import { Comp, GenericProps } from '@lumx/react/utils/type';
6
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
6
7
 
7
8
  /**
8
9
  * Defines the props of the component.
@@ -3,7 +3,9 @@ import React, { forwardRef, useCallback } from 'react';
3
3
  import classNames from 'classnames';
4
4
 
5
5
  import { Icon, Size } from '@lumx/react';
6
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, onEnterPressed, ValueOf } from '@lumx/react/utils';
6
+ import { Comp, GenericProps, ValueOf } from '@lumx/react/utils/type';
7
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
8
+ import { onEnterPressed } from '@lumx/react/utils/event';
7
9
 
8
10
  import { mdiArrowDown, mdiArrowUp } from '@lumx/icons';
9
11
 
@@ -2,7 +2,8 @@ import React, { forwardRef } from 'react';
2
2
 
3
3
  import classNames from 'classnames';
4
4
 
5
- import { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';
5
+ import { Comp, GenericProps } from '@lumx/react/utils/type';
6
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
6
7
 
7
8
  /**
8
9
  * Defines the props of the component.
@@ -2,7 +2,8 @@ import React, { forwardRef } from 'react';
2
2
 
3
3
  import classNames from 'classnames';
4
4
 
5
- import { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';
5
+ import { Comp, GenericProps } from '@lumx/react/utils/type';
6
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
6
7
 
7
8
  /**
8
9
  * Defines the props of the component.
@@ -1,6 +1,6 @@
1
1
  import { mdiCheck } from '@lumx/icons';
2
2
  import { commonTestsSuite, Wrapper } from '@lumx/react/testing/utils';
3
- import { getBasicClass } from '@lumx/react/utils';
3
+ import { getBasicClass } from '@lumx/react/utils/className';
4
4
 
5
5
  import { mount, shallow } from 'enzyme';
6
6
  import 'jest-enzyme';
@@ -1,6 +1,7 @@
1
1
  import { Icon, IconProps, Size } from '@lumx/react';
2
2
  import { CSS_PREFIX } from '@lumx/react/constants';
3
- import { Comp, GenericProps, handleBasicClasses } from '@lumx/react/utils';
3
+ import { Comp, GenericProps } from '@lumx/react/utils/type';
4
+ import { handleBasicClasses } from '@lumx/react/utils/className';
4
5
 
5
6
  import classNames from 'classnames';
6
7
  import React, { FocusEventHandler, forwardRef, KeyboardEventHandler, ReactNode, useCallback } from 'react';
@@ -1,7 +1,7 @@
1
1
  import { Tab, Alignment } from '@lumx/react';
2
2
 
3
3
  import { Wrapper, commonTestsSuite } from '@lumx/react/testing/utils';
4
- import { getBasicClass } from '@lumx/react/utils';
4
+ import { getBasicClass } from '@lumx/react/utils/className';
5
5
 
6
6
  import { mount, shallow } from 'enzyme';
7
7
  import 'jest-enzyme';
@@ -1,6 +1,7 @@
1
1
  import { Alignment, Theme } from '@lumx/react';
2
2
  import { CSS_PREFIX } from '@lumx/react/constants';
3
- import { Comp, GenericProps, handleBasicClasses, HasTheme } from '@lumx/react/utils';
3
+ import { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';
4
+ import { handleBasicClasses } from '@lumx/react/utils/className';
4
5
  import { mergeRefs } from '@lumx/react/utils/mergeRefs';
5
6
 
6
7
  import classNames from 'classnames';
@@ -1,6 +1,7 @@
1
1
  import { useTabProviderContext } from '@lumx/react/components/tabs/state';
2
2
  import { CSS_PREFIX } from '@lumx/react/constants';
3
- import { Comp, GenericProps, handleBasicClasses } from '@lumx/react/utils';
3
+ import { Comp, GenericProps } from '@lumx/react/utils/type';
4
+ import { handleBasicClasses } from '@lumx/react/utils/className';
4
5
 
5
6
  import classNames from 'classnames';
6
7
  import React, { forwardRef } from 'react';
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import { ColorPalette, ColorVariant, TypographyCustom, TypographyInterface } from '@lumx/react';
3
+ import { Text } from './Text';
4
+
5
+ export default { title: 'LumX components/text/Text' };
6
+
7
+ export const Default = () => <Text as="p">Some text</Text>;
8
+
9
+ const withResizableBox = (Story: any) => (
10
+ <div
11
+ style={{
12
+ width: 150,
13
+ height: 60,
14
+ border: '1px solid red',
15
+ resize: 'both',
16
+ overflow: 'hidden',
17
+ }}
18
+ >
19
+ <Story />
20
+ </div>
21
+ );
22
+
23
+ export const Truncate = () => (
24
+ <Text as="p" truncate>
25
+ Some very very very long text
26
+ </Text>
27
+ );
28
+ Truncate.decorators = [withResizableBox];
29
+
30
+ export const TruncateMultiline = () => (
31
+ <Text as="p" truncate={{ lines: 2 }}>
32
+ Some very very very very very very very very very long text
33
+ </Text>
34
+ );
35
+ TruncateMultiline.decorators = [withResizableBox];
36
+
37
+ export const AllTypography = () => {
38
+ const typographies = [undefined, ...Object.values(TypographyInterface), ...Object.values(TypographyCustom)];
39
+ return (
40
+ <table>
41
+ {typographies.map((typography) => (
42
+ <tr key={typography}>
43
+ <td>{typography}</td>
44
+ <td>
45
+ <Text as="p" typography={typography}>
46
+ Some text
47
+ </Text>
48
+ </td>
49
+ </tr>
50
+ ))}
51
+ </table>
52
+ );
53
+ };
54
+
55
+ export const AllColor = () => {
56
+ const colorVariants = [undefined, ...Object.values(ColorVariant)];
57
+ const colors = [undefined, ...Object.values(ColorPalette)];
58
+ return (
59
+ <table style={{ borderCollapse: 'separate', borderSpacing: 5 }}>
60
+ <tr>
61
+ <td />
62
+ {colorVariants.map((colorVariant) => (
63
+ <td key={colorVariant}>{colorVariant}</td>
64
+ ))}
65
+ </tr>
66
+ {colors.map((color) => (
67
+ <tr key={color}>
68
+ <td>{color}</td>
69
+ {colorVariants.map((colorVariant) => (
70
+ <td key={colorVariant}>
71
+ <Text as="p" color={color} colorVariant={colorVariant}>
72
+ Some text
73
+ </Text>
74
+ </td>
75
+ ))}
76
+ </tr>
77
+ ))}
78
+ </table>
79
+ );
80
+ };
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+
3
+ import { shallow } from 'enzyme';
4
+ import 'jest-enzyme';
5
+
6
+ import { commonTestsSuite } from '@lumx/react/testing/utils';
7
+ import { Text, TextProps } from './Text';
8
+
9
+ const setup = (props: Partial<TextProps> = {}) => {
10
+ const wrapper = shallow(<Text as="span" {...props} />);
11
+ return { props, wrapper };
12
+ };
13
+
14
+ describe(`<${Text.displayName}>`, () => {
15
+ describe('Snapshots and structure', () => {
16
+ it('should render default', () => {
17
+ const { wrapper } = setup({ children: 'Some text' });
18
+ expect(wrapper).toHaveDisplayName('span');
19
+ expect(wrapper.prop('className')).toBe(Text.className);
20
+ });
21
+
22
+ it('should render with as', () => {
23
+ const { wrapper } = setup({ children: 'Some text', as: 'p' });
24
+ expect(wrapper).toHaveDisplayName('p');
25
+ expect(wrapper.prop('className')).toBe(Text.className);
26
+ });
27
+
28
+ it('should render with typography', () => {
29
+ const { wrapper } = setup({ typography: 'body2', children: 'Some text' });
30
+ expect(wrapper).toHaveDisplayName('span');
31
+ expect(wrapper).toHaveClassName('lumx-typography-body2');
32
+ });
33
+
34
+ it('should render with color', () => {
35
+ const { wrapper } = setup({ color: 'blue', children: 'Some text' });
36
+ expect(wrapper).toHaveDisplayName('span');
37
+ expect(wrapper).toHaveClassName('lumx-color-font-blue-N');
38
+ });
39
+
40
+ it('should render with color and variant', () => {
41
+ const { wrapper } = setup({ color: 'blue', colorVariant: 'D2', children: 'Some text' });
42
+ expect(wrapper).toHaveDisplayName('span');
43
+ expect(wrapper).toHaveClassName('lumx-color-font-blue-D2');
44
+ });
45
+
46
+ it('should render truncated', () => {
47
+ const { wrapper } = setup({ truncate: true });
48
+ expect(wrapper).toHaveDisplayName('span');
49
+ expect(wrapper).toHaveClassName('lumx-text--is-truncated');
50
+ });
51
+
52
+ it('should render truncated multiline', () => {
53
+ const { wrapper } = setup({ truncate: { lines: 2 } });
54
+ expect(wrapper).toHaveDisplayName('span');
55
+ expect(wrapper).toHaveClassName('lumx-text--is-truncated-multiline');
56
+ expect(wrapper).toHaveStyle({ '--lumx-text-truncate-lines': 2 });
57
+ });
58
+ });
59
+
60
+ // Common tests suite.
61
+ commonTestsSuite(setup, { className: 'wrapper', prop: 'wrapper' }, { className: Text.className });
62
+ });
@@ -0,0 +1,95 @@
1
+ import React, { forwardRef } from 'react';
2
+
3
+ import { Color, ColorVariant, Typography } from '@lumx/react';
4
+ import { Comp, GenericProps, HeadingElement } from '@lumx/react/utils/type';
5
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
6
+ import classNames from 'classnames';
7
+
8
+ type TextComponents = 'span' | 'p' | HeadingElement;
9
+
10
+ /**
11
+ * Defines the props of the component.
12
+ */
13
+ export interface TextProps extends GenericProps {
14
+ /**
15
+ * Color variant.
16
+ */
17
+ color?: Color;
18
+ /**
19
+ * Lightened or darkened variant of the selected color.
20
+ */
21
+ colorVariant?: ColorVariant;
22
+ /**
23
+ * Typography variant.
24
+ */
25
+ typography?: Typography;
26
+ /**
27
+ * Custom component to render the text.
28
+ */
29
+ as: TextComponents;
30
+ /**
31
+ * Control whether the text should truncate or not.
32
+ * Setting as `true` will make the text truncate on a single line.
33
+ * Setting as `{ lines: number }` will make the text truncate on a multiple lines.
34
+ */
35
+ truncate?: boolean | { lines: number };
36
+ }
37
+
38
+ /**
39
+ * Component display name.
40
+ */
41
+ const COMPONENT_NAME = 'Text';
42
+
43
+ /**
44
+ * Component default class name and class prefix.
45
+ */
46
+ const CLASSNAME = getRootClassName(COMPONENT_NAME);
47
+
48
+ /**
49
+ * Component default props.
50
+ */
51
+ const DEFAULT_PROPS = {} as const;
52
+
53
+ /**
54
+ * Text component.
55
+ *
56
+ * @param props Component props.
57
+ * @param ref Component ref.
58
+ * @return React element.
59
+ */
60
+ export const Text: Comp<TextProps> = forwardRef((props, ref) => {
61
+ const { as, children, className, color, colorVariant, typography, truncate, style, ...forwardedProps } = props;
62
+
63
+ const Component = as as TextComponents;
64
+ const colorClass = color && `lumx-color-font-${color}-${colorVariant || ColorVariant.N}`;
65
+ const typographyClass = typography && `lumx-typography-${typography}`;
66
+
67
+ // Truncate mode
68
+ const truncateLinesStyle = typeof truncate === 'object' &&
69
+ truncate.lines > 1 && { '--lumx-text-truncate-lines': truncate.lines };
70
+ const isTruncatedMultiline = !!truncateLinesStyle;
71
+ const isTruncated = !!truncate;
72
+
73
+ return (
74
+ <Component
75
+ ref={ref as React.Ref<any>}
76
+ className={classNames(
77
+ className,
78
+ handleBasicClasses({
79
+ prefix: CLASSNAME,
80
+ isTruncated: isTruncated && !isTruncatedMultiline,
81
+ isTruncatedMultiline,
82
+ }),
83
+ typographyClass,
84
+ colorClass,
85
+ )}
86
+ style={{ ...truncateLinesStyle, ...style }}
87
+ {...forwardedProps}
88
+ >
89
+ {children}
90
+ </Component>
91
+ );
92
+ });
93
+ Text.displayName = COMPONENT_NAME;
94
+ Text.className = CLASSNAME;
95
+ Text.defaultProps = DEFAULT_PROPS;
@@ -0,0 +1 @@
1
+ export * from './Text';
@@ -5,7 +5,7 @@ import 'jest-enzyme';
5
5
  import { build } from 'test-data-bot';
6
6
 
7
7
  import { Wrapper, commonTestsSuite } from '@lumx/react/testing/utils';
8
- import { getBasicClass } from '@lumx/react/utils';
8
+ import { getBasicClass } from '@lumx/react/utils/className';
9
9
 
10
10
  import { Kind } from '@lumx/react';
11
11
  import { TextField, TextFieldProps } from './TextField';
@@ -6,7 +6,8 @@ import { uid } from 'uid';
6
6
 
7
7
  import { mdiAlertCircle, mdiCheckCircle, mdiCloseCircle } from '@lumx/icons';
8
8
  import { Emphasis, Icon, IconButton, IconButtonProps, InputHelper, InputLabel, Kind, Size, Theme } from '@lumx/react';
9
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme } from '@lumx/react/utils';
9
+ import { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';
10
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
10
11
  import { mergeRefs } from '@lumx/react/utils/mergeRefs';
11
12
 
12
13
  /**
@@ -13,7 +13,8 @@ import classNames from 'classnames';
13
13
 
14
14
  import { AspectRatio, HorizontalAlignment, Icon, Size, Theme } from '@lumx/react';
15
15
 
16
- import { Comp, Falsy, GenericProps, getRootClassName, handleBasicClasses, HasTheme } from '@lumx/react/utils';
16
+ import { Comp, Falsy, GenericProps, HasTheme } from '@lumx/react/utils/type';
17
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
17
18
 
18
19
  import { mdiImageBroken } from '@lumx/icons';
19
20
  import { mergeRefs } from '@lumx/react/utils/mergeRefs';
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { AspectRatio, Size } from '@lumx/react';
3
- import { ValueOf } from '@lumx/react/utils';
3
+ import { ValueOf } from '@lumx/react/utils/type';
4
4
 
5
5
  /**
6
6
  * Focal point using vertical alignment, horizontal alignment or coordinates (from -1 to 1).
@@ -2,7 +2,8 @@ import React, { forwardRef, ReactNode } from 'react';
2
2
 
3
3
  import classNames from 'classnames';
4
4
 
5
- import { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';
5
+ import { Comp, GenericProps } from '@lumx/react/utils/type';
6
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
6
7
 
7
8
  /**
8
9
  * Defines the props of the component.
@@ -10,7 +10,8 @@ import { Placement } from '@lumx/react/components/popover/Popover';
10
10
 
11
11
  import { DOCUMENT } from '@lumx/react/constants';
12
12
 
13
- import { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';
13
+ import { Comp, GenericProps } from '@lumx/react/utils/type';
14
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
14
15
  import { mergeRefs } from '@lumx/react/utils/mergeRefs';
15
16
 
16
17
  import { useInjectTooltipRef } from './useInjectTooltipRef';
@@ -1,4 +1,4 @@
1
- import { onEscapePressed } from '@lumx/react/utils';
1
+ import { onEscapePressed } from '@lumx/react/utils/event';
2
2
  import { useEffect, useState } from 'react';
3
3
  import { browserDoesNotSupportHover } from '@lumx/react/utils/browserDoesNotSupportHover';
4
4
  import { TOOLTIP_HOVER_DELAY, TOOLTIP_LONG_PRESS_DELAY } from '@lumx/react/constants';
@@ -4,7 +4,7 @@ import { mount, shallow } from 'enzyme';
4
4
  import 'jest-enzyme';
5
5
 
6
6
  import { commonTestsSuite, Wrapper } from '@lumx/react/testing/utils';
7
- import { getBasicClass } from '@lumx/react/utils';
7
+ import { getBasicClass } from '@lumx/react/utils/className';
8
8
 
9
9
  import { Uploader, UploaderProps } from './Uploader';
10
10
 
@@ -3,7 +3,8 @@ import React, { forwardRef, MouseEventHandler } from 'react';
3
3
  import classNames from 'classnames';
4
4
 
5
5
  import { AspectRatio, Icon, Size, Theme } from '@lumx/react';
6
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme, ValueOf } from '@lumx/react/utils';
6
+ import { Comp, GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';
7
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
7
8
 
8
9
  /**
9
10
  * Uploader variants.
@@ -4,7 +4,8 @@ import classNames from 'classnames';
4
4
  import set from 'lodash/set';
5
5
 
6
6
  import { Avatar, ColorPalette, Link, Orientation, Size, Theme } from '@lumx/react';
7
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme } from '@lumx/react/utils';
7
+ import { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';
8
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
8
9
 
9
10
  import { AvatarProps } from '../avatar/Avatar';
10
11
 
@@ -1,5 +1,6 @@
1
1
  import { DOCUMENT } from '@lumx/react/constants';
2
- import { Callback, onEscapePressed } from '@lumx/react/utils';
2
+ import { Callback } from '@lumx/react/utils/type';
3
+ import { onEscapePressed } from '@lumx/react/utils/event';
3
4
  import { useEffect } from 'react';
4
5
  import { Listener, makeListenerTowerContext } from '@lumx/react/utils/makeListenerTowerContext';
5
6
 
@@ -1,6 +1,6 @@
1
1
  import { RefObject, useEffect } from 'react';
2
2
 
3
- import { Falsy } from '@lumx/react/utils';
3
+ import { Falsy } from '@lumx/react/utils/type';
4
4
 
5
5
  import isEmpty from 'lodash/isEmpty';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { useEffect } from 'react';
2
2
  import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';
3
- import { Falsy } from '@lumx/react/utils';
3
+ import { Falsy } from '@lumx/react/utils/type';
4
4
 
5
5
  /**
6
6
  * Disables the scroll on the body to make it only usable in the current modal element.
@@ -2,7 +2,7 @@ import { useEffect } from 'react';
2
2
 
3
3
  import { DOCUMENT } from '@lumx/react/constants';
4
4
  import { getFirstAndLastFocusable } from '@lumx/react/utils/focus/getFirstAndLastFocusable';
5
- import { Falsy } from '@lumx/react/utils';
5
+ import { Falsy } from '@lumx/react/utils/type';
6
6
  import { Listener, makeListenerTowerContext } from '@lumx/react/utils/makeListenerTowerContext';
7
7
 
8
8
  const FOCUS_TRAPS = makeListenerTowerContext();
@@ -1,7 +1,7 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
 
3
3
  import isFunction from 'lodash/isFunction';
4
- import { Callback } from '../utils';
4
+ import { Callback } from '@lumx/react/utils/type';
5
5
 
6
6
  /**
7
7
  * Making setInterval Declarative with React Hooks.
@@ -1,4 +1,4 @@
1
- import { Callback, Falsy } from '@lumx/react/utils';
1
+ import { Callback, Falsy } from '@lumx/react/utils/type';
2
2
  import { MutableRefObject, RefObject, useEffect, useRef } from 'react';
3
3
  import { WINDOW } from '@lumx/react/constants';
4
4
  import { ResizeObserver as Polyfill } from '@juggle/resize-observer';
@@ -4,6 +4,8 @@ interface UseRovingTabIndexOptions {
4
4
  parentRef: RefObject<HTMLElement>;
5
5
  elementSelector: string;
6
6
  keepTabIndex?: boolean;
7
+ /** Action to trigger when an element is focused using roving tab index */
8
+ onElementFocus?: (element: HTMLElement) => void;
7
9
  /** List of values to be used as extra dependencies of the useEffect */
8
10
  extraDependencies?: any[];
9
11
  }
@@ -12,6 +14,7 @@ export const useRovingTabIndex = ({
12
14
  parentRef,
13
15
  elementSelector,
14
16
  keepTabIndex,
17
+ onElementFocus,
15
18
  extraDependencies = [],
16
19
  }: UseRovingTabIndexOptions): void => {
17
20
  useEffect(
@@ -47,6 +50,12 @@ export const useRovingTabIndex = ({
47
50
  }
48
51
  const newElement = elements[newTabFocus];
49
52
  newElement?.focus();
53
+
54
+ // When an element is focused using roving tab index, trigger the onElementFocus callback
55
+ if (newElement && onElementFocus) {
56
+ onElementFocus(newElement);
57
+ }
58
+
50
59
  if (keepTabIndex) {
51
60
  (evt.currentTarget as HTMLElement).setAttribute('tabindex', '-1');
52
61
  newElement?.setAttribute('tabindex', '0');