@lumx/react 3.10.1-alpha.2 → 3.10.1-alpha.4

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 (334) hide show
  1. package/_internal/{8d67e1e3.d.ts → index.d.ts} +1 -1
  2. package/_internal/index.js +99 -0
  3. package/_internal/index.js.map +1 -0
  4. package/index.d.ts +3000 -66
  5. package/index.js +14561 -64
  6. package/index.js.map +1 -1
  7. package/package.json +3 -3
  8. package/src/components/button/Button.tsx +4 -5
  9. package/src/components/button/ButtonRoot.tsx +1 -3
  10. package/src/components/chip/Chip.tsx +7 -11
  11. package/src/components/date-picker/DatePickerControlled.tsx +1 -1
  12. package/src/components/dialog/Dialog.tsx +1 -1
  13. package/src/components/expansion-panel/ExpansionPanel.test.tsx +2 -2
  14. package/src/components/expansion-panel/ExpansionPanel.tsx +14 -18
  15. package/src/components/flex-box/FlexBox.tsx +1 -1
  16. package/src/components/generic-block/GenericBlock.tsx +6 -7
  17. package/src/components/generic-block/constants.ts +9 -4
  18. package/src/components/grid-column/GridColumn.tsx +1 -2
  19. package/src/components/image-lightbox/internal/ImageSlide.tsx +2 -2
  20. package/src/components/image-lightbox/internal/ImageSlideshow.tsx +4 -8
  21. package/src/components/image-lightbox/useImageLightbox.tsx +3 -4
  22. package/src/components/link/Link.tsx +3 -5
  23. package/src/components/list/ListItem.tsx +2 -3
  24. package/src/components/list/useInteractiveList.tsx +1 -2
  25. package/src/components/mosaic/Mosaic.test.tsx +3 -3
  26. package/src/components/mosaic/Mosaic.tsx +2 -3
  27. package/src/components/navigation/Navigation.tsx +42 -37
  28. package/src/components/navigation/NavigationSection.tsx +76 -79
  29. package/src/components/notification/Notification.tsx +1 -5
  30. package/src/components/popover/usePopoverStyle.tsx +3 -1
  31. package/src/components/popover/useRestoreFocusOnClose.tsx +1 -1
  32. package/src/components/popover-dialog/PopoverDialog.test.tsx +1 -1
  33. package/src/components/post-block/PostBlock.tsx +4 -8
  34. package/src/components/progress-tracker/ProgressTracker.stories.tsx +11 -11
  35. package/src/components/select/Select.stories.tsx +14 -5
  36. package/src/components/select/Select.test.tsx +2 -2
  37. package/src/components/select/Select.tsx +1 -2
  38. package/src/components/select/SelectMultiple.stories.tsx +12 -10
  39. package/src/components/side-navigation/SideNavigationItem.tsx +1 -1
  40. package/src/components/slideshow/Slides.tsx +1 -1
  41. package/src/components/slideshow/SlideshowControls.tsx +1 -1
  42. package/src/components/slideshow/useSlideFocusManagement.tsx +1 -1
  43. package/src/components/switch/Switch.tsx +1 -2
  44. package/src/components/tabs/Tabs.stories.tsx +3 -4
  45. package/src/components/text-field/TextField.test.tsx +4 -4
  46. package/src/components/text-field/TextField.tsx +2 -3
  47. package/src/components/tooltip/Tooltip.test.tsx +2 -2
  48. package/src/components/tooltip/useTooltipOpen.tsx +3 -3
  49. package/src/components/user-block/UserBlock.tsx +7 -9
  50. package/src/hooks/useCallbackOnEscape.ts +1 -1
  51. package/src/hooks/useClickAway.tsx +1 -2
  52. package/src/hooks/useFocusTrap.ts +1 -1
  53. package/src/hooks/useInterval.tsx +1 -4
  54. package/src/hooks/useKeyboardListNavigation.tsx +2 -4
  55. package/src/hooks/useSizeOnWindowResize.ts +14 -10
  56. package/src/hooks/useStopPropagation.ts +1 -2
  57. package/src/hooks/useTransitionVisibility.ts +2 -2
  58. package/src/stories/decorators/withCombinations.tsx +1 -1
  59. package/src/testing/utils/commonTestsSuiteRTL.tsx +2 -2
  60. package/src/utils/{DOM → browser/DOM}/startViewTransition.ts +3 -3
  61. package/src/utils/{focus → browser/focus}/getFirstAndLastFocusable.test.ts +1 -1
  62. package/src/utils/{focus → browser/focus}/getFocusableElements.test.ts +1 -1
  63. package/src/utils/{browserDoesNotSupportHover.test.js → browser/isHoverNotSupported.test.js} +5 -5
  64. package/src/utils/browser/isHoverNotSupported.ts +2 -0
  65. package/src/utils/browser/{getPrefersReducedMotion.ts → isReducedMotion.ts} +1 -1
  66. package/src/utils/className/getFontColorClassName.ts +9 -0
  67. package/src/utils/{className.ts → className/getRootClassName.ts} +1 -21
  68. package/src/utils/className/getTypographyClassName.ts +9 -0
  69. package/src/utils/className/index.ts +4 -0
  70. package/src/utils/collection/castArray.test.ts +15 -0
  71. package/src/utils/collection/castArray.ts +3 -0
  72. package/src/utils/collection/chunk.test.ts +15 -0
  73. package/src/utils/collection/chunk.ts +6 -0
  74. package/src/utils/collection/isEmpty.test.js +20 -0
  75. package/src/utils/collection/isEmpty.ts +4 -0
  76. package/src/utils/collection/last.ts +2 -0
  77. package/src/utils/collection/partitionMulti.test.ts +35 -0
  78. package/src/utils/{partitionMulti.ts → collection/partitionMulti.ts} +13 -12
  79. package/src/utils/collection/pull.test.ts +17 -0
  80. package/src/utils/collection/pull.ts +7 -0
  81. package/src/utils/collection/range.test.js +9 -0
  82. package/src/utils/collection/range.ts +2 -0
  83. package/src/utils/date/getMonthCalendar.ts +3 -4
  84. package/src/utils/flattenChildren.ts +2 -3
  85. package/src/utils/function/memoize.test.ts +36 -0
  86. package/src/utils/function/memoize.ts +13 -0
  87. package/src/utils/makeListenerTowerContext.ts +2 -2
  88. package/src/utils/partitionMulti.test.ts +27 -0
  89. package/src/utils/react/forwardRef.ts +3 -2
  90. package/src/utils/react/forwardRefPolymorphic.ts +1 -2
  91. package/utils/index.d.ts +1 -1
  92. package/utils/index.js +1 -96
  93. package/utils/index.js.map +1 -1
  94. package/_internal/17c3ea1d.js +0 -137
  95. package/_internal/17c3ea1d.js.map +0 -1
  96. package/_internal/1da25128.js +0 -411
  97. package/_internal/1da25128.js.map +0 -1
  98. package/_internal/230173a8.js +0 -13
  99. package/_internal/230173a8.js.map +0 -1
  100. package/_internal/23bdba2d.js +0 -71
  101. package/_internal/23bdba2d.js.map +0 -1
  102. package/_internal/26926e5c.d.ts +0 -36
  103. package/_internal/2a3d237c.js +0 -12
  104. package/_internal/2a3d237c.js.map +0 -1
  105. package/_internal/2c5dbb03.js +0 -26
  106. package/_internal/2c5dbb03.js.map +0 -1
  107. package/_internal/2e2abe51.js +0 -2154
  108. package/_internal/2e2abe51.js.map +0 -1
  109. package/_internal/31490c59.d.ts +0 -167
  110. package/_internal/3181f000.js +0 -14
  111. package/_internal/3181f000.js.map +0 -1
  112. package/_internal/35f100be.d.ts +0 -104
  113. package/_internal/36bd7352.js +0 -219
  114. package/_internal/36bd7352.js.map +0 -1
  115. package/_internal/3a1facc0.js +0 -18
  116. package/_internal/3a1facc0.js.map +0 -1
  117. package/_internal/4c20d932.js +0 -89
  118. package/_internal/4c20d932.js.map +0 -1
  119. package/_internal/4c28d012.js +0 -305
  120. package/_internal/4c28d012.js.map +0 -1
  121. package/_internal/4cd0bf32.js +0 -160
  122. package/_internal/4cd0bf32.js.map +0 -1
  123. package/_internal/4daccdd5.js +0 -25
  124. package/_internal/4daccdd5.js.map +0 -1
  125. package/_internal/524b1d04.js +0 -64
  126. package/_internal/524b1d04.js.map +0 -1
  127. package/_internal/53c94227.js +0 -123
  128. package/_internal/53c94227.js.map +0 -1
  129. package/_internal/54d9ded5.js +0 -418
  130. package/_internal/54d9ded5.js.map +0 -1
  131. package/_internal/56aec41b.js +0 -652
  132. package/_internal/56aec41b.js.map +0 -1
  133. package/_internal/5720caf5.js +0 -124
  134. package/_internal/5720caf5.js.map +0 -1
  135. package/_internal/646f0db6.js +0 -113
  136. package/_internal/646f0db6.js.map +0 -1
  137. package/_internal/6cc8dca8.d.ts +0 -22
  138. package/_internal/7f022f8c.d.ts +0 -34
  139. package/_internal/b8f2948d.js +0 -691
  140. package/_internal/b8f2948d.js.map +0 -1
  141. package/_internal/bc28d510.js +0 -784
  142. package/_internal/bc28d510.js.map +0 -1
  143. package/_internal/c68d24e4.js +0 -145
  144. package/_internal/c68d24e4.js.map +0 -1
  145. package/_internal/c6c99f76.js +0 -105
  146. package/_internal/c6c99f76.js.map +0 -1
  147. package/_internal/cae46566.js +0 -65
  148. package/_internal/cae46566.js.map +0 -1
  149. package/_internal/components/alert-dialog/index.ts-623b1ed3.d.ts +0 -37
  150. package/_internal/components/alert-dialog/index.ts-f83bd6ef.js +0 -148
  151. package/_internal/components/alert-dialog/index.ts-f83bd6ef.js.map +0 -1
  152. package/_internal/components/autocomplete/index.ts-3f8f125c.js +0 -264
  153. package/_internal/components/autocomplete/index.ts-3f8f125c.js.map +0 -1
  154. package/_internal/components/autocomplete/index.ts-8d6b123f.d.ts +0 -201
  155. package/_internal/components/avatar/index.ts-93ee0ea9.js +0 -89
  156. package/_internal/components/avatar/index.ts-93ee0ea9.js.map +0 -1
  157. package/_internal/components/avatar/index.ts-f92852b4.d.ts +0 -43
  158. package/_internal/components/badge/index.ts-2d7700ef.d.ts +0 -30
  159. package/_internal/components/badge/index.ts-6753d67f.js +0 -88
  160. package/_internal/components/badge/index.ts-6753d67f.js.map +0 -1
  161. package/_internal/components/button/index.ts-031307ce.js +0 -51
  162. package/_internal/components/button/index.ts-031307ce.js.map +0 -1
  163. package/_internal/components/button/index.ts-b29e26a4.d.ts +0 -22
  164. package/_internal/components/checkbox/index.ts-a33166d7.js +0 -127
  165. package/_internal/components/checkbox/index.ts-a33166d7.js.map +0 -1
  166. package/_internal/components/checkbox/index.ts-f82358ff.d.ts +0 -38
  167. package/_internal/components/chip/index.ts-4a91f1a7.d.ts +0 -68
  168. package/_internal/components/chip/index.ts-a2b5b771.js +0 -110
  169. package/_internal/components/chip/index.ts-a2b5b771.js.map +0 -1
  170. package/_internal/components/comment-block/index.ts-58fa051a.js +0 -121
  171. package/_internal/components/comment-block/index.ts-58fa051a.js.map +0 -1
  172. package/_internal/components/comment-block/index.ts-8cfa5af0.d.ts +0 -67
  173. package/_internal/components/date-picker/index.ts-145262d5.js +0 -2
  174. package/_internal/components/date-picker/index.ts-145262d5.js.map +0 -1
  175. package/_internal/components/date-picker/index.ts-70a34fa7.d.ts +0 -95
  176. package/_internal/components/dialog/index.ts-ea044db2.js +0 -224
  177. package/_internal/components/dialog/index.ts-ea044db2.js.map +0 -1
  178. package/_internal/components/dialog/index.ts-eca28654.d.ts +0 -55
  179. package/_internal/components/divider/index.ts-4a56db75.js +0 -55
  180. package/_internal/components/divider/index.ts-4a56db75.js.map +0 -1
  181. package/_internal/components/divider/index.ts-b011d8ca.d.ts +0 -18
  182. package/_internal/components/drag-handle/index.ts-0aebf92f.js +0 -54
  183. package/_internal/components/drag-handle/index.ts-0aebf92f.js.map +0 -1
  184. package/_internal/components/drag-handle/index.ts-3ab31dd1.d.ts +0 -18
  185. package/_internal/components/dropdown/index.ts-2a17db51.js +0 -154
  186. package/_internal/components/dropdown/index.ts-2a17db51.js.map +0 -1
  187. package/_internal/components/dropdown/index.ts-b648a15c.d.ts +0 -87
  188. package/_internal/components/expansion-panel/index.ts-69f09f5b.d.ts +0 -38
  189. package/_internal/components/expansion-panel/index.ts-fae3762e.js +0 -143
  190. package/_internal/components/expansion-panel/index.ts-fae3762e.js.map +0 -1
  191. package/_internal/components/flag/index.ts-8dcd685b.js +0 -56
  192. package/_internal/components/flag/index.ts-8dcd685b.js.map +0 -1
  193. package/_internal/components/flag/index.ts-fda89adb.d.ts +0 -23
  194. package/_internal/components/flex-box/index.ts-87f2b58d.d.ts +0 -43
  195. package/_internal/components/flex-box/index.ts-c216e957.js +0 -60
  196. package/_internal/components/flex-box/index.ts-c216e957.js.map +0 -1
  197. package/_internal/components/generic-block/index.ts-999a62a4.js +0 -115
  198. package/_internal/components/generic-block/index.ts-999a62a4.js.map +0 -1
  199. package/_internal/components/generic-block/index.ts-cd3b0e21.d.ts +0 -106
  200. package/_internal/components/grid/index.ts-67e0694f.d.ts +0 -50
  201. package/_internal/components/grid/index.ts-fdf1b306.js +0 -113
  202. package/_internal/components/grid/index.ts-fdf1b306.js.map +0 -1
  203. package/_internal/components/grid-column/index.ts-97c61cbe.js +0 -64
  204. package/_internal/components/grid-column/index.ts-97c61cbe.js.map +0 -1
  205. package/_internal/components/grid-column/index.ts-c89e1c18.d.ts +0 -31
  206. package/_internal/components/heading/index.ts-0179e9a9.js +0 -112
  207. package/_internal/components/heading/index.ts-0179e9a9.js.map +0 -1
  208. package/_internal/components/heading/index.ts-587579e8.d.ts +0 -37
  209. package/_internal/components/icon/index.ts-740ca1de.js +0 -2
  210. package/_internal/components/icon/index.ts-740ca1de.js.map +0 -1
  211. package/_internal/components/icon/index.ts-b3fa5e15.d.ts +0 -34
  212. package/_internal/components/image-block/index.ts-36b3828f.d.ts +0 -49
  213. package/_internal/components/image-block/index.ts-ef5e2e7d.js +0 -111
  214. package/_internal/components/image-block/index.ts-ef5e2e7d.js.map +0 -1
  215. package/_internal/components/image-lightbox/index.ts-137f85a8.js +0 -765
  216. package/_internal/components/image-lightbox/index.ts-137f85a8.js.map +0 -1
  217. package/_internal/components/image-lightbox/index.ts-2cb92d18.d.ts +0 -75
  218. package/_internal/components/inline-list/index.ts-033dd358.js +0 -76
  219. package/_internal/components/inline-list/index.ts-033dd358.js.map +0 -1
  220. package/_internal/components/inline-list/index.ts-e1c8a3ff.d.ts +0 -34
  221. package/_internal/components/input-helper/index.ts-32a9ca90.d.ts +0 -22
  222. package/_internal/components/input-helper/index.ts-ab3a1ef5.js +0 -75
  223. package/_internal/components/input-helper/index.ts-ab3a1ef5.js.map +0 -1
  224. package/_internal/components/input-label/index.ts-86f2ea41.d.ts +0 -24
  225. package/_internal/components/input-label/index.ts-d6ca5569.js +0 -60
  226. package/_internal/components/input-label/index.ts-d6ca5569.js.map +0 -1
  227. package/_internal/components/lightbox/index.ts-5370e8e6.d.ts +0 -36
  228. package/_internal/components/lightbox/index.ts-7a16cdc7.js +0 -149
  229. package/_internal/components/lightbox/index.ts-7a16cdc7.js.map +0 -1
  230. package/_internal/components/link/index.ts-26435006.d.ts +0 -37
  231. package/_internal/components/link/index.ts-d04f4e53.js +0 -120
  232. package/_internal/components/link/index.ts-d04f4e53.js.map +0 -1
  233. package/_internal/components/link-preview/index.ts-e560a274.d.ts +0 -36
  234. package/_internal/components/link-preview/index.ts-fee89f66.js +0 -109
  235. package/_internal/components/link-preview/index.ts-fee89f66.js.map +0 -1
  236. package/_internal/components/list/index.ts-ab57902e.d.ts +0 -118
  237. package/_internal/components/list/index.ts-f3101625.js +0 -86
  238. package/_internal/components/list/index.ts-f3101625.js.map +0 -1
  239. package/_internal/components/message/index.ts-041cf0cb.js +0 -97
  240. package/_internal/components/message/index.ts-041cf0cb.js.map +0 -1
  241. package/_internal/components/message/index.ts-2d38e0ea.d.ts +0 -37
  242. package/_internal/components/mosaic/index.ts-232d5aed.d.ts +0 -23
  243. package/_internal/components/mosaic/index.ts-d2128cd3.js +0 -94
  244. package/_internal/components/mosaic/index.ts-d2128cd3.js.map +0 -1
  245. package/_internal/components/navigation/index.ts-6d8bea53.d.ts +0 -58
  246. package/_internal/components/navigation/index.ts-e8dc0a7f.js +0 -222
  247. package/_internal/components/navigation/index.ts-e8dc0a7f.js.map +0 -1
  248. package/_internal/components/notification/index.ts-235fd340.js +0 -140
  249. package/_internal/components/notification/index.ts-235fd340.js.map +0 -1
  250. package/_internal/components/notification/index.ts-bb3f03f6.d.ts +0 -34
  251. package/_internal/components/popover/index.ts-2f17a9b6.js +0 -3
  252. package/_internal/components/popover/index.ts-2f17a9b6.js.map +0 -1
  253. package/_internal/components/popover/index.ts-e3b4ff19.d.ts +0 -66
  254. package/_internal/components/post-block/index.ts-0acb9bb4.js +0 -101
  255. package/_internal/components/post-block/index.ts-0acb9bb4.js.map +0 -1
  256. package/_internal/components/post-block/index.ts-9b8ff90b.d.ts +0 -41
  257. package/_internal/components/progress/index.ts-2a713859.js +0 -189
  258. package/_internal/components/progress/index.ts-2a713859.js.map +0 -1
  259. package/_internal/components/progress/index.ts-dfdfa5fb.d.ts +0 -60
  260. package/_internal/components/progress-tracker/index.ts-2649f756.js +0 -312
  261. package/_internal/components/progress-tracker/index.ts-2649f756.js.map +0 -1
  262. package/_internal/components/progress-tracker/index.ts-95320f32.d.ts +0 -101
  263. package/_internal/components/radio-button/index.ts-5eaab4cf.d.ts +0 -54
  264. package/_internal/components/radio-button/index.ts-b4dfb2a0.js +0 -150
  265. package/_internal/components/radio-button/index.ts-b4dfb2a0.js.map +0 -1
  266. package/_internal/components/select/index.ts-a65e3507.d.ts +0 -91
  267. package/_internal/components/select/index.ts-e8fad28b.js +0 -257
  268. package/_internal/components/select/index.ts-e8fad28b.js.map +0 -1
  269. package/_internal/components/side-navigation/index.ts-3f5f3785.d.ts +0 -60
  270. package/_internal/components/side-navigation/index.ts-c9a5fc3e.js +0 -184
  271. package/_internal/components/side-navigation/index.ts-c9a5fc3e.js.map +0 -1
  272. package/_internal/components/skeleton/index.ts-a7daefac.d.ts +0 -75
  273. package/_internal/components/skeleton/index.ts-ffc995af.js +0 -179
  274. package/_internal/components/skeleton/index.ts-ffc995af.js.map +0 -1
  275. package/_internal/components/slider/index.ts-24a0d598.d.ts +0 -52
  276. package/_internal/components/slider/index.ts-72aadf4c.js +0 -308
  277. package/_internal/components/slider/index.ts-72aadf4c.js.map +0 -1
  278. package/_internal/components/slideshow/index.ts-c99f2892.js +0 -151
  279. package/_internal/components/slideshow/index.ts-c99f2892.js.map +0 -1
  280. package/_internal/components/slideshow/index.ts-e49462c6.d.ts +0 -25
  281. package/_internal/components/switch/index.ts-207ba52b.d.ts +0 -34
  282. package/_internal/components/switch/index.ts-542e6eaf.js +0 -115
  283. package/_internal/components/switch/index.ts-542e6eaf.js.map +0 -1
  284. package/_internal/components/table/index.ts-905ce390.js +0 -310
  285. package/_internal/components/table/index.ts-905ce390.js.map +0 -1
  286. package/_internal/components/table/index.ts-c4f39b2d.d.ts +0 -108
  287. package/_internal/components/tabs/index.ts-713119f4.js +0 -289
  288. package/_internal/components/tabs/index.ts-713119f4.js.map +0 -1
  289. package/_internal/components/tabs/index.ts-dbfc48d9.d.ts +0 -106
  290. package/_internal/components/text/index.ts-6afbe8cd.js +0 -2
  291. package/_internal/components/text/index.ts-6afbe8cd.js.map +0 -1
  292. package/_internal/components/text/index.ts-8a812048.d.ts +0 -53
  293. package/_internal/components/text-field/index.ts-92e6b3b3.d.ts +0 -77
  294. package/_internal/components/text-field/index.ts-c3be8563.js +0 -341
  295. package/_internal/components/text-field/index.ts-c3be8563.js.map +0 -1
  296. package/_internal/components/thumbnail/index.ts-16d7b403.js +0 -40
  297. package/_internal/components/thumbnail/index.ts-16d7b403.js.map +0 -1
  298. package/_internal/components/thumbnail/index.ts-1b6c0b48.d.ts +0 -8
  299. package/_internal/components/toolbar/index.ts-813b902e.js +0 -63
  300. package/_internal/components/toolbar/index.ts-813b902e.js.map +0 -1
  301. package/_internal/components/toolbar/index.ts-9f5129d1.d.ts +0 -24
  302. package/_internal/components/tooltip/index.ts-905c847c.js +0 -322
  303. package/_internal/components/tooltip/index.ts-905c847c.js.map +0 -1
  304. package/_internal/components/tooltip/index.ts-c6931e9e.d.ts +0 -35
  305. package/_internal/components/uploader/index.ts-31f21c2a.js +0 -132
  306. package/_internal/components/uploader/index.ts-31f21c2a.js.map +0 -1
  307. package/_internal/components/uploader/index.ts-c3ccba98.d.ts +0 -51
  308. package/_internal/components/user-block/index.ts-18c58e19.d.ts +0 -50
  309. package/_internal/components/user-block/index.ts-d43e5f3c.js +0 -136
  310. package/_internal/components/user-block/index.ts-d43e5f3c.js.map +0 -1
  311. package/_internal/dc3e28c8.d.ts +0 -38
  312. package/_internal/f39a1ba4.js +0 -73
  313. package/_internal/f39a1ba4.js.map +0 -1
  314. package/_internal/f3e77e3e.js +0 -22
  315. package/_internal/f3e77e3e.js.map +0 -1
  316. package/_internal/f502ab30.js +0 -78
  317. package/_internal/f502ab30.js.map +0 -1
  318. package/_internal/f52adbae.js +0 -36
  319. package/_internal/f52adbae.js.map +0 -1
  320. package/_internal/f57e1239.js +0 -205
  321. package/_internal/f57e1239.js.map +0 -1
  322. package/_internal/f5ff1aa4.d.ts +0 -47
  323. package/_internal/fb975afe.js +0 -52
  324. package/_internal/fb975afe.js.map +0 -1
  325. package/src/utils/browserDoesNotSupportHover.ts +0 -2
  326. package/src/utils/isInternetExplorer.ts +0 -15
  327. package/src/utils/userHasReducedMotion.ts +0 -7
  328. package/src/utils/utils.test.ts +0 -48
  329. /package/src/utils/{DOM → browser/DOM}/findImage.tsx +0 -0
  330. /package/src/utils/{event.ts → browser/event.ts} +0 -0
  331. /package/src/utils/{focus → browser/focus}/constants.ts +0 -0
  332. /package/src/utils/{focus → browser/focus}/getFirstAndLastFocusable.ts +0 -0
  333. /package/src/utils/{focus → browser/focus}/getFocusableElements.ts +0 -0
  334. /package/src/utils/{isFocusVisible.ts → browser/isFocusVisible.ts} +0 -0
@@ -1,322 +0,0 @@
1
- import { k as _objectSpread2, _ as _extends, I as IS_BROWSER, r as TOOLTIP_LONG_PRESS_DELAY, s as TOOLTIP_HOVER_DELAY, h as getRootClassName, i as forwardRef, j as _objectWithoutProperties, D as DOCUMENT, g as classNames, V as VISUALLY_HIDDEN } from '../../1da25128.js';
2
- import React__default, { useMemo, cloneElement, useState, useRef, useEffect } from 'react';
3
- import { createPortal } from 'react-dom';
4
- import { m as mergeRefs, u as useMergeRefs } from '../../f52adbae.js';
5
- import { T as TooltipContextProvider } from '../../f3e77e3e.js';
6
- import { u as useId } from '../../3a1facc0.js';
7
- import { a as POPOVER_ZINDEX, P as Placement, u as usePopper } from '../../2e2abe51.js';
8
- import { u as useCallbackOnEscape } from '../../cae46566.js';
9
- import { h as handleBasicClasses } from '../../f57e1239.js';
10
-
11
- /**
12
- * Make sure tooltip appear above popovers.
13
- */
14
- const TOOLTIP_ZINDEX = POPOVER_ZINDEX + 1;
15
-
16
- /**
17
- * Add ref and ARIA attribute(s) in tooltip children or wrapped children.
18
- * Button, IconButton, Icon and React HTML elements don't need to be wrapped but any other kind of children (array, fragment, custom components)
19
- * will be wrapped in a <span>.
20
- */
21
- const useInjectTooltipRef = options => {
22
- const {
23
- children,
24
- setAnchorElement,
25
- isMounted,
26
- id,
27
- label,
28
- ariaLinkMode
29
- } = options;
30
- // Only add link when mounted
31
- const linkId = isMounted ? id : undefined;
32
- return useMemo(() => {
33
- if (!label) return children;
34
-
35
- // Non-disabled element
36
- if ( /*#__PURE__*/React__default.isValidElement(children) && children.props.disabled !== true && children.props.isDisabled !== true) {
37
- const ref = mergeRefs(children.ref, setAnchorElement);
38
- const props = _objectSpread2(_objectSpread2({}, children.props), {}, {
39
- ref
40
- });
41
-
42
- // Do not add label/description if the tooltip label is already in aria-label
43
- if (linkId && label !== props['aria-label']) {
44
- if (props[ariaLinkMode]) props[ariaLinkMode] += ' ';else props[ariaLinkMode] = '';
45
- props[ariaLinkMode] += linkId;
46
- }
47
- return /*#__PURE__*/cloneElement(children, props);
48
- }
49
- const aria = linkId ? {
50
- [ariaLinkMode]: linkId
51
- } : undefined;
52
- return /*#__PURE__*/React__default.createElement("div", _extends({
53
- className: "lumx-tooltip-anchor-wrapper",
54
- ref: setAnchorElement
55
- }, aria), children);
56
- }, [label, children, setAnchorElement, linkId, ariaLinkMode]);
57
- };
58
-
59
- /** Return true if the browser does not support pointer hover */
60
- const browserDoesNotSupportHover = () => {
61
- var _window$matchMedia, _window;
62
- return !!((_window$matchMedia = (_window = window).matchMedia) !== null && _window$matchMedia !== void 0 && _window$matchMedia.call(_window, '(hover: none)').matches);
63
- };
64
-
65
- /** Check if the focus is visible on the given element */
66
- const isFocusVisible = element => {
67
- try {
68
- var _element$matches;
69
- return element === null || element === void 0 ? void 0 : (_element$matches = element.matches) === null || _element$matches === void 0 ? void 0 : _element$matches.call(element, ':focus-visible, [data-focus-visible-added]');
70
- } catch (_ignored) {
71
- // Can fail on non browser env
72
- return true;
73
- }
74
- };
75
-
76
- /**
77
- * Hook controlling tooltip visibility using mouse hover the anchor and delay.
78
- *
79
- * @param delay Delay in millisecond to display the tooltip.
80
- * @param anchorElement Tooltip anchor element.
81
- * @return whether or not to show the tooltip.
82
- */
83
- function useTooltipOpen(delay, anchorElement) {
84
- const [isOpen, setIsOpen] = useState(false);
85
- const onPopperMount = useRef(null);
86
-
87
- // Global close on escape
88
- const [closeCallback, setCloseCallback] = useState(undefined);
89
- useCallbackOnEscape(isOpen ? closeCallback : undefined);
90
- useEffect(() => {
91
- if (!anchorElement) {
92
- return undefined;
93
- }
94
- let timer;
95
- let openStartTime;
96
- let shouldOpen;
97
-
98
- // Run timer to defer updating the isOpen state.
99
- const deferUpdate = duration => {
100
- if (timer) clearTimeout(timer);
101
- const update = () => {
102
- setIsOpen(!!shouldOpen);
103
- };
104
- // Skip timeout in fake browsers
105
- if (!IS_BROWSER) update();else timer = setTimeout(update, duration);
106
- };
107
- const hoverNotSupported = browserDoesNotSupportHover();
108
- const hasTouch = ('ontouchstart' in window);
109
-
110
- // Adapt open/close delay
111
- const openDelay = delay || (hoverNotSupported ? TOOLTIP_LONG_PRESS_DELAY.open : TOOLTIP_HOVER_DELAY.open);
112
- const closeDelay = hoverNotSupported ? TOOLTIP_LONG_PRESS_DELAY.close : TOOLTIP_HOVER_DELAY.close;
113
-
114
- // Open (or/and cancel closing) of tooltip.
115
- const open = () => {
116
- if (shouldOpen && !timer) return;
117
- shouldOpen = true;
118
- openStartTime = Date.now();
119
- deferUpdate(openDelay);
120
- };
121
-
122
- // Close or cancel opening of tooltip
123
- const getClose = function () {
124
- let overrideDelay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : closeDelay;
125
- if (!shouldOpen && !timer) return;
126
- shouldOpen = false;
127
- deferUpdate(overrideDelay);
128
- };
129
- const close = () => getClose(closeDelay);
130
- const closeImmediately = () => getClose(0);
131
- setCloseCallback(() => closeImmediately);
132
-
133
- // Adapt event to browsers with or without `hover` support.
134
- const events = [];
135
- if (hoverNotSupported) {
136
- /**
137
- * Handle touchend event
138
- * If end comes before the open delay => cancel tooltip (close immediate).
139
- * Else if end comes after the open delay => tooltip takes priority, the anchor's default touch end event is prevented.
140
- */
141
- const longPressEnd = evt => {
142
- if (!openStartTime) return;
143
- if (Date.now() - openStartTime >= openDelay) {
144
- // Tooltip take priority, event prevented.
145
- evt.stopPropagation();
146
- evt.preventDefault();
147
- anchorElement.focus();
148
- // Close with delay.
149
- close();
150
- } else {
151
- // Close immediately.
152
- closeImmediately();
153
- }
154
- };
155
- events.push([anchorElement, hasTouch ? 'touchstart' : 'mousedown', open], [anchorElement, hasTouch ? 'touchend' : 'mouseup', longPressEnd]);
156
- } else {
157
- events.push([anchorElement, 'mouseenter', open], [anchorElement, 'mouseleave', close], [anchorElement, 'mouseup', closeImmediately]);
158
- onPopperMount.current = popperElement => {
159
- if (!popperElement) return;
160
- // Popper element hover
161
- popperElement.addEventListener('mouseenter', open);
162
- popperElement.addEventListener('mouseleave', close);
163
- // Add to event list to remove on unmount
164
- events.push([popperElement, 'mouseenter', open], [popperElement, 'mouseleave', close]);
165
- };
166
- }
167
-
168
- // Events always applied no matter the browser:.
169
- events.push(
170
- // Open on focus (only if focus is visible).
171
- [anchorElement, 'focusin', e => {
172
- // Skip if focus is not visible
173
- if (!isFocusVisible(e.target)) return;
174
- open();
175
- }],
176
- // Close on lost focus.
177
- [anchorElement, 'focusout', closeImmediately]);
178
-
179
- // Attach events
180
- for (const [node, eventType, eventHandler] of events) {
181
- node.addEventListener(eventType, eventHandler);
182
- }
183
- return () => {
184
- // Clear pending timers.
185
- if (timer) clearTimeout(timer);
186
-
187
- // Detach events.
188
- for (const [node, eventType, eventHandler] of events) {
189
- node.removeEventListener(eventType, eventHandler);
190
- }
191
- };
192
- }, [anchorElement, delay]);
193
- return {
194
- isOpen,
195
- onPopperMount: onPopperMount.current
196
- };
197
- }
198
-
199
- const _excluded = ["label", "children", "className", "delay", "placement", "forceOpen", "closeMode", "ariaLinkMode", "zIndex"];
200
-
201
- /** Position of the tooltip relative to the anchor element. */
202
-
203
- /**
204
- * Defines the props of the component.
205
- */
206
-
207
- /**
208
- * Component display name.
209
- */
210
- const COMPONENT_NAME = 'Tooltip';
211
-
212
- /**
213
- * Component default class name and class prefix.
214
- */
215
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
216
-
217
- /**
218
- * Component default props.
219
- */
220
- const DEFAULT_PROPS = {
221
- placement: Placement.BOTTOM,
222
- closeMode: 'unmount',
223
- ariaLinkMode: 'aria-describedby',
224
- zIndex: TOOLTIP_ZINDEX
225
- };
226
-
227
- /**
228
- * Arrow size (in pixel).
229
- */
230
- const ARROW_SIZE = 8;
231
-
232
- /**
233
- * Tooltip component.
234
- *
235
- * @param props Component props.
236
- * @param ref Component ref.
237
- * @return React element.
238
- */
239
- const Tooltip = forwardRef((props, ref) => {
240
- var _attributes$popper$da, _attributes$popper;
241
- const {
242
- label,
243
- children,
244
- className,
245
- delay,
246
- placement,
247
- forceOpen,
248
- closeMode,
249
- ariaLinkMode,
250
- zIndex
251
- } = props,
252
- forwardedProps = _objectWithoutProperties(props, _excluded);
253
- // Disable in SSR.
254
- if (!DOCUMENT) {
255
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, children);
256
- }
257
- const id = useId();
258
- const [popperElement, setPopperElement] = useState(null);
259
- const [anchorElement, setAnchorElement] = useState(null);
260
- const {
261
- styles,
262
- attributes,
263
- update
264
- } = usePopper(anchorElement, popperElement, {
265
- placement,
266
- modifiers: [{
267
- name: 'offset',
268
- options: {
269
- offset: [0, ARROW_SIZE]
270
- }
271
- }]
272
- });
273
- const position = (_attributes$popper$da = attributes === null || attributes === void 0 ? void 0 : (_attributes$popper = attributes.popper) === null || _attributes$popper === void 0 ? void 0 : _attributes$popper['data-popper-placement']) !== null && _attributes$popper$da !== void 0 ? _attributes$popper$da : placement;
274
- const {
275
- isOpen: isActivated,
276
- onPopperMount
277
- } = useTooltipOpen(delay, anchorElement);
278
- const isOpen = (isActivated || forceOpen) && !!label;
279
- const isMounted = !!label && (isOpen || closeMode === 'hide');
280
- const isHidden = !isOpen && closeMode === 'hide';
281
- const wrappedChildren = useInjectTooltipRef({
282
- children,
283
- setAnchorElement,
284
- isMounted,
285
- id,
286
- label,
287
- ariaLinkMode: ariaLinkMode
288
- });
289
-
290
- // Update on open
291
- React__default.useEffect(() => {
292
- if (isOpen) update === null || update === void 0 ? void 0 : update();
293
- }, [isOpen, update]);
294
- const labelLines = label ? label.split('\n') : [];
295
- const tooltipRef = useMergeRefs(ref, setPopperElement, onPopperMount);
296
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(TooltipContextProvider, null, wrappedChildren), isMounted && /*#__PURE__*/createPortal( /*#__PURE__*/React__default.createElement("div", _extends({
297
- ref: tooltipRef
298
- }, forwardedProps, {
299
- id: id,
300
- role: "tooltip",
301
- "aria-label": label || '',
302
- className: classNames(className, handleBasicClasses({
303
- prefix: CLASSNAME,
304
- position
305
- }), isHidden && VISUALLY_HIDDEN),
306
- style: _objectSpread2(_objectSpread2({}, styles.popper), {}, {
307
- zIndex
308
- })
309
- }, attributes.popper), /*#__PURE__*/React__default.createElement("div", {
310
- className: `${CLASSNAME}__arrow`
311
- }), /*#__PURE__*/React__default.createElement("div", {
312
- className: `${CLASSNAME}__inner`
313
- }, labelLines.map(line => /*#__PURE__*/React__default.createElement("p", {
314
- key: line
315
- }, line)))), document.body));
316
- });
317
- Tooltip.displayName = COMPONENT_NAME;
318
- Tooltip.className = CLASSNAME;
319
- Tooltip.defaultProps = DEFAULT_PROPS;
320
-
321
- export { Tooltip };
322
- //# sourceMappingURL=index.ts-905c847c.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.ts-905c847c.js","sources":["../../../../src/components/tooltip/constants.ts","../../../../src/components/tooltip/useInjectTooltipRef.tsx","../../../../src/utils/browserDoesNotSupportHover.ts","../../../../src/utils/isFocusVisible.ts","../../../../src/components/tooltip/useTooltipOpen.tsx","../../../../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["import { POPOVER_ZINDEX } from '../popover/constants';\n\nexport const ARIA_LINK_MODES = ['aria-describedby', 'aria-labelledby'] as const;\n\n/**\n * Make sure tooltip appear above popovers.\n */\nexport const TOOLTIP_ZINDEX = POPOVER_ZINDEX + 1;\n","import React, { cloneElement, ReactNode, useMemo } from 'react';\n\nimport { mergeRefs } from '@lumx/react/utils/mergeRefs';\n\ninterface Options {\n /** Original tooltip anchor */\n children: ReactNode;\n /** Set tooltip anchor element */\n setAnchorElement: (e: HTMLDivElement) => void;\n /** Whether the tooltip is open or not */\n isMounted: boolean | undefined;\n /** Tooltip id */\n id: string;\n /** Tooltip label*/\n label?: string | null | false;\n /** Choose how the tooltip text should link to the anchor */\n ariaLinkMode: 'aria-describedby' | 'aria-labelledby';\n}\n\n/**\n * Add ref and ARIA attribute(s) in tooltip children or wrapped children.\n * Button, IconButton, Icon and React HTML elements don't need to be wrapped but any other kind of children (array, fragment, custom components)\n * will be wrapped in a <span>.\n */\nexport const useInjectTooltipRef = (options: Options): ReactNode => {\n const { children, setAnchorElement, isMounted, id, label, ariaLinkMode } = options;\n // Only add link when mounted\n const linkId = isMounted ? id : undefined;\n\n return useMemo(() => {\n if (!label) return children;\n\n // Non-disabled element\n if (React.isValidElement(children) && children.props.disabled !== true && children.props.isDisabled !== true) {\n const ref = mergeRefs((children as any).ref, setAnchorElement);\n const props = { ...children.props, ref };\n\n // Do not add label/description if the tooltip label is already in aria-label\n if (linkId && label !== props['aria-label']) {\n if (props[ariaLinkMode]) props[ariaLinkMode] += ' ';\n else props[ariaLinkMode] = '';\n props[ariaLinkMode] += linkId;\n }\n\n return cloneElement(children, props);\n }\n\n const aria = linkId ? { [ariaLinkMode]: linkId } : undefined;\n return (\n <div className=\"lumx-tooltip-anchor-wrapper\" ref={setAnchorElement} {...aria}>\n {children}\n </div>\n );\n }, [label, children, setAnchorElement, linkId, ariaLinkMode]);\n};\n","/** Return true if the browser does not support pointer hover */\nexport const browserDoesNotSupportHover = (): boolean => !!window.matchMedia?.('(hover: none)').matches;\n","/** Check if the focus is visible on the given element */\nexport const isFocusVisible = (element?: HTMLElement) => {\n try {\n return element?.matches?.(':focus-visible, [data-focus-visible-added]');\n } catch (_ignored) {\n // Can fail on non browser env\n return true;\n }\n};\n","import { MutableRefObject, useEffect, useRef, useState } from 'react';\nimport { browserDoesNotSupportHover } from '@lumx/react/utils/browserDoesNotSupportHover';\nimport { IS_BROWSER, TOOLTIP_HOVER_DELAY, TOOLTIP_LONG_PRESS_DELAY } from '@lumx/react/constants';\nimport { useCallbackOnEscape } from '@lumx/react/hooks/useCallbackOnEscape';\nimport { isFocusVisible } from '@lumx/react/utils/isFocusVisible';\n\n/**\n * Hook controlling tooltip visibility using mouse hover the anchor and delay.\n *\n * @param delay Delay in millisecond to display the tooltip.\n * @param anchorElement Tooltip anchor element.\n * @return whether or not to show the tooltip.\n */\nexport function useTooltipOpen(delay: number | undefined, anchorElement: HTMLElement | null) {\n const [isOpen, setIsOpen] = useState(false);\n\n const onPopperMount = useRef<any>(null) as MutableRefObject<(elem: HTMLElement | null) => void>;\n\n // Global close on escape\n const [closeCallback, setCloseCallback] = useState<undefined | (() => void)>(undefined);\n useCallbackOnEscape(isOpen ? closeCallback : undefined);\n\n useEffect(() => {\n if (!anchorElement) {\n return undefined;\n }\n let timer: number | undefined;\n let openStartTime: number | undefined;\n let shouldOpen: boolean | undefined;\n\n // Run timer to defer updating the isOpen state.\n const deferUpdate = (duration: number) => {\n if (timer) clearTimeout(timer);\n const update = () => {\n setIsOpen(!!shouldOpen);\n };\n // Skip timeout in fake browsers\n if (!IS_BROWSER) update();\n else timer = setTimeout(update, duration) as any;\n };\n\n const hoverNotSupported = browserDoesNotSupportHover();\n const hasTouch = 'ontouchstart' in window;\n\n // Adapt open/close delay\n const openDelay = delay || (hoverNotSupported ? TOOLTIP_LONG_PRESS_DELAY.open : TOOLTIP_HOVER_DELAY.open);\n const closeDelay = hoverNotSupported ? TOOLTIP_LONG_PRESS_DELAY.close : TOOLTIP_HOVER_DELAY.close;\n\n // Open (or/and cancel closing) of tooltip.\n const open = () => {\n if (shouldOpen && !timer) return;\n shouldOpen = true;\n openStartTime = Date.now();\n deferUpdate(openDelay);\n };\n\n // Close or cancel opening of tooltip\n const getClose = (overrideDelay = closeDelay) => {\n if (!shouldOpen && !timer) return;\n shouldOpen = false;\n deferUpdate(overrideDelay);\n };\n const close = () => getClose(closeDelay);\n const closeImmediately = () => getClose(0);\n setCloseCallback(() => closeImmediately);\n\n // Adapt event to browsers with or without `hover` support.\n const events: Array<[Node, Event['type'], any]> = [];\n if (hoverNotSupported) {\n /**\n * Handle touchend event\n * If end comes before the open delay => cancel tooltip (close immediate).\n * Else if end comes after the open delay => tooltip takes priority, the anchor's default touch end event is prevented.\n */\n const longPressEnd = (evt: Event) => {\n if (!openStartTime) return;\n if (Date.now() - openStartTime >= openDelay) {\n // Tooltip take priority, event prevented.\n evt.stopPropagation();\n evt.preventDefault();\n anchorElement.focus();\n // Close with delay.\n close();\n } else {\n // Close immediately.\n closeImmediately();\n }\n };\n\n events.push(\n [anchorElement, hasTouch ? 'touchstart' : 'mousedown', open],\n [anchorElement, hasTouch ? 'touchend' : 'mouseup', longPressEnd],\n );\n } else {\n events.push(\n [anchorElement, 'mouseenter', open],\n [anchorElement, 'mouseleave', close],\n [anchorElement, 'mouseup', closeImmediately],\n );\n\n onPopperMount.current = (popperElement: HTMLElement | null) => {\n if (!popperElement) return;\n // Popper element hover\n popperElement.addEventListener('mouseenter', open);\n popperElement.addEventListener('mouseleave', close);\n // Add to event list to remove on unmount\n events.push([popperElement, 'mouseenter', open], [popperElement, 'mouseleave', close]);\n };\n }\n\n // Events always applied no matter the browser:.\n events.push(\n // Open on focus (only if focus is visible).\n [\n anchorElement,\n 'focusin',\n (e: Event) => {\n // Skip if focus is not visible\n if (!isFocusVisible(e.target as HTMLElement)) return;\n open();\n },\n ],\n // Close on lost focus.\n [anchorElement, 'focusout', closeImmediately],\n );\n\n // Attach events\n for (const [node, eventType, eventHandler] of events) {\n node.addEventListener(eventType, eventHandler);\n }\n return () => {\n // Clear pending timers.\n if (timer) clearTimeout(timer);\n\n // Detach events.\n for (const [node, eventType, eventHandler] of events) {\n node.removeEventListener(eventType, eventHandler);\n }\n };\n }, [anchorElement, delay]);\n\n return { isOpen, onPopperMount: onPopperMount.current };\n}\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport React, { ReactNode, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport classNames from 'classnames';\n\nimport { DOCUMENT, VISUALLY_HIDDEN } from '@lumx/react/constants';\nimport { GenericProps, HasCloseMode } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { useMergeRefs } from '@lumx/react/utils/mergeRefs';\nimport { Placement } from '@lumx/react/components/popover';\nimport { TooltipContextProvider } from '@lumx/react/components/tooltip/context';\nimport { useId } from '@lumx/react/hooks/useId';\nimport { usePopper } from '@lumx/react/hooks/usePopper';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { ARIA_LINK_MODES, TOOLTIP_ZINDEX } from '@lumx/react/components/tooltip/constants';\nimport { useInjectTooltipRef } from './useInjectTooltipRef';\nimport { useTooltipOpen } from './useTooltipOpen';\n\n/** Position of the tooltip relative to the anchor element. */\nexport type TooltipPlacement = Extract<Placement, 'top' | 'right' | 'bottom' | 'left'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface TooltipProps extends GenericProps, HasCloseMode {\n /** Anchor (element on which we activate the tooltip). */\n children: ReactNode;\n /** Delay (in ms) before closing the tooltip. */\n delay?: number;\n /** Whether the tooltip is displayed even without the mouse hovering the anchor. */\n forceOpen?: boolean;\n /** Label text. */\n label?: string | null | false;\n /** Placement of the tooltip relative to the anchor. */\n placement?: TooltipPlacement;\n /** Choose how the tooltip text should link to the anchor */\n ariaLinkMode?: (typeof ARIA_LINK_MODES)[number];\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Tooltip';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TooltipProps> = {\n placement: Placement.BOTTOM,\n closeMode: 'unmount',\n ariaLinkMode: 'aria-describedby',\n zIndex: TOOLTIP_ZINDEX,\n};\n\n/**\n * Arrow size (in pixel).\n */\nconst ARROW_SIZE = 8;\n\n/**\n * Tooltip component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Tooltip = forwardRef<TooltipProps, HTMLDivElement>((props, ref) => {\n const {\n label,\n children,\n className,\n delay,\n placement,\n forceOpen,\n closeMode,\n ariaLinkMode,\n zIndex,\n ...forwardedProps\n } = props;\n // Disable in SSR.\n if (!DOCUMENT) {\n return <>{children}</>;\n }\n\n const id = useId();\n\n const [popperElement, setPopperElement] = useState<null | HTMLElement>(null);\n const [anchorElement, setAnchorElement] = useState<null | HTMLElement>(null);\n const { styles, attributes, update } = usePopper(anchorElement, popperElement, {\n placement,\n modifiers: [\n {\n name: 'offset',\n options: { offset: [0, ARROW_SIZE] },\n },\n ],\n });\n\n const position = attributes?.popper?.['data-popper-placement'] ?? placement;\n const { isOpen: isActivated, onPopperMount } = useTooltipOpen(delay, anchorElement);\n const isOpen = (isActivated || forceOpen) && !!label;\n const isMounted = !!label && (isOpen || closeMode === 'hide');\n const isHidden = !isOpen && closeMode === 'hide';\n const wrappedChildren = useInjectTooltipRef({\n children,\n setAnchorElement,\n isMounted,\n id,\n label,\n ariaLinkMode: ariaLinkMode as any,\n });\n\n // Update on open\n React.useEffect(() => {\n if (isOpen) update?.();\n }, [isOpen, update]);\n\n const labelLines = label ? label.split('\\n') : [];\n\n const tooltipRef = useMergeRefs(ref, setPopperElement, onPopperMount);\n return (\n <>\n <TooltipContextProvider>{wrappedChildren}</TooltipContextProvider>\n {isMounted &&\n createPortal(\n <div\n ref={tooltipRef}\n {...forwardedProps}\n id={id}\n role=\"tooltip\"\n aria-label={label || ''}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n position,\n }),\n isHidden && VISUALLY_HIDDEN,\n )}\n style={{ ...styles.popper, zIndex }}\n {...attributes.popper}\n >\n <div className={`${CLASSNAME}__arrow`} />\n <div className={`${CLASSNAME}__inner`}>\n {labelLines.map((line) => (\n <p key={line}>{line}</p>\n ))}\n </div>\n </div>,\n document.body,\n )}\n </>\n );\n});\nTooltip.displayName = COMPONENT_NAME;\nTooltip.className = CLASSNAME;\nTooltip.defaultProps = DEFAULT_PROPS;\n"],"names":["TOOLTIP_ZINDEX","POPOVER_ZINDEX","useInjectTooltipRef","options","children","setAnchorElement","isMounted","id","label","ariaLinkMode","linkId","undefined","useMemo","React","isValidElement","props","disabled","isDisabled","ref","mergeRefs","_objectSpread","cloneElement","aria","createElement","_extends","className","browserDoesNotSupportHover","_window$matchMedia","_window","window","matchMedia","call","matches","isFocusVisible","element","_element$matches","_ignored","useTooltipOpen","delay","anchorElement","isOpen","setIsOpen","useState","onPopperMount","useRef","closeCallback","setCloseCallback","useCallbackOnEscape","useEffect","timer","openStartTime","shouldOpen","deferUpdate","duration","clearTimeout","update","IS_BROWSER","setTimeout","hoverNotSupported","hasTouch","openDelay","TOOLTIP_LONG_PRESS_DELAY","open","TOOLTIP_HOVER_DELAY","closeDelay","close","Date","now","getClose","overrideDelay","arguments","length","closeImmediately","events","longPressEnd","evt","stopPropagation","preventDefault","focus","push","current","popperElement","addEventListener","e","target","node","eventType","eventHandler","removeEventListener","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","placement","Placement","BOTTOM","closeMode","zIndex","ARROW_SIZE","Tooltip","forwardRef","_attributes$popper$da","_attributes$popper","forceOpen","forwardedProps","_objectWithoutProperties","_excluded","DOCUMENT","Fragment","useId","setPopperElement","styles","attributes","usePopper","modifiers","name","offset","position","popper","isActivated","isHidden","wrappedChildren","labelLines","split","tooltipRef","useMergeRefs","TooltipContextProvider","createPortal","role","classNames","handleBasicClasses","prefix","VISUALLY_HIDDEN","style","map","line","key","document","body","displayName","defaultProps"],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- import { G as GenericProps, r as HasCloseMode, C as Comp } from '../../8d67e1e3.js';
2
- import { ReactNode } from 'react';
3
- import { P as Placement } from '../../f5ff1aa4.js';
4
-
5
- declare const ARIA_LINK_MODES: readonly ["aria-describedby", "aria-labelledby"];
6
-
7
- /** Position of the tooltip relative to the anchor element. */
8
- type TooltipPlacement = Extract<Placement, 'top' | 'right' | 'bottom' | 'left'>;
9
- /**
10
- * Defines the props of the component.
11
- */
12
- interface TooltipProps extends GenericProps, HasCloseMode {
13
- /** Anchor (element on which we activate the tooltip). */
14
- children: ReactNode;
15
- /** Delay (in ms) before closing the tooltip. */
16
- delay?: number;
17
- /** Whether the tooltip is displayed even without the mouse hovering the anchor. */
18
- forceOpen?: boolean;
19
- /** Label text. */
20
- label?: string | null | false;
21
- /** Placement of the tooltip relative to the anchor. */
22
- placement?: TooltipPlacement;
23
- /** Choose how the tooltip text should link to the anchor */
24
- ariaLinkMode?: (typeof ARIA_LINK_MODES)[number];
25
- }
26
- /**
27
- * Tooltip component.
28
- *
29
- * @param props Component props.
30
- * @param ref Component ref.
31
- * @return React element.
32
- */
33
- declare const Tooltip: Comp<TooltipProps, HTMLDivElement>;
34
-
35
- export { Tooltip, type TooltipPlacement, type TooltipProps };
@@ -1,132 +0,0 @@
1
- import { h as getRootClassName, f as AspectRatio, S as Size, i as forwardRef, T as Theme, j as _objectWithoutProperties, _ as _extends, g as classNames } from '../../1da25128.js';
2
- import React__default from 'react';
3
- import { u as useBooleanState } from '../../2a3d237c.js';
4
- import { u as useId } from '../../3a1facc0.js';
5
- import { u as useTheme } from '../../3181f000.js';
6
- import { h as handleBasicClasses } from '../../f57e1239.js';
7
- import { I as Icon } from '../../c6c99f76.js';
8
-
9
- const _excluded = ["aspectRatio", "className", "label", "icon", "size", "theme", "variant", "fileInputProps"];
10
-
11
- /**
12
- * Uploader variants.
13
- */
14
- const UploaderVariant = {
15
- square: 'square',
16
- rounded: 'rounded',
17
- circle: 'circle'
18
- };
19
-
20
- /**
21
- * Uploader sizes.
22
- */
23
-
24
- /**
25
- * Extend native HTML input props with specialized `onChange` providing the a `File` array.
26
- */
27
-
28
- /**
29
- * Defines the props of the component.
30
- */
31
-
32
- /**
33
- * Component display name.
34
- */
35
- const COMPONENT_NAME = 'Uploader';
36
-
37
- /**
38
- * Component default class name and class prefix.
39
- */
40
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
41
-
42
- /**
43
- * Component default props.
44
- */
45
- const DEFAULT_PROPS = {
46
- aspectRatio: AspectRatio.horizontal,
47
- size: Size.xl,
48
- variant: UploaderVariant.square
49
- };
50
-
51
- /**
52
- * Uploader component.
53
- *
54
- * @param props Component props.
55
- * @param ref Component ref.
56
- * @return React element.
57
- */
58
- const Uploader = forwardRef((props, ref) => {
59
- const defaultTheme = useTheme() || Theme.light;
60
- const {
61
- aspectRatio,
62
- className,
63
- label,
64
- icon,
65
- size,
66
- theme = defaultTheme,
67
- variant,
68
- fileInputProps
69
- } = props,
70
- forwardedProps = _objectWithoutProperties(props, _excluded);
71
- // Adjust to square aspect ratio when using circle variants.
72
- const adjustedAspectRatio = variant === UploaderVariant.circle ? AspectRatio.square : aspectRatio;
73
- const generatedInputId = useId();
74
- const inputId = (fileInputProps === null || fileInputProps === void 0 ? void 0 : fileInputProps.id) || generatedInputId;
75
- const [isDragHovering, unsetDragHovering, setDragHovering] = useBooleanState(false);
76
- const wrapper = fileInputProps ? {
77
- Component: 'label',
78
- props: {
79
- htmlFor: inputId
80
- }
81
- } : {
82
- Component: 'button',
83
- props: {
84
- type: 'button'
85
- }
86
- };
87
- const onChange = React__default.useMemo(() => {
88
- if (!(fileInputProps !== null && fileInputProps !== void 0 && fileInputProps.onChange)) return undefined;
89
- return evt => {
90
- const fileList = evt.target.files;
91
- const files = fileList ? Array.from(fileList) : [];
92
- fileInputProps.onChange(files, evt);
93
- };
94
- }, [fileInputProps]);
95
- return /*#__PURE__*/React__default.createElement(wrapper.Component, _extends({
96
- ref: ref
97
- }, wrapper.props, forwardedProps, {
98
- className: classNames(className, handleBasicClasses({
99
- aspectRatio: adjustedAspectRatio,
100
- prefix: CLASSNAME,
101
- size,
102
- theme,
103
- variant,
104
- isDragHovering
105
- }))
106
- }), /*#__PURE__*/React__default.createElement("span", {
107
- className: `${CLASSNAME}__background`
108
- }), /*#__PURE__*/React__default.createElement("span", {
109
- className: `${CLASSNAME}__wrapper`
110
- }, icon && /*#__PURE__*/React__default.createElement(Icon, {
111
- className: `${CLASSNAME}__icon`,
112
- icon: icon,
113
- size: Size.s
114
- }), label && /*#__PURE__*/React__default.createElement("span", {
115
- className: `${CLASSNAME}__label`
116
- }, label)), fileInputProps && /*#__PURE__*/React__default.createElement("input", _extends({
117
- type: "file",
118
- id: inputId,
119
- className: `${CLASSNAME}__input`
120
- }, fileInputProps, {
121
- onChange: onChange,
122
- onDragEnter: setDragHovering,
123
- onDragLeave: unsetDragHovering,
124
- onDrop: unsetDragHovering
125
- })));
126
- });
127
- Uploader.displayName = COMPONENT_NAME;
128
- Uploader.className = CLASSNAME;
129
- Uploader.defaultProps = DEFAULT_PROPS;
130
-
131
- export { Uploader, UploaderVariant };
132
- //# sourceMappingURL=index.ts-31f21c2a.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.ts-31f21c2a.js","sources":["../../../../src/components/uploader/Uploader.tsx"],"sourcesContent":["import React, { MouseEventHandler } from 'react';\n\nimport classNames from 'classnames';\n\nimport { AspectRatio, Icon, Size, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { useBooleanState } from '@lumx/react/hooks/useBooleanState';\nimport { useId } from '@lumx/react/hooks/useId';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Uploader variants.\n */\nexport const UploaderVariant = {\n square: 'square',\n rounded: 'rounded',\n circle: 'circle',\n} as const;\nexport type UploaderVariant = ValueOf<typeof UploaderVariant>;\n\n/**\n * Uploader sizes.\n */\nexport type UploaderSize = Extract<Size, 'xl' | 'xxl'>;\n\n/**\n * Extend native HTML input props with specialized `onChange` providing the a `File` array.\n */\ninterface FileInputProps extends Omit<React.ComponentProps<'input'>, 'onChange'> {\n onChange(files: File[], evt: React.ChangeEvent<HTMLInputElement>): void;\n}\n\n/**\n * Defines the props of the component.\n */\nexport interface UploaderProps extends GenericProps, HasTheme {\n /** Image aspect ratio. */\n aspectRatio?: AspectRatio;\n /** Icon (SVG path). */\n icon?: string;\n /** Label text. */\n label?: string;\n /** Size variant. */\n size?: UploaderSize;\n /** Variant. */\n variant?: UploaderVariant;\n /** On click callback. */\n onClick?: MouseEventHandler;\n /** Handle file selection with a native input file. */\n fileInputProps?: FileInputProps;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Uploader';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<UploaderProps> = {\n aspectRatio: AspectRatio.horizontal,\n size: Size.xl,\n variant: UploaderVariant.square,\n};\n\n/**\n * Uploader component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Uploader = forwardRef<UploaderProps>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n aspectRatio,\n className,\n label,\n icon,\n size,\n theme = defaultTheme,\n variant,\n fileInputProps,\n ...forwardedProps\n } = props;\n // Adjust to square aspect ratio when using circle variants.\n const adjustedAspectRatio = variant === UploaderVariant.circle ? AspectRatio.square : aspectRatio;\n\n const generatedInputId = useId();\n const inputId = fileInputProps?.id || generatedInputId;\n const [isDragHovering, unsetDragHovering, setDragHovering] = useBooleanState(false);\n const wrapper = fileInputProps\n ? { Component: 'label' as const, props: { htmlFor: inputId } as const }\n : { Component: 'button' as const, props: { type: 'button' } as const };\n\n const onChange = React.useMemo(() => {\n if (!fileInputProps?.onChange) return undefined;\n return (evt: React.ChangeEvent<HTMLInputElement>) => {\n const fileList = evt.target.files;\n const files = fileList ? Array.from(fileList) : [];\n fileInputProps.onChange(files, evt);\n };\n }, [fileInputProps]);\n\n return (\n <wrapper.Component\n ref={ref as any}\n {...wrapper.props}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n aspectRatio: adjustedAspectRatio,\n prefix: CLASSNAME,\n size,\n theme,\n variant,\n isDragHovering,\n }),\n )}\n >\n <span className={`${CLASSNAME}__background`} />\n\n <span className={`${CLASSNAME}__wrapper`}>\n {icon && <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.s} />}\n\n {label && <span className={`${CLASSNAME}__label`}>{label}</span>}\n </span>\n\n {fileInputProps && (\n <input\n type=\"file\"\n id={inputId}\n className={`${CLASSNAME}__input`}\n {...fileInputProps}\n onChange={onChange}\n onDragEnter={setDragHovering}\n onDragLeave={unsetDragHovering}\n onDrop={unsetDragHovering}\n />\n )}\n </wrapper.Component>\n );\n});\nUploader.displayName = COMPONENT_NAME;\nUploader.className = CLASSNAME;\nUploader.defaultProps = DEFAULT_PROPS;\n"],"names":["UploaderVariant","square","rounded","circle","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","aspectRatio","AspectRatio","horizontal","size","Size","xl","variant","Uploader","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","className","label","icon","theme","fileInputProps","forwardedProps","_objectWithoutProperties","_excluded","adjustedAspectRatio","generatedInputId","useId","inputId","id","isDragHovering","unsetDragHovering","setDragHovering","useBooleanState","wrapper","Component","htmlFor","type","onChange","React","useMemo","undefined","evt","fileList","target","files","Array","from","createElement","_extends","classNames","handleBasicClasses","prefix","Icon","s","onDragEnter","onDragLeave","onDrop","displayName","defaultProps"],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- import { V as ValueOf, S as Size, G as GenericProps, H as HasTheme, l as AspectRatio, C as Comp } from '../../8d67e1e3.js';
2
- import React, { MouseEventHandler } from 'react';
3
-
4
- /**
5
- * Uploader variants.
6
- */
7
- declare const UploaderVariant: {
8
- readonly square: "square";
9
- readonly rounded: "rounded";
10
- readonly circle: "circle";
11
- };
12
- type UploaderVariant = ValueOf<typeof UploaderVariant>;
13
- /**
14
- * Uploader sizes.
15
- */
16
- type UploaderSize = Extract<Size, 'xl' | 'xxl'>;
17
- /**
18
- * Extend native HTML input props with specialized `onChange` providing the a `File` array.
19
- */
20
- interface FileInputProps extends Omit<React.ComponentProps<'input'>, 'onChange'> {
21
- onChange(files: File[], evt: React.ChangeEvent<HTMLInputElement>): void;
22
- }
23
- /**
24
- * Defines the props of the component.
25
- */
26
- interface UploaderProps extends GenericProps, HasTheme {
27
- /** Image aspect ratio. */
28
- aspectRatio?: AspectRatio;
29
- /** Icon (SVG path). */
30
- icon?: string;
31
- /** Label text. */
32
- label?: string;
33
- /** Size variant. */
34
- size?: UploaderSize;
35
- /** Variant. */
36
- variant?: UploaderVariant;
37
- /** On click callback. */
38
- onClick?: MouseEventHandler;
39
- /** Handle file selection with a native input file. */
40
- fileInputProps?: FileInputProps;
41
- }
42
- /**
43
- * Uploader component.
44
- *
45
- * @param props Component props.
46
- * @param ref Component ref.
47
- * @return React element.
48
- */
49
- declare const Uploader: Comp<UploaderProps, HTMLElement>;
50
-
51
- export { Uploader, type UploaderProps, type UploaderSize, UploaderVariant };