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

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 (296) 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 +14554 -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 +6 -10
  11. package/src/components/dialog/Dialog.tsx +1 -1
  12. package/src/components/expansion-panel/ExpansionPanel.tsx +14 -18
  13. package/src/components/flex-box/FlexBox.tsx +1 -1
  14. package/src/components/generic-block/GenericBlock.tsx +6 -7
  15. package/src/components/generic-block/constants.ts +9 -4
  16. package/src/components/grid-column/GridColumn.tsx +1 -2
  17. package/src/components/link/Link.tsx +3 -5
  18. package/src/components/list/ListItem.tsx +1 -2
  19. package/src/components/list/useInteractiveList.tsx +1 -2
  20. package/src/components/mosaic/Mosaic.test.tsx +3 -3
  21. package/src/components/mosaic/Mosaic.tsx +2 -3
  22. package/src/components/navigation/Navigation.tsx +42 -37
  23. package/src/components/navigation/NavigationSection.tsx +76 -79
  24. package/src/components/notification/Notification.tsx +1 -5
  25. package/src/components/post-block/PostBlock.tsx +4 -8
  26. package/src/components/progress-tracker/ProgressTracker.stories.tsx +11 -11
  27. package/src/components/select/Select.stories.tsx +14 -5
  28. package/src/components/select/Select.tsx +1 -2
  29. package/src/components/select/SelectMultiple.stories.tsx +12 -10
  30. package/src/components/side-navigation/SideNavigationItem.tsx +1 -1
  31. package/src/components/slideshow/Slides.tsx +1 -1
  32. package/src/components/slideshow/SlideshowControls.tsx +1 -1
  33. package/src/components/switch/Switch.tsx +1 -2
  34. package/src/components/tabs/Tabs.stories.tsx +3 -4
  35. package/src/components/text-field/TextField.test.tsx +2 -2
  36. package/src/components/text-field/TextField.tsx +2 -3
  37. package/src/components/user-block/UserBlock.tsx +7 -9
  38. package/src/hooks/useClickAway.tsx +1 -2
  39. package/src/hooks/useInterval.tsx +1 -4
  40. package/src/hooks/useKeyboardListNavigation.tsx +2 -4
  41. package/src/hooks/useStopPropagation.ts +1 -2
  42. package/src/stories/decorators/withCombinations.tsx +1 -1
  43. package/src/testing/utils/commonTestsSuiteRTL.tsx +2 -2
  44. package/src/utils/collection/castArray.test.ts +15 -0
  45. package/src/utils/collection/castArray.ts +3 -0
  46. package/src/utils/collection/chunk.test.ts +15 -0
  47. package/src/utils/collection/chunk.ts +6 -0
  48. package/src/utils/collection/isEmpty.test.js +20 -0
  49. package/src/utils/collection/isEmpty.ts +4 -0
  50. package/src/utils/collection/last.ts +2 -0
  51. package/src/utils/collection/partitionMulti.test.ts +35 -0
  52. package/src/utils/{partitionMulti.ts → collection/partitionMulti.ts} +13 -12
  53. package/src/utils/collection/pull.test.ts +17 -0
  54. package/src/utils/collection/pull.ts +7 -0
  55. package/src/utils/collection/range.test.js +9 -0
  56. package/src/utils/collection/range.ts +2 -0
  57. package/src/utils/date/getMonthCalendar.ts +3 -4
  58. package/src/utils/flattenChildren.ts +2 -3
  59. package/src/utils/makeListenerTowerContext.ts +2 -2
  60. package/src/utils/react/forwardRef.ts +3 -2
  61. package/src/utils/react/forwardRefPolymorphic.ts +1 -2
  62. package/src/utils/utils.test.ts +0 -27
  63. package/utils/index.d.ts +1 -1
  64. package/utils/index.js +1 -96
  65. package/utils/index.js.map +1 -1
  66. package/_internal/17c3ea1d.js +0 -137
  67. package/_internal/17c3ea1d.js.map +0 -1
  68. package/_internal/1da25128.js +0 -411
  69. package/_internal/1da25128.js.map +0 -1
  70. package/_internal/230173a8.js +0 -13
  71. package/_internal/230173a8.js.map +0 -1
  72. package/_internal/23bdba2d.js +0 -71
  73. package/_internal/23bdba2d.js.map +0 -1
  74. package/_internal/26926e5c.d.ts +0 -36
  75. package/_internal/2a3d237c.js +0 -12
  76. package/_internal/2a3d237c.js.map +0 -1
  77. package/_internal/2c5dbb03.js +0 -26
  78. package/_internal/2c5dbb03.js.map +0 -1
  79. package/_internal/2e2abe51.js +0 -2154
  80. package/_internal/2e2abe51.js.map +0 -1
  81. package/_internal/31490c59.d.ts +0 -167
  82. package/_internal/3181f000.js +0 -14
  83. package/_internal/3181f000.js.map +0 -1
  84. package/_internal/35f100be.d.ts +0 -104
  85. package/_internal/36bd7352.js +0 -219
  86. package/_internal/36bd7352.js.map +0 -1
  87. package/_internal/3a1facc0.js +0 -18
  88. package/_internal/3a1facc0.js.map +0 -1
  89. package/_internal/4c20d932.js +0 -89
  90. package/_internal/4c20d932.js.map +0 -1
  91. package/_internal/4c28d012.js +0 -305
  92. package/_internal/4c28d012.js.map +0 -1
  93. package/_internal/4cd0bf32.js +0 -160
  94. package/_internal/4cd0bf32.js.map +0 -1
  95. package/_internal/4daccdd5.js +0 -25
  96. package/_internal/4daccdd5.js.map +0 -1
  97. package/_internal/524b1d04.js +0 -64
  98. package/_internal/524b1d04.js.map +0 -1
  99. package/_internal/53c94227.js +0 -123
  100. package/_internal/53c94227.js.map +0 -1
  101. package/_internal/54d9ded5.js +0 -418
  102. package/_internal/54d9ded5.js.map +0 -1
  103. package/_internal/56aec41b.js +0 -652
  104. package/_internal/56aec41b.js.map +0 -1
  105. package/_internal/5720caf5.js +0 -124
  106. package/_internal/5720caf5.js.map +0 -1
  107. package/_internal/646f0db6.js +0 -113
  108. package/_internal/646f0db6.js.map +0 -1
  109. package/_internal/6cc8dca8.d.ts +0 -22
  110. package/_internal/7f022f8c.d.ts +0 -34
  111. package/_internal/b8f2948d.js +0 -691
  112. package/_internal/b8f2948d.js.map +0 -1
  113. package/_internal/bc28d510.js +0 -784
  114. package/_internal/bc28d510.js.map +0 -1
  115. package/_internal/c68d24e4.js +0 -145
  116. package/_internal/c68d24e4.js.map +0 -1
  117. package/_internal/c6c99f76.js +0 -105
  118. package/_internal/c6c99f76.js.map +0 -1
  119. package/_internal/cae46566.js +0 -65
  120. package/_internal/cae46566.js.map +0 -1
  121. package/_internal/components/alert-dialog/index.ts-623b1ed3.d.ts +0 -37
  122. package/_internal/components/alert-dialog/index.ts-f83bd6ef.js +0 -148
  123. package/_internal/components/alert-dialog/index.ts-f83bd6ef.js.map +0 -1
  124. package/_internal/components/autocomplete/index.ts-3f8f125c.js +0 -264
  125. package/_internal/components/autocomplete/index.ts-3f8f125c.js.map +0 -1
  126. package/_internal/components/autocomplete/index.ts-8d6b123f.d.ts +0 -201
  127. package/_internal/components/avatar/index.ts-93ee0ea9.js +0 -89
  128. package/_internal/components/avatar/index.ts-93ee0ea9.js.map +0 -1
  129. package/_internal/components/avatar/index.ts-f92852b4.d.ts +0 -43
  130. package/_internal/components/badge/index.ts-2d7700ef.d.ts +0 -30
  131. package/_internal/components/badge/index.ts-6753d67f.js +0 -88
  132. package/_internal/components/badge/index.ts-6753d67f.js.map +0 -1
  133. package/_internal/components/button/index.ts-031307ce.js +0 -51
  134. package/_internal/components/button/index.ts-031307ce.js.map +0 -1
  135. package/_internal/components/button/index.ts-b29e26a4.d.ts +0 -22
  136. package/_internal/components/checkbox/index.ts-a33166d7.js +0 -127
  137. package/_internal/components/checkbox/index.ts-a33166d7.js.map +0 -1
  138. package/_internal/components/checkbox/index.ts-f82358ff.d.ts +0 -38
  139. package/_internal/components/chip/index.ts-4a91f1a7.d.ts +0 -68
  140. package/_internal/components/chip/index.ts-a2b5b771.js +0 -110
  141. package/_internal/components/chip/index.ts-a2b5b771.js.map +0 -1
  142. package/_internal/components/comment-block/index.ts-58fa051a.js +0 -121
  143. package/_internal/components/comment-block/index.ts-58fa051a.js.map +0 -1
  144. package/_internal/components/comment-block/index.ts-8cfa5af0.d.ts +0 -67
  145. package/_internal/components/date-picker/index.ts-145262d5.js +0 -2
  146. package/_internal/components/date-picker/index.ts-145262d5.js.map +0 -1
  147. package/_internal/components/date-picker/index.ts-70a34fa7.d.ts +0 -95
  148. package/_internal/components/dialog/index.ts-ea044db2.js +0 -224
  149. package/_internal/components/dialog/index.ts-ea044db2.js.map +0 -1
  150. package/_internal/components/dialog/index.ts-eca28654.d.ts +0 -55
  151. package/_internal/components/divider/index.ts-4a56db75.js +0 -55
  152. package/_internal/components/divider/index.ts-4a56db75.js.map +0 -1
  153. package/_internal/components/divider/index.ts-b011d8ca.d.ts +0 -18
  154. package/_internal/components/drag-handle/index.ts-0aebf92f.js +0 -54
  155. package/_internal/components/drag-handle/index.ts-0aebf92f.js.map +0 -1
  156. package/_internal/components/drag-handle/index.ts-3ab31dd1.d.ts +0 -18
  157. package/_internal/components/dropdown/index.ts-2a17db51.js +0 -154
  158. package/_internal/components/dropdown/index.ts-2a17db51.js.map +0 -1
  159. package/_internal/components/dropdown/index.ts-b648a15c.d.ts +0 -87
  160. package/_internal/components/expansion-panel/index.ts-69f09f5b.d.ts +0 -38
  161. package/_internal/components/expansion-panel/index.ts-fae3762e.js +0 -143
  162. package/_internal/components/expansion-panel/index.ts-fae3762e.js.map +0 -1
  163. package/_internal/components/flag/index.ts-8dcd685b.js +0 -56
  164. package/_internal/components/flag/index.ts-8dcd685b.js.map +0 -1
  165. package/_internal/components/flag/index.ts-fda89adb.d.ts +0 -23
  166. package/_internal/components/flex-box/index.ts-87f2b58d.d.ts +0 -43
  167. package/_internal/components/flex-box/index.ts-c216e957.js +0 -60
  168. package/_internal/components/flex-box/index.ts-c216e957.js.map +0 -1
  169. package/_internal/components/generic-block/index.ts-999a62a4.js +0 -115
  170. package/_internal/components/generic-block/index.ts-999a62a4.js.map +0 -1
  171. package/_internal/components/generic-block/index.ts-cd3b0e21.d.ts +0 -106
  172. package/_internal/components/grid/index.ts-67e0694f.d.ts +0 -50
  173. package/_internal/components/grid/index.ts-fdf1b306.js +0 -113
  174. package/_internal/components/grid/index.ts-fdf1b306.js.map +0 -1
  175. package/_internal/components/grid-column/index.ts-97c61cbe.js +0 -64
  176. package/_internal/components/grid-column/index.ts-97c61cbe.js.map +0 -1
  177. package/_internal/components/grid-column/index.ts-c89e1c18.d.ts +0 -31
  178. package/_internal/components/heading/index.ts-0179e9a9.js +0 -112
  179. package/_internal/components/heading/index.ts-0179e9a9.js.map +0 -1
  180. package/_internal/components/heading/index.ts-587579e8.d.ts +0 -37
  181. package/_internal/components/icon/index.ts-740ca1de.js +0 -2
  182. package/_internal/components/icon/index.ts-740ca1de.js.map +0 -1
  183. package/_internal/components/icon/index.ts-b3fa5e15.d.ts +0 -34
  184. package/_internal/components/image-block/index.ts-36b3828f.d.ts +0 -49
  185. package/_internal/components/image-block/index.ts-ef5e2e7d.js +0 -111
  186. package/_internal/components/image-block/index.ts-ef5e2e7d.js.map +0 -1
  187. package/_internal/components/image-lightbox/index.ts-137f85a8.js +0 -765
  188. package/_internal/components/image-lightbox/index.ts-137f85a8.js.map +0 -1
  189. package/_internal/components/image-lightbox/index.ts-2cb92d18.d.ts +0 -75
  190. package/_internal/components/inline-list/index.ts-033dd358.js +0 -76
  191. package/_internal/components/inline-list/index.ts-033dd358.js.map +0 -1
  192. package/_internal/components/inline-list/index.ts-e1c8a3ff.d.ts +0 -34
  193. package/_internal/components/input-helper/index.ts-32a9ca90.d.ts +0 -22
  194. package/_internal/components/input-helper/index.ts-ab3a1ef5.js +0 -75
  195. package/_internal/components/input-helper/index.ts-ab3a1ef5.js.map +0 -1
  196. package/_internal/components/input-label/index.ts-86f2ea41.d.ts +0 -24
  197. package/_internal/components/input-label/index.ts-d6ca5569.js +0 -60
  198. package/_internal/components/input-label/index.ts-d6ca5569.js.map +0 -1
  199. package/_internal/components/lightbox/index.ts-5370e8e6.d.ts +0 -36
  200. package/_internal/components/lightbox/index.ts-7a16cdc7.js +0 -149
  201. package/_internal/components/lightbox/index.ts-7a16cdc7.js.map +0 -1
  202. package/_internal/components/link/index.ts-26435006.d.ts +0 -37
  203. package/_internal/components/link/index.ts-d04f4e53.js +0 -120
  204. package/_internal/components/link/index.ts-d04f4e53.js.map +0 -1
  205. package/_internal/components/link-preview/index.ts-e560a274.d.ts +0 -36
  206. package/_internal/components/link-preview/index.ts-fee89f66.js +0 -109
  207. package/_internal/components/link-preview/index.ts-fee89f66.js.map +0 -1
  208. package/_internal/components/list/index.ts-ab57902e.d.ts +0 -118
  209. package/_internal/components/list/index.ts-f3101625.js +0 -86
  210. package/_internal/components/list/index.ts-f3101625.js.map +0 -1
  211. package/_internal/components/message/index.ts-041cf0cb.js +0 -97
  212. package/_internal/components/message/index.ts-041cf0cb.js.map +0 -1
  213. package/_internal/components/message/index.ts-2d38e0ea.d.ts +0 -37
  214. package/_internal/components/mosaic/index.ts-232d5aed.d.ts +0 -23
  215. package/_internal/components/mosaic/index.ts-d2128cd3.js +0 -94
  216. package/_internal/components/mosaic/index.ts-d2128cd3.js.map +0 -1
  217. package/_internal/components/navigation/index.ts-6d8bea53.d.ts +0 -58
  218. package/_internal/components/navigation/index.ts-e8dc0a7f.js +0 -222
  219. package/_internal/components/navigation/index.ts-e8dc0a7f.js.map +0 -1
  220. package/_internal/components/notification/index.ts-235fd340.js +0 -140
  221. package/_internal/components/notification/index.ts-235fd340.js.map +0 -1
  222. package/_internal/components/notification/index.ts-bb3f03f6.d.ts +0 -34
  223. package/_internal/components/popover/index.ts-2f17a9b6.js +0 -3
  224. package/_internal/components/popover/index.ts-2f17a9b6.js.map +0 -1
  225. package/_internal/components/popover/index.ts-e3b4ff19.d.ts +0 -66
  226. package/_internal/components/post-block/index.ts-0acb9bb4.js +0 -101
  227. package/_internal/components/post-block/index.ts-0acb9bb4.js.map +0 -1
  228. package/_internal/components/post-block/index.ts-9b8ff90b.d.ts +0 -41
  229. package/_internal/components/progress/index.ts-2a713859.js +0 -189
  230. package/_internal/components/progress/index.ts-2a713859.js.map +0 -1
  231. package/_internal/components/progress/index.ts-dfdfa5fb.d.ts +0 -60
  232. package/_internal/components/progress-tracker/index.ts-2649f756.js +0 -312
  233. package/_internal/components/progress-tracker/index.ts-2649f756.js.map +0 -1
  234. package/_internal/components/progress-tracker/index.ts-95320f32.d.ts +0 -101
  235. package/_internal/components/radio-button/index.ts-5eaab4cf.d.ts +0 -54
  236. package/_internal/components/radio-button/index.ts-b4dfb2a0.js +0 -150
  237. package/_internal/components/radio-button/index.ts-b4dfb2a0.js.map +0 -1
  238. package/_internal/components/select/index.ts-a65e3507.d.ts +0 -91
  239. package/_internal/components/select/index.ts-e8fad28b.js +0 -257
  240. package/_internal/components/select/index.ts-e8fad28b.js.map +0 -1
  241. package/_internal/components/side-navigation/index.ts-3f5f3785.d.ts +0 -60
  242. package/_internal/components/side-navigation/index.ts-c9a5fc3e.js +0 -184
  243. package/_internal/components/side-navigation/index.ts-c9a5fc3e.js.map +0 -1
  244. package/_internal/components/skeleton/index.ts-a7daefac.d.ts +0 -75
  245. package/_internal/components/skeleton/index.ts-ffc995af.js +0 -179
  246. package/_internal/components/skeleton/index.ts-ffc995af.js.map +0 -1
  247. package/_internal/components/slider/index.ts-24a0d598.d.ts +0 -52
  248. package/_internal/components/slider/index.ts-72aadf4c.js +0 -308
  249. package/_internal/components/slider/index.ts-72aadf4c.js.map +0 -1
  250. package/_internal/components/slideshow/index.ts-c99f2892.js +0 -151
  251. package/_internal/components/slideshow/index.ts-c99f2892.js.map +0 -1
  252. package/_internal/components/slideshow/index.ts-e49462c6.d.ts +0 -25
  253. package/_internal/components/switch/index.ts-207ba52b.d.ts +0 -34
  254. package/_internal/components/switch/index.ts-542e6eaf.js +0 -115
  255. package/_internal/components/switch/index.ts-542e6eaf.js.map +0 -1
  256. package/_internal/components/table/index.ts-905ce390.js +0 -310
  257. package/_internal/components/table/index.ts-905ce390.js.map +0 -1
  258. package/_internal/components/table/index.ts-c4f39b2d.d.ts +0 -108
  259. package/_internal/components/tabs/index.ts-713119f4.js +0 -289
  260. package/_internal/components/tabs/index.ts-713119f4.js.map +0 -1
  261. package/_internal/components/tabs/index.ts-dbfc48d9.d.ts +0 -106
  262. package/_internal/components/text/index.ts-6afbe8cd.js +0 -2
  263. package/_internal/components/text/index.ts-6afbe8cd.js.map +0 -1
  264. package/_internal/components/text/index.ts-8a812048.d.ts +0 -53
  265. package/_internal/components/text-field/index.ts-92e6b3b3.d.ts +0 -77
  266. package/_internal/components/text-field/index.ts-c3be8563.js +0 -341
  267. package/_internal/components/text-field/index.ts-c3be8563.js.map +0 -1
  268. package/_internal/components/thumbnail/index.ts-16d7b403.js +0 -40
  269. package/_internal/components/thumbnail/index.ts-16d7b403.js.map +0 -1
  270. package/_internal/components/thumbnail/index.ts-1b6c0b48.d.ts +0 -8
  271. package/_internal/components/toolbar/index.ts-813b902e.js +0 -63
  272. package/_internal/components/toolbar/index.ts-813b902e.js.map +0 -1
  273. package/_internal/components/toolbar/index.ts-9f5129d1.d.ts +0 -24
  274. package/_internal/components/tooltip/index.ts-905c847c.js +0 -322
  275. package/_internal/components/tooltip/index.ts-905c847c.js.map +0 -1
  276. package/_internal/components/tooltip/index.ts-c6931e9e.d.ts +0 -35
  277. package/_internal/components/uploader/index.ts-31f21c2a.js +0 -132
  278. package/_internal/components/uploader/index.ts-31f21c2a.js.map +0 -1
  279. package/_internal/components/uploader/index.ts-c3ccba98.d.ts +0 -51
  280. package/_internal/components/user-block/index.ts-18c58e19.d.ts +0 -50
  281. package/_internal/components/user-block/index.ts-d43e5f3c.js +0 -136
  282. package/_internal/components/user-block/index.ts-d43e5f3c.js.map +0 -1
  283. package/_internal/dc3e28c8.d.ts +0 -38
  284. package/_internal/f39a1ba4.js +0 -73
  285. package/_internal/f39a1ba4.js.map +0 -1
  286. package/_internal/f3e77e3e.js +0 -22
  287. package/_internal/f3e77e3e.js.map +0 -1
  288. package/_internal/f502ab30.js +0 -78
  289. package/_internal/f502ab30.js.map +0 -1
  290. package/_internal/f52adbae.js +0 -36
  291. package/_internal/f52adbae.js.map +0 -1
  292. package/_internal/f57e1239.js +0 -205
  293. package/_internal/f57e1239.js.map +0 -1
  294. package/_internal/f5ff1aa4.d.ts +0 -47
  295. package/_internal/fb975afe.js +0 -52
  296. package/_internal/fb975afe.js.map +0 -1
@@ -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 };