@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,64 +0,0 @@
1
- import { g as classNames, _ as _extends } from './1da25128.js';
2
- import React__default from 'react';
3
- import { FlexBox } from './components/flex-box/index.ts-c216e957.js';
4
- import { T as Text } from './53c94227.js';
5
-
6
- /** Internal component used to render image captions */
7
- const ImageCaption = props => {
8
- const {
9
- baseClassName,
10
- theme,
11
- as = 'figcaption',
12
- title,
13
- titleProps,
14
- description,
15
- descriptionProps,
16
- tags,
17
- captionStyle,
18
- align,
19
- truncate
20
- } = props;
21
- if (!title && !description && !tags) return null;
22
- const titleColor = {
23
- color: theme === 'dark' ? 'light' : 'dark'
24
- };
25
- const baseColor = {
26
- color: theme === 'dark' ? 'light' : 'dark',
27
- colorVariant: 'L2'
28
- };
29
-
30
- // Display description as string or HTML
31
- const descriptionContent = typeof description === 'string' ? {
32
- children: description
33
- } : {
34
- dangerouslySetInnerHTML: description
35
- };
36
- return /*#__PURE__*/React__default.createElement(FlexBox, {
37
- as: as,
38
- className: classNames(baseClassName && `${baseClassName}__wrapper`),
39
- style: captionStyle,
40
- orientation: "vertical",
41
- vAlign: align,
42
- hAlign: align === 'center' ? align : undefined,
43
- gap: "regular"
44
- }, (title || description) && /*#__PURE__*/React__default.createElement(Text, _extends({
45
- as: "p",
46
- className: classNames(baseClassName && `${baseClassName}__caption`),
47
- truncate: truncate
48
- }, baseColor), title && /*#__PURE__*/React__default.createElement(Text, _extends({}, titleProps, {
49
- as: "span",
50
- className: classNames(titleProps === null || titleProps === void 0 ? void 0 : titleProps.className, baseClassName && `${baseClassName}__title`),
51
- typography: "subtitle1"
52
- }, titleColor), title), ' ', description && /*#__PURE__*/React__default.createElement(Text, _extends({}, descriptionProps, {
53
- as: "span",
54
- className: classNames(descriptionProps === null || descriptionProps === void 0 ? void 0 : descriptionProps.className, baseClassName && `${baseClassName}__description`),
55
- typography: "body1"
56
- }, descriptionContent))), tags && /*#__PURE__*/React__default.createElement(FlexBox, {
57
- className: classNames(baseClassName && `${baseClassName}__tags`),
58
- orientation: "horizontal",
59
- vAlign: align
60
- }, tags));
61
- };
62
-
63
- export { ImageCaption as I };
64
- //# sourceMappingURL=524b1d04.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"524b1d04.js","sources":["../../src/components/image-block/ImageCaption.tsx"],"sourcesContent":["import React, { CSSProperties, ReactNode } from 'react';\n\nimport { FlexBox, HorizontalAlignment, Text, TextProps } from '@lumx/react';\nimport { HasPolymorphicAs, HasTheme } from '@lumx/react/utils/type';\nimport classNames from 'classnames';\n\ntype As = 'div' | 'figcaption';\n\ntype ForwardedTextProps = Omit<TextProps, 'as' | 'typography' | 'color' | 'colorVariant'>;\n\nexport type ImageCaptionMetadata = {\n /** Image title to display in the caption. */\n title?: string;\n /** Props to pass to the title. */\n titleProps?: ForwardedTextProps;\n /** Image description. Can be either a string, or sanitized html. */\n description?: string | { __html: string };\n /** Props to pass to the title. */\n descriptionProps?: ForwardedTextProps;\n /** Tag content. */\n tags?: ReactNode;\n /** Caption custom CSS style. */\n captionStyle?: CSSProperties;\n};\n\nexport type ImageCaptionProps<AS extends As = 'figcaption'> = HasTheme &\n HasPolymorphicAs<AS> &\n ImageCaptionMetadata & {\n /** Base className for sub elements */\n baseClassName?: string;\n /** Alignment. */\n align?: HorizontalAlignment;\n /** Truncate text on title & description (no line wrapping). */\n truncate?: TextProps['truncate'];\n };\n\n/** Internal component used to render image captions */\nexport const ImageCaption = <AS extends As>(props: ImageCaptionProps<AS>) => {\n const {\n baseClassName,\n theme,\n as = 'figcaption',\n title,\n titleProps,\n description,\n descriptionProps,\n tags,\n captionStyle,\n align,\n truncate,\n } = props;\n if (!title && !description && !tags) return null;\n\n const titleColor = { color: theme === 'dark' ? 'light' : 'dark' } as const;\n const baseColor = { color: theme === 'dark' ? 'light' : 'dark', colorVariant: 'L2' } as const;\n\n // Display description as string or HTML\n const descriptionContent =\n typeof description === 'string' ? { children: description } : { dangerouslySetInnerHTML: description };\n\n return (\n <FlexBox\n as={as}\n className={classNames(baseClassName && `${baseClassName}__wrapper`)}\n style={captionStyle}\n orientation=\"vertical\"\n vAlign={align}\n hAlign={align === 'center' ? align : undefined}\n gap=\"regular\"\n >\n {(title || description) && (\n <Text\n as=\"p\"\n className={classNames(baseClassName && `${baseClassName}__caption`)}\n truncate={truncate}\n {...baseColor}\n >\n {title && (\n <Text\n {...titleProps}\n as=\"span\"\n className={classNames(titleProps?.className, baseClassName && `${baseClassName}__title`)}\n typography=\"subtitle1\"\n {...titleColor}\n >\n {title}\n </Text>\n )}{' '}\n {description && (\n <Text\n {...descriptionProps}\n as=\"span\"\n className={classNames(\n descriptionProps?.className,\n baseClassName && `${baseClassName}__description`,\n )}\n typography=\"body1\"\n {...descriptionContent}\n />\n )}\n </Text>\n )}\n {tags && (\n <FlexBox\n className={classNames(baseClassName && `${baseClassName}__tags`)}\n orientation=\"horizontal\"\n vAlign={align}\n >\n {tags}\n </FlexBox>\n )}\n </FlexBox>\n );\n};\n"],"names":["ImageCaption","props","baseClassName","theme","as","title","titleProps","description","descriptionProps","tags","captionStyle","align","truncate","titleColor","color","baseColor","colorVariant","descriptionContent","children","dangerouslySetInnerHTML","React","createElement","FlexBox","className","classNames","style","orientation","vAlign","hAlign","undefined","gap","Text","_extends","typography"],"mappings":"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"}
@@ -1,123 +0,0 @@
1
- import { h as getRootClassName, i as forwardRef, j as _objectWithoutProperties, p as getFontColorClassName, _ as _extends, g as classNames, k as _objectSpread2, q as getTypographyClassName } from './1da25128.js';
2
- import React__default, { Children, Fragment } from 'react';
3
- import { i as isComponent } from './f39a1ba4.js';
4
- import { u as useTooltipContext } from './f3e77e3e.js';
5
- import { u as useMergeRefs } from './f52adbae.js';
6
- import { h as handleBasicClasses } from './f57e1239.js';
7
- import { I as Icon } from './c6c99f76.js';
8
-
9
- /**
10
- * Compute a tooltip label based on a label element `innerText` if the text overflows.
11
- *
12
- * Warning: only works on first render, does not update on label element resize.
13
- */
14
- const useOverflowTooltipLabel = () => {
15
- const parentTooltip = useTooltipContext();
16
- const [tooltipLabel, setTooltipLabel] = React__default.useState(undefined);
17
- const labelRef = React__default.useCallback(labelElement => {
18
- if (!labelElement || !!parentTooltip) {
19
- // Skip if label element is unknown
20
- // Skip if the parent has a tooltip
21
- return;
22
- }
23
-
24
- // Label overflowing
25
- if (labelElement.offsetWidth < labelElement.scrollWidth) {
26
- setTooltipLabel(labelElement.innerText);
27
- }
28
- }, [parentTooltip]);
29
- return {
30
- labelRef,
31
- tooltipLabel
32
- };
33
- };
34
-
35
- const _excluded = ["as", "children", "className", "color", "colorVariant", "noWrap", "typography", "truncate", "whiteSpace", "style"];
36
-
37
- /**
38
- * Defines the props of the component.
39
- */
40
-
41
- /**
42
- * Component display name.
43
- */
44
- const COMPONENT_NAME = 'Text';
45
-
46
- /**
47
- * Component default class name and class prefix.
48
- */
49
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
50
-
51
- /**
52
- * Component default props.
53
- */
54
- const DEFAULT_PROPS = {};
55
-
56
- /**
57
- * Text component.
58
- *
59
- * @param props Component props.
60
- * @param ref Component ref.
61
- * @return React element.
62
- */
63
- const Text = forwardRef((props, ref) => {
64
- const {
65
- as: Component,
66
- children,
67
- className,
68
- color,
69
- colorVariant,
70
- noWrap,
71
- typography,
72
- truncate,
73
- whiteSpace,
74
- style
75
- } = props,
76
- forwardedProps = _objectWithoutProperties(props, _excluded);
77
- const colorClass = color && getFontColorClassName(color, colorVariant);
78
- const typographyClass = typography && getTypographyClassName(typography);
79
-
80
- // Truncate mode
81
- const truncateLinesStyle = typeof truncate === 'object' && truncate.lines > 1 && {
82
- '--lumx-text-truncate-lines': truncate.lines
83
- };
84
- const isTruncatedMultiline = !!truncateLinesStyle;
85
- const isTruncated = !!truncate;
86
-
87
- /**
88
- * Add custom white-space style if specified
89
- * Disabled if noWrap is specified
90
- * Disabled if truncated on one-line
91
- * */
92
- const whiteSpaceStyle = !noWrap && !(isTruncated && !isTruncatedMultiline) && whiteSpace && {
93
- '--lumx-text-white-space': whiteSpace
94
- };
95
- const {
96
- tooltipLabel,
97
- labelRef
98
- } = useOverflowTooltipLabel();
99
- return /*#__PURE__*/React__default.createElement(Component, _extends({
100
- ref: useMergeRefs(ref, labelRef),
101
- className: classNames(className, handleBasicClasses({
102
- prefix: CLASSNAME,
103
- isTruncated: isTruncated && !isTruncatedMultiline,
104
- isTruncatedMultiline
105
- }), typographyClass, colorClass, noWrap && `${CLASSNAME}--no-wrap`),
106
- title: tooltipLabel,
107
- style: _objectSpread2(_objectSpread2(_objectSpread2({}, truncateLinesStyle), whiteSpaceStyle), style)
108
- }, forwardedProps), children && Children.toArray(children).map((child, index) => {
109
- // Force wrap spaces around icons to make sure they are never stuck against text.
110
- if (isComponent(Icon)(child)) {
111
- return /*#__PURE__*/React__default.createElement(Fragment, {
112
- key: child.key || index
113
- }, " ", child, " ");
114
- }
115
- return child;
116
- }));
117
- });
118
- Text.displayName = COMPONENT_NAME;
119
- Text.className = CLASSNAME;
120
- Text.defaultProps = DEFAULT_PROPS;
121
-
122
- export { Text as T, useOverflowTooltipLabel as u };
123
- //# sourceMappingURL=53c94227.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"53c94227.js","sources":["../../src/hooks/useOverflowTooltipLabel.tsx","../../src/components/text/Text.tsx"],"sourcesContent":["import React from 'react';\nimport { useTooltipContext } from '@lumx/react/components/tooltip/context';\n\n/**\n * Compute a tooltip label based on a label element `innerText` if the text overflows.\n *\n * Warning: only works on first render, does not update on label element resize.\n */\nexport const useOverflowTooltipLabel = () => {\n const parentTooltip = useTooltipContext();\n const [tooltipLabel, setTooltipLabel] = React.useState<string | undefined>(undefined);\n const labelRef = React.useCallback(\n (labelElement: HTMLElement | null) => {\n if (!labelElement || !!parentTooltip) {\n // Skip if label element is unknown\n // Skip if the parent has a tooltip\n return;\n }\n\n // Label overflowing\n if (labelElement.offsetWidth < labelElement.scrollWidth) {\n setTooltipLabel(labelElement.innerText);\n }\n },\n [parentTooltip],\n );\n\n return { labelRef, tooltipLabel };\n};\n","import React, { Children, Fragment } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Icon, ColorPalette, ColorVariant, Typography, WhiteSpace } from '@lumx/react';\nimport { GenericProps, TextElement, isComponent } from '@lumx/react/utils/type';\nimport {\n getFontColorClassName,\n getRootClassName,\n handleBasicClasses,\n getTypographyClassName,\n} from '@lumx/react/utils/className';\nimport { useOverflowTooltipLabel } from '@lumx/react/hooks/useOverflowTooltipLabel';\nimport { useMergeRefs } from '@lumx/react/utils/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface TextProps extends GenericProps {\n /**\n * Color variant.\n */\n color?: ColorPalette;\n /**\n * Lightened or darkened variant of the selected color.\n */\n colorVariant?: ColorVariant;\n /**\n * Typography variant.\n */\n typography?: Typography;\n /**\n * Custom component to render the text.\n */\n as: TextElement;\n /**\n * Control whether the text should truncate or not.\n * Setting as `true` will make the text truncate on a single line.\n * Setting as `{ lines: number }` will make the text truncate on a multiple lines.\n */\n truncate?: boolean | { lines: number };\n /**\n * Prevents text to wrap on multiple lines\n * (automatically activated when single line text truncate is activated).\n */\n noWrap?: boolean;\n /**\n * WhiteSpace variant\n * Ignored when `noWrap` is set to true\n * Ignored when `truncate` is set to true or lines: 1\n * */\n whiteSpace?: WhiteSpace;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Text';\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 = {} as const;\n\n/**\n * Text component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Text = forwardRef<TextProps>((props, ref) => {\n const {\n as: Component,\n children,\n className,\n color,\n colorVariant,\n noWrap,\n typography,\n truncate,\n whiteSpace,\n style,\n ...forwardedProps\n } = props;\n\n const colorClass = color && getFontColorClassName(color, colorVariant);\n const typographyClass = typography && getTypographyClassName(typography);\n\n // Truncate mode\n const truncateLinesStyle = typeof truncate === 'object' &&\n truncate.lines > 1 && { '--lumx-text-truncate-lines': truncate.lines };\n const isTruncatedMultiline = !!truncateLinesStyle;\n const isTruncated = !!truncate;\n\n /**\n * Add custom white-space style if specified\n * Disabled if noWrap is specified\n * Disabled if truncated on one-line\n * */\n const whiteSpaceStyle = !noWrap &&\n !(isTruncated && !isTruncatedMultiline) &&\n whiteSpace && { '--lumx-text-white-space': whiteSpace };\n\n const { tooltipLabel, labelRef } = useOverflowTooltipLabel();\n\n return (\n <Component\n ref={useMergeRefs(ref as React.Ref<any>, labelRef)}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n isTruncated: isTruncated && !isTruncatedMultiline,\n isTruncatedMultiline,\n }),\n typographyClass,\n colorClass,\n noWrap && `${CLASSNAME}--no-wrap`,\n )}\n title={tooltipLabel}\n style={{ ...truncateLinesStyle, ...whiteSpaceStyle, ...style }}\n {...forwardedProps}\n >\n {children &&\n Children.toArray(children).map((child, index) => {\n // Force wrap spaces around icons to make sure they are never stuck against text.\n if (isComponent(Icon)(child)) {\n return <Fragment key={child.key || index}> {child} </Fragment>;\n }\n return child;\n })}\n </Component>\n );\n});\nText.displayName = COMPONENT_NAME;\nText.className = CLASSNAME;\nText.defaultProps = DEFAULT_PROPS;\n"],"names":["useOverflowTooltipLabel","parentTooltip","useTooltipContext","tooltipLabel","setTooltipLabel","React","useState","undefined","labelRef","useCallback","labelElement","offsetWidth","scrollWidth","innerText","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","Text","forwardRef","props","ref","as","Component","children","className","color","colorVariant","noWrap","typography","truncate","whiteSpace","style","forwardedProps","_objectWithoutProperties","_excluded","colorClass","getFontColorClassName","typographyClass","getTypographyClassName","truncateLinesStyle","lines","isTruncatedMultiline","isTruncated","whiteSpaceStyle","createElement","_extends","useMergeRefs","classNames","handleBasicClasses","prefix","title","_objectSpread","Children","toArray","map","child","index","isComponent","Icon","Fragment","key","displayName","defaultProps"],"mappings":"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"}
@@ -1,418 +0,0 @@
1
- import { D as DOCUMENT, _ as _extends, k as _objectSpread2, m as WINDOW, h as getRootClassName, i as forwardRef, j as _objectWithoutProperties, g as classNames } from './1da25128.js';
2
- import React__default, { useState, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
3
- import { createPortal } from 'react-dom';
4
- import { u as useCallbackOnEscape } from './cae46566.js';
5
- import { u as useMergeRefs } from './f52adbae.js';
6
- import { g as getFirstAndLastFocusable, u as useFocusTrap } from './646f0db6.js';
7
- import { T as ThemeProvider } from './3181f000.js';
8
- import memoize from 'lodash/memoize';
9
- import { A as ARROW_SIZE, u as usePopper, d as detectOverflow, F as FitAnchorWidth, P as Placement, a as POPOVER_ZINDEX } from './2e2abe51.js';
10
- import { h as handleBasicClasses } from './f57e1239.js';
11
- import { ClickAwayProvider } from '../utils/index.js';
12
-
13
- /**
14
- * Hook focusing an element when defined and `focus` boolean `true`.
15
- *
16
- * @param element Element to focus.
17
- * @param shouldFocus Boolean flag to trigger the focus
18
- */
19
- function useFocus(element) {
20
- let shouldFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
21
- const [wasFocus, setWasFocus] = useState(false);
22
- useEffect(() => {
23
- if (shouldFocus && wasFocus !== shouldFocus && element) {
24
- element.focus();
25
- setWasFocus(shouldFocus);
26
- }
27
- },
28
- // eslint-disable-next-line react-hooks/exhaustive-deps
29
- [element, shouldFocus]);
30
- }
31
-
32
- /**
33
- * HOC component wrapping a component to skip render if predicate return falsy
34
- */
35
- const skipRender = (predicate, Component) => {
36
- const Wrapper = /*#__PURE__*/React__default.forwardRef((props, ref) => {
37
- if (!DOCUMENT) {
38
- // Can't render in SSR.
39
- return null;
40
- }
41
- return /*#__PURE__*/React__default.createElement(Component, _extends({
42
- ref: ref
43
- }, props));
44
- });
45
- Wrapper.displayName = Component.displayName;
46
- return Wrapper;
47
- };
48
-
49
- /**
50
- * Helper component using useLayoutEffect to trigger a callback on before unmount.
51
- *
52
- * The callback must be wrapped in a React ref to avoid updating the `useLayoutEffect` before the un-mount
53
- */
54
- const OnBeforeUnmount = _ref => {
55
- let {
56
- callbackRef
57
- } = _ref;
58
- useLayoutEffect(() => {
59
- return () => {
60
- var _callbackRef$current;
61
- // On unmount
62
- // eslint-disable-next-line react-hooks/exhaustive-deps
63
- (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef);
64
- };
65
- },
66
- // eslint-disable-next-line react-hooks/exhaustive-deps
67
- []);
68
- return null;
69
- };
70
-
71
- /**
72
- * Provides an unmount sentinel to inject in the popover to detect when it closes and restore the focus to the
73
- * anchor if needed.
74
- */
75
- function useRestoreFocusOnClose(_ref, popoverElement) {
76
- let {
77
- focusAnchorOnClose,
78
- anchorRef,
79
- parentElement
80
- } = _ref;
81
- const onBeforeUnmountRef = React__default.useRef();
82
- React__default.useEffect(() => {
83
- if (!popoverElement || !focusAnchorOnClose) {
84
- onBeforeUnmountRef.current = undefined;
85
- return;
86
- }
87
- onBeforeUnmountRef.current = () => {
88
- const isFocusWithin = popoverElement === null || popoverElement === void 0 ? void 0 : popoverElement.contains(document.activeElement);
89
- if (!isFocusWithin) return;
90
-
91
- // On next render
92
- setTimeout(() => {
93
- const anchor = anchorRef.current;
94
- const elementToFocus =
95
- // Provided parent element
96
- (parentElement === null || parentElement === void 0 ? void 0 : parentElement.current) || (
97
- // Or first focusable element in anchor
98
- anchor ? getFirstAndLastFocusable(anchor).first : undefined) ||
99
- // Fallback to anchor
100
- anchor;
101
- elementToFocus === null || elementToFocus === void 0 ? void 0 : elementToFocus.focus({
102
- preventScroll: true
103
- });
104
- }, 0);
105
- };
106
- }, [anchorRef, focusAnchorOnClose, parentElement, popoverElement]);
107
- return /*#__PURE__*/React__default.createElement(OnBeforeUnmount, {
108
- callbackRef: onBeforeUnmountRef
109
- });
110
- }
111
-
112
- /**
113
- * Popper js modifier to fit popover min width to the anchor width.
114
- */
115
- const sameWidth = memoize(anchorWidthOption => ({
116
- name: 'sameWidth',
117
- enabled: true,
118
- phase: 'beforeWrite',
119
- requires: ['computeStyles'],
120
- fn(_ref) {
121
- let {
122
- state
123
- } = _ref;
124
- // eslint-disable-next-line no-param-reassign
125
- state.styles.popper[anchorWidthOption] = `${state.rects.reference.width}px`;
126
- },
127
- effect(_ref2) {
128
- let {
129
- state
130
- } = _ref2;
131
- // eslint-disable-next-line no-param-reassign
132
- state.elements.popper.style[anchorWidthOption] = `${state.elements.reference.offsetWidth}px`;
133
- }
134
- }));
135
-
136
- /**
137
- * Popper js modifier to compute max size of the popover.
138
- */
139
- const maxSize = {
140
- name: 'maxSize',
141
- enabled: true,
142
- phase: 'main',
143
- requiresIfExists: ['offset', 'preventOverflow', 'flip'],
144
- fn(_ref3) {
145
- let {
146
- state,
147
- name,
148
- options
149
- } = _ref3;
150
- const overflow = detectOverflow(state, options);
151
- const {
152
- y = 0,
153
- x = 0
154
- } = state.modifiersData.preventOverflow;
155
- const {
156
- width,
157
- height
158
- } = state.rects.popper;
159
- const [basePlacement] = state.placement.split('-');
160
- const widthProp = basePlacement === 'left' ? 'left' : 'right';
161
- const heightProp = basePlacement === 'top' ? 'top' : 'bottom';
162
- // eslint-disable-next-line no-param-reassign
163
- state.modifiersData[name] = {
164
- width: width - overflow[widthProp] - x,
165
- height: height - overflow[heightProp] - y
166
- };
167
- }
168
- };
169
-
170
- /**
171
- * Popper js modifier to apply the max height.
172
- */
173
- const applyMaxHeight = {
174
- name: 'applyMaxHeight',
175
- enabled: true,
176
- phase: 'beforeWrite',
177
- requires: ['maxSize'],
178
- fn(_ref4) {
179
- let {
180
- state
181
- } = _ref4;
182
- const {
183
- height
184
- } = state.modifiersData.maxSize;
185
- // eslint-disable-next-line no-param-reassign
186
- state.elements.popper.style.maxHeight = `${height - ARROW_SIZE}px`;
187
- }
188
- };
189
- function usePopoverStyle(_ref5) {
190
- var _offset$along, _offset$away, _state$placement, _state$rects$popper$y, _state$rects, _state$rects$popper;
191
- let {
192
- offset,
193
- hasArrow,
194
- fitToAnchorWidth,
195
- fitWithinViewportHeight,
196
- boundaryRef,
197
- anchorRef,
198
- children,
199
- placement,
200
- style,
201
- zIndex
202
- } = _ref5;
203
- const [popperElement, setPopperElement] = useState(null);
204
- const [arrowElement, setArrowElement] = useState(null);
205
- const actualOffset = [(_offset$along = offset === null || offset === void 0 ? void 0 : offset.along) !== null && _offset$along !== void 0 ? _offset$along : 0, ((_offset$away = offset === null || offset === void 0 ? void 0 : offset.away) !== null && _offset$away !== void 0 ? _offset$away : 0) + (hasArrow ? ARROW_SIZE : 0)];
206
- const modifiers = [{
207
- name: 'offset',
208
- options: {
209
- offset: actualOffset
210
- }
211
- }];
212
- if (hasArrow && arrowElement) {
213
- modifiers.push({
214
- name: 'arrow',
215
- options: {
216
- element: arrowElement,
217
- padding: ARROW_SIZE / 2
218
- }
219
- });
220
- }
221
- if (fitToAnchorWidth) {
222
- const fitWidth = typeof fitToAnchorWidth === 'string' ? fitToAnchorWidth : FitAnchorWidth.MIN_WIDTH;
223
- modifiers.push(sameWidth(fitWidth));
224
- }
225
- if (fitWithinViewportHeight) {
226
- modifiers.push(_objectSpread2(_objectSpread2({}, maxSize), {}, {
227
- options: {
228
- boundary: boundaryRef === null || boundaryRef === void 0 ? void 0 : boundaryRef.current
229
- }
230
- }), applyMaxHeight);
231
- }
232
- if (boundaryRef) {
233
- modifiers.push({
234
- name: 'flip',
235
- options: {
236
- boundary: boundaryRef.current
237
- }
238
- }, {
239
- name: 'preventOverflow',
240
- options: {
241
- boundary: boundaryRef.current
242
- }
243
- });
244
- }
245
- const {
246
- styles,
247
- attributes,
248
- state,
249
- update
250
- } = usePopper(anchorRef.current, popperElement, {
251
- placement,
252
- modifiers
253
- });
254
- useEffect(() => {
255
- update === null || update === void 0 ? void 0 : update();
256
- }, [children, update]);
257
- const position = (_state$placement = state === null || state === void 0 ? void 0 : state.placement) !== null && _state$placement !== void 0 ? _state$placement : placement;
258
- const popoverStyle = useMemo(() => {
259
- const newStyles = _objectSpread2(_objectSpread2(_objectSpread2({}, style), styles.popper), {}, {
260
- zIndex
261
- });
262
- if (fitWithinViewportHeight && !newStyles.maxHeight) {
263
- newStyles.maxHeight = (WINDOW === null || WINDOW === void 0 ? void 0 : WINDOW.innerHeight) || (DOCUMENT === null || DOCUMENT === void 0 ? void 0 : DOCUMENT.documentElement.clientHeight);
264
- }
265
- return newStyles;
266
- }, [style, styles.popper, zIndex, fitWithinViewportHeight]);
267
- return {
268
- styles: {
269
- arrow: styles.arrow,
270
- popover: popoverStyle
271
- },
272
- attributes,
273
- isPositioned: ((_state$rects$popper$y = state === null || state === void 0 ? void 0 : (_state$rects = state.rects) === null || _state$rects === void 0 ? void 0 : (_state$rects$popper = _state$rects.popper) === null || _state$rects$popper === void 0 ? void 0 : _state$rects$popper.y) !== null && _state$rects$popper$y !== void 0 ? _state$rects$popper$y : -1) >= 0,
274
- position,
275
- setArrowElement,
276
- setPopperElement,
277
- popperElement
278
- };
279
- }
280
-
281
- const _excluded = ["anchorRef", "as", "children", "className", "closeOnClickAway", "closeOnEscape", "elevation", "focusElement", "hasArrow", "isOpen", "onClose", "parentElement", "usePortal", "focusAnchorOnClose", "withFocusTrap", "boundaryRef", "fitToAnchorWidth", "fitWithinViewportHeight", "focusTrapZoneElement", "offset", "placement", "style", "theme", "zIndex"];
282
-
283
- /**
284
- * Defines the props of the component.
285
- */
286
-
287
- /**
288
- * Component display name.
289
- */
290
- const COMPONENT_NAME = 'Popover';
291
-
292
- /**
293
- * Component default class name and class prefix.
294
- */
295
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
296
-
297
- /**
298
- * Component default props.
299
- */
300
- const DEFAULT_PROPS = {
301
- elevation: 3,
302
- placement: Placement.AUTO,
303
- focusAnchorOnClose: true,
304
- usePortal: true,
305
- zIndex: POPOVER_ZINDEX
306
- };
307
-
308
- /** Method to render the popover inside a portal if usePortal is true */
309
- const renderPopover = (children, usePortal) => {
310
- return usePortal ? /*#__PURE__*/createPortal(children, document.body) : children;
311
- };
312
-
313
- // Inner component (must be wrapped before export)
314
- const _InnerPopover = forwardRef((props, ref) => {
315
- const {
316
- anchorRef,
317
- as: Component = 'div',
318
- children,
319
- className,
320
- closeOnClickAway,
321
- closeOnEscape,
322
- elevation,
323
- focusElement,
324
- hasArrow,
325
- isOpen,
326
- onClose,
327
- parentElement,
328
- usePortal,
329
- focusAnchorOnClose,
330
- withFocusTrap,
331
- boundaryRef,
332
- fitToAnchorWidth,
333
- fitWithinViewportHeight,
334
- focusTrapZoneElement,
335
- offset,
336
- placement,
337
- style,
338
- theme,
339
- zIndex
340
- } = props,
341
- forwardedProps = _objectWithoutProperties(props, _excluded);
342
- const popoverRef = useRef(null);
343
- const {
344
- styles,
345
- attributes,
346
- isPositioned,
347
- position,
348
- setArrowElement,
349
- setPopperElement,
350
- popperElement
351
- } = usePopoverStyle({
352
- offset,
353
- hasArrow,
354
- fitToAnchorWidth,
355
- fitWithinViewportHeight,
356
- boundaryRef,
357
- anchorRef,
358
- children,
359
- placement,
360
- style,
361
- zIndex
362
- });
363
- const unmountSentinel = useRestoreFocusOnClose({
364
- focusAnchorOnClose,
365
- anchorRef,
366
- parentElement
367
- }, popperElement);
368
- const focusZoneElement = (focusTrapZoneElement === null || focusTrapZoneElement === void 0 ? void 0 : focusTrapZoneElement.current) || (popoverRef === null || popoverRef === void 0 ? void 0 : popoverRef.current);
369
- useCallbackOnEscape(onClose, isOpen && closeOnEscape);
370
-
371
- /** Only set focus within if the focus trap is disabled as they interfere with one another. */
372
- useFocus(focusElement === null || focusElement === void 0 ? void 0 : focusElement.current, !withFocusTrap && isOpen && isPositioned);
373
- useFocusTrap(withFocusTrap && isOpen && focusZoneElement, focusElement === null || focusElement === void 0 ? void 0 : focusElement.current);
374
- const clickAwayRefs = useRef([popoverRef, anchorRef]);
375
- const mergedRefs = useMergeRefs(setPopperElement, ref, popoverRef);
376
- return isOpen ? renderPopover( /*#__PURE__*/React__default.createElement(Component, _extends({}, forwardedProps, {
377
- ref: mergedRefs,
378
- className: classNames(className, handleBasicClasses({
379
- prefix: CLASSNAME,
380
- theme,
381
- elevation: Math.min(elevation || 0, 5),
382
- position
383
- })),
384
- style: styles.popover
385
- }, attributes.popper), unmountSentinel, /*#__PURE__*/React__default.createElement(ClickAwayProvider, {
386
- callback: closeOnClickAway && onClose,
387
- childrenRefs: clickAwayRefs
388
- }, hasArrow && /*#__PURE__*/React__default.createElement("div", {
389
- ref: setArrowElement,
390
- className: `${CLASSNAME}__arrow`,
391
- style: styles.arrow
392
- }, /*#__PURE__*/React__default.createElement("svg", {
393
- viewBox: "0 0 14 14",
394
- "aria-hidden": true
395
- }, /*#__PURE__*/React__default.createElement("path", {
396
- d: "M8 3.49C7.62 2.82 6.66 2.82 6.27 3.48L.04 14 14.04 14 8 3.49Z"
397
- }))), /*#__PURE__*/React__default.createElement(ThemeProvider, {
398
- value: undefined
399
- }, children))), usePortal) : null;
400
- });
401
- _InnerPopover.displayName = COMPONENT_NAME;
402
-
403
- /**
404
- * Popover component.
405
- *
406
- * @param props Component props.
407
- * @param ref Component ref.
408
- * @return React element.
409
- */
410
- const Popover = skipRender(
411
- // Skip render in SSR
412
- () => Boolean(DOCUMENT), _InnerPopover);
413
- Popover.displayName = COMPONENT_NAME;
414
- Popover.className = CLASSNAME;
415
- Popover.defaultProps = DEFAULT_PROPS;
416
-
417
- export { Popover as P, useFocus as u };
418
- //# sourceMappingURL=54d9ded5.js.map