@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,154 +0,0 @@
1
- import { h as getRootClassName, i as forwardRef, j as _objectWithoutProperties, k as _objectSpread2, _ as _extends, g as classNames } from '../../1da25128.js';
2
- import React__default, { useEffect, useRef, useMemo, cloneElement } from 'react';
3
- import { L as List } from '../../bc28d510.js';
4
- import { P as Popover } from '../../54d9ded5.js';
5
- import { i as isComponent } from '../../f39a1ba4.js';
6
- import { P as Placement } from '../../2e2abe51.js';
7
- import { h as handleBasicClasses } from '../../f57e1239.js';
8
-
9
- // The error margin in px we want to have for triggering infinite scroll
10
- const SCROLL_TRIGGER_MARGIN = 5;
11
-
12
- /**
13
- * Listen to clicks away from a given element and callback the passed in function.
14
- *
15
- * @param ref A reference to the element on which you want to listen scroll event.
16
- * @param [callback] A callback function to call when the bottom of the reference element is reached.
17
- * @param [callbackOnMount] A callback function to call when the component is mounted.
18
- */
19
- const useInfiniteScroll = function (ref, callback) {
20
- let callbackOnMount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
21
- let scrollTriggerMargin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : SCROLL_TRIGGER_MARGIN;
22
- useEffect(() => {
23
- const {
24
- current
25
- } = ref;
26
- if (!callback || !current) {
27
- return undefined;
28
- }
29
- const isAtBottom = () => Boolean(current && current.scrollHeight - (current.scrollTop + current.clientHeight) <= scrollTriggerMargin);
30
- const onScroll = e => {
31
- if (isAtBottom()) {
32
- callback(e);
33
- }
34
- };
35
- if (isAtBottom()) {
36
- onScroll();
37
- }
38
- current.addEventListener('scroll', onScroll);
39
- current.addEventListener('resize', onScroll);
40
- return () => {
41
- current.removeEventListener('scroll', onScroll);
42
- current.removeEventListener('resize', onScroll);
43
- };
44
- }, [ref, callback, scrollTriggerMargin]);
45
- useEffect(() => {
46
- if (callback && callbackOnMount) {
47
- callback();
48
- }
49
- }, [callback, callbackOnMount]);
50
- };
51
-
52
- const _excluded = ["anchorRef", "children", "className", "closeOnClick", "closeOnClickAway", "closeOnEscape", "fitToAnchorWidth", "fitWithinViewportHeight", "isOpen", "offset", "focusAnchorOnClose", "onClose", "onInfiniteScroll", "placement", "shouldFocusOnOpen", "zIndex"];
53
-
54
- /**
55
- * Defines the props of the component.
56
- */
57
-
58
- /**
59
- * Component display name.
60
- */
61
- const COMPONENT_NAME = 'Dropdown';
62
-
63
- /**
64
- * Component default class name and class prefix.
65
- */
66
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
67
-
68
- /**
69
- * Component default props.
70
- */
71
- const DEFAULT_PROPS = {
72
- closeOnClick: true,
73
- closeOnClickAway: true,
74
- closeOnEscape: true,
75
- fitToAnchorWidth: true,
76
- fitWithinViewportHeight: true,
77
- placement: Placement.BOTTOM_START,
78
- shouldFocusOnOpen: true,
79
- focusAnchorOnClose: true
80
- };
81
-
82
- /**
83
- * Dropdown component.
84
- *
85
- * @param props Component props.
86
- * @param ref Component ref.
87
- * @return React element.
88
- */
89
- const Dropdown = forwardRef((props, ref) => {
90
- const {
91
- anchorRef,
92
- children,
93
- className,
94
- closeOnClick,
95
- closeOnClickAway,
96
- closeOnEscape,
97
- fitToAnchorWidth,
98
- fitWithinViewportHeight,
99
- isOpen,
100
- offset,
101
- focusAnchorOnClose,
102
- onClose,
103
- onInfiniteScroll,
104
- placement,
105
- shouldFocusOnOpen,
106
- zIndex
107
- } = props,
108
- forwardedProps = _objectWithoutProperties(props, _excluded);
109
- const innerRef = useRef(null);
110
- const listElement = useRef(null);
111
- useInfiniteScroll(innerRef, onInfiniteScroll);
112
- const popperElement = useMemo(() => {
113
- return !Array.isArray(children) && isComponent(List)(children) ? /*#__PURE__*/cloneElement(children, _objectSpread2(_objectSpread2({}, children.props), {}, {
114
- ref: listElement,
115
- onClick(evt) {
116
- var _children$props$onCli, _children$props;
117
- (_children$props$onCli = (_children$props = children.props).onClick) === null || _children$props$onCli === void 0 ? void 0 : _children$props$onCli.call(_children$props, evt);
118
- if (closeOnClick) {
119
- onClose === null || onClose === void 0 ? void 0 : onClose();
120
- }
121
- },
122
- isClickable: true
123
- })) : children;
124
- }, [children, closeOnClick, onClose]);
125
- return isOpen ? /*#__PURE__*/React__default.createElement(Popover, _extends({
126
- ref: ref
127
- }, forwardedProps, {
128
- focusAnchorOnClose: focusAnchorOnClose,
129
- anchorRef: anchorRef,
130
- className: classNames(className, handleBasicClasses({
131
- prefix: CLASSNAME
132
- })),
133
- elevation: 0,
134
- closeOnClickAway: closeOnClickAway,
135
- closeOnEscape: closeOnEscape,
136
- fitToAnchorWidth: fitToAnchorWidth,
137
- fitWithinViewportHeight: fitWithinViewportHeight,
138
- focusElement: shouldFocusOnOpen ? listElement : undefined,
139
- isOpen: isOpen,
140
- offset: offset,
141
- onClose: onClose,
142
- placement: placement,
143
- zIndex: zIndex
144
- }), /*#__PURE__*/React__default.createElement("div", {
145
- className: `${CLASSNAME}__menu`,
146
- ref: innerRef
147
- }, popperElement)) : null;
148
- });
149
- Dropdown.displayName = COMPONENT_NAME;
150
- Dropdown.className = CLASSNAME;
151
- Dropdown.defaultProps = DEFAULT_PROPS;
152
-
153
- export { Dropdown };
154
- //# sourceMappingURL=index.ts-2a17db51.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.ts-2a17db51.js","sources":["../../../../src/hooks/useInfiniteScroll.tsx","../../../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\ntype useInfiniteScrollType = (\n ref: React.RefObject<HTMLElement>,\n callback?: EventCallback,\n callbackOnMount?: boolean,\n) => void;\ntype EventCallback = (evt?: Event) => void;\n\n// The error margin in px we want to have for triggering infinite scroll\nconst SCROLL_TRIGGER_MARGIN = 5;\n\n/**\n * Listen to clicks away from a given element and callback the passed in function.\n *\n * @param ref A reference to the element on which you want to listen scroll event.\n * @param [callback] A callback function to call when the bottom of the reference element is reached.\n * @param [callbackOnMount] A callback function to call when the component is mounted.\n */\nexport const useInfiniteScroll: useInfiniteScrollType = (\n ref,\n callback,\n callbackOnMount = false,\n scrollTriggerMargin = SCROLL_TRIGGER_MARGIN,\n) => {\n useEffect(() => {\n const { current } = ref;\n if (!callback || !current) {\n return undefined;\n }\n\n const isAtBottom = () =>\n Boolean(\n current && current.scrollHeight - (current.scrollTop + current.clientHeight) <= scrollTriggerMargin,\n );\n\n const onScroll = (e?: Event): void => {\n if (isAtBottom()) {\n callback(e);\n }\n };\n\n if (isAtBottom()) {\n onScroll();\n }\n\n current.addEventListener('scroll', onScroll);\n current.addEventListener('resize', onScroll);\n return () => {\n current.removeEventListener('scroll', onScroll);\n current.removeEventListener('resize', onScroll);\n };\n }, [ref, callback, scrollTriggerMargin]);\n\n useEffect(() => {\n if (callback && callbackOnMount) {\n callback();\n }\n }, [callback, callbackOnMount]);\n};\n","import React, { cloneElement, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { List, ListProps } from '@lumx/react/components/list/List';\nimport { Popover, PopoverProps } from '@lumx/react/components/popover/Popover';\nimport { useInfiniteScroll } from '@lumx/react/hooks/useInfiniteScroll';\nimport { GenericProps, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { Offset, Placement } from '@lumx/react/components/popover/constants';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface DropdownProps extends GenericProps {\n /**\n * Reference to the element around which the dropdown is placed.\n * @see {@link PopoverProps#anchorRef}\n */\n anchorRef: PopoverProps['anchorRef'];\n /** Dropdown content. */\n children: React.ReactNode;\n /**\n * Whether a click anywhere out of the Dropdown would close it or not.\n * @see {@link PopoverProps#closeOnClickAway}\n */\n closeOnClickAway?: boolean;\n /**\n * Whether to close the Dropdown when clicking in it or not.\n */\n closeOnClick?: boolean;\n /**\n * Whether an escape key press would close the Dropdown or not.\n * @see {@link PopoverProps#closeOnEscape}\n */\n closeOnEscape?: boolean;\n /**\n * Manage dropdown width:\n * - `maxWidth`: dropdown not bigger than anchor\n * - `minWidth` or `true`: dropdown not smaller than anchor\n * - `width`: dropdown equal to the anchor.\n * @see {@link PopoverProps#fitToAnchorWidth}\n */\n fitToAnchorWidth?: PopoverProps['fitToAnchorWidth'];\n /**\n * Whether the dropdown should shrink to fit within the viewport height or not.\n * @see {@link PopoverProps#fitWithinViewportHeight}\n */\n fitWithinViewportHeight?: boolean;\n /**\n * Whether the dropdown should be displayed or not. Useful to control the Dropdown from outside the component.\n * @see {@link PopoverProps#isOpen}\n */\n isOpen: boolean;\n /**\n * Offset applied to the Dropdown position.\n * @see {@link PopoverProps#offset}\n */\n offset?: Offset;\n /**\n * Preferred Dropdown placement against the anchor element.\n * @see {@link PopoverProps#placement}\n */\n placement?: Placement;\n /** Whether the focus should be set on the list when the dropdown is open or not. */\n shouldFocusOnOpen?: boolean;\n /** Whether the dropdown should be rendered into a DOM node that exists outside the DOM hierarchy of the parent component. */\n usePortal?: boolean;\n /** Whether the focus should go back on the anchor when dropdown closes and focus is within. */\n focusAnchorOnClose?: boolean;\n /**\n * Z-axis position.\n * @see {@link PopoverProps#zIndex}\n */\n zIndex?: number;\n /**\n * On close callback.\n * @see {@link PopoverProps#onClose}\n */\n onClose?(): void;\n /** On scroll end callback. */\n onInfiniteScroll?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Dropdown';\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<DropdownProps> = {\n closeOnClick: true,\n closeOnClickAway: true,\n closeOnEscape: true,\n fitToAnchorWidth: true,\n fitWithinViewportHeight: true,\n placement: Placement.BOTTOM_START,\n shouldFocusOnOpen: true,\n focusAnchorOnClose: true,\n};\n\n/**\n * Dropdown component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Dropdown = forwardRef<DropdownProps, HTMLDivElement>((props, ref) => {\n const {\n anchorRef,\n children,\n className,\n closeOnClick,\n closeOnClickAway,\n closeOnEscape,\n fitToAnchorWidth,\n fitWithinViewportHeight,\n isOpen,\n offset,\n focusAnchorOnClose,\n onClose,\n onInfiniteScroll,\n placement,\n shouldFocusOnOpen,\n zIndex,\n ...forwardedProps\n } = props;\n const innerRef = useRef<HTMLDivElement>(null);\n const listElement = useRef(null);\n\n useInfiniteScroll(innerRef, onInfiniteScroll);\n\n const popperElement = useMemo(() => {\n return !Array.isArray(children) && isComponent(List)(children)\n ? cloneElement<ListProps>(children, {\n ...children.props,\n ref: listElement,\n onClick(evt: MouseEvent) {\n children.props.onClick?.(evt);\n\n if (closeOnClick) {\n onClose?.();\n }\n },\n isClickable: true,\n })\n : children;\n }, [children, closeOnClick, onClose]);\n\n return isOpen ? (\n <Popover\n ref={ref}\n {...forwardedProps}\n focusAnchorOnClose={focusAnchorOnClose}\n anchorRef={anchorRef}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME }))}\n elevation={0 as any}\n closeOnClickAway={closeOnClickAway}\n closeOnEscape={closeOnEscape}\n fitToAnchorWidth={fitToAnchorWidth}\n fitWithinViewportHeight={fitWithinViewportHeight}\n focusElement={shouldFocusOnOpen ? listElement : undefined}\n isOpen={isOpen}\n offset={offset}\n onClose={onClose}\n placement={placement}\n zIndex={zIndex}\n >\n <div className={`${CLASSNAME}__menu`} ref={innerRef}>\n {popperElement}\n </div>\n </Popover>\n ) : null;\n});\nDropdown.displayName = COMPONENT_NAME;\nDropdown.className = CLASSNAME;\nDropdown.defaultProps = DEFAULT_PROPS;\n"],"names":["SCROLL_TRIGGER_MARGIN","useInfiniteScroll","ref","callback","callbackOnMount","arguments","length","undefined","scrollTriggerMargin","useEffect","current","isAtBottom","Boolean","scrollHeight","scrollTop","clientHeight","onScroll","e","addEventListener","removeEventListener","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","closeOnClick","closeOnClickAway","closeOnEscape","fitToAnchorWidth","fitWithinViewportHeight","placement","Placement","BOTTOM_START","shouldFocusOnOpen","focusAnchorOnClose","Dropdown","forwardRef","props","anchorRef","children","className","isOpen","offset","onClose","onInfiniteScroll","zIndex","forwardedProps","_objectWithoutProperties","_excluded","innerRef","useRef","listElement","popperElement","useMemo","Array","isArray","isComponent","List","cloneElement","_objectSpread","onClick","evt","_children$props$onCli","_children$props","call","isClickable","React","createElement","Popover","_extends","classNames","handleBasicClasses","prefix","elevation","focusElement","displayName","defaultProps"],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- import { G as GenericProps, C as Comp } from '../../8d67e1e3.js';
2
- import React from 'react';
3
- import { PopoverProps } from '../popover/index.ts-e3b4ff19.js';
4
- import { O as Offset, P as Placement } from '../../f5ff1aa4.js';
5
-
6
- /**
7
- * Defines the props of the component.
8
- */
9
- interface DropdownProps extends GenericProps {
10
- /**
11
- * Reference to the element around which the dropdown is placed.
12
- * @see {@link PopoverProps#anchorRef}
13
- */
14
- anchorRef: PopoverProps['anchorRef'];
15
- /** Dropdown content. */
16
- children: React.ReactNode;
17
- /**
18
- * Whether a click anywhere out of the Dropdown would close it or not.
19
- * @see {@link PopoverProps#closeOnClickAway}
20
- */
21
- closeOnClickAway?: boolean;
22
- /**
23
- * Whether to close the Dropdown when clicking in it or not.
24
- */
25
- closeOnClick?: boolean;
26
- /**
27
- * Whether an escape key press would close the Dropdown or not.
28
- * @see {@link PopoverProps#closeOnEscape}
29
- */
30
- closeOnEscape?: boolean;
31
- /**
32
- * Manage dropdown width:
33
- * - `maxWidth`: dropdown not bigger than anchor
34
- * - `minWidth` or `true`: dropdown not smaller than anchor
35
- * - `width`: dropdown equal to the anchor.
36
- * @see {@link PopoverProps#fitToAnchorWidth}
37
- */
38
- fitToAnchorWidth?: PopoverProps['fitToAnchorWidth'];
39
- /**
40
- * Whether the dropdown should shrink to fit within the viewport height or not.
41
- * @see {@link PopoverProps#fitWithinViewportHeight}
42
- */
43
- fitWithinViewportHeight?: boolean;
44
- /**
45
- * Whether the dropdown should be displayed or not. Useful to control the Dropdown from outside the component.
46
- * @see {@link PopoverProps#isOpen}
47
- */
48
- isOpen: boolean;
49
- /**
50
- * Offset applied to the Dropdown position.
51
- * @see {@link PopoverProps#offset}
52
- */
53
- offset?: Offset;
54
- /**
55
- * Preferred Dropdown placement against the anchor element.
56
- * @see {@link PopoverProps#placement}
57
- */
58
- placement?: Placement;
59
- /** Whether the focus should be set on the list when the dropdown is open or not. */
60
- shouldFocusOnOpen?: boolean;
61
- /** Whether the dropdown should be rendered into a DOM node that exists outside the DOM hierarchy of the parent component. */
62
- usePortal?: boolean;
63
- /** Whether the focus should go back on the anchor when dropdown closes and focus is within. */
64
- focusAnchorOnClose?: boolean;
65
- /**
66
- * Z-axis position.
67
- * @see {@link PopoverProps#zIndex}
68
- */
69
- zIndex?: number;
70
- /**
71
- * On close callback.
72
- * @see {@link PopoverProps#onClose}
73
- */
74
- onClose?(): void;
75
- /** On scroll end callback. */
76
- onInfiniteScroll?(): void;
77
- }
78
- /**
79
- * Dropdown component.
80
- *
81
- * @param props Component props.
82
- * @param ref Component ref.
83
- * @return React element.
84
- */
85
- declare const Dropdown: Comp<DropdownProps, HTMLDivElement>;
86
-
87
- export { Dropdown, type DropdownProps };
@@ -1,38 +0,0 @@
1
- import { G as GenericProps, H as HasTheme, C as Comp } from '../../8d67e1e3.js';
2
- import React from 'react';
3
- import { I as IconButtonProps } from '../../dc3e28c8.js';
4
- import '../../7f022f8c.js';
5
- import '../tooltip/index.ts-c6931e9e.js';
6
- import '../../f5ff1aa4.js';
7
-
8
- /**
9
- * Defines the props of the component.
10
- */
11
- interface ExpansionPanelProps extends GenericProps, HasTheme {
12
- /** Whether the expansion panel has a background. */
13
- hasBackground?: boolean;
14
- /** Whether the header has a divider. */
15
- hasHeaderDivider?: boolean;
16
- /** Whether the component is open or not. */
17
- isOpen?: boolean;
18
- /** Label text (overwritten if a `<header>` is provided in the children). */
19
- label?: string;
20
- /** On open callback. */
21
- onOpen?: (event: React.MouseEvent) => void;
22
- /** On close callback. */
23
- onClose?: (event: React.MouseEvent) => void;
24
- /** Props to pass to the toggle button (minus those already set by the ExpansionPanel props). */
25
- toggleButtonProps: Pick<IconButtonProps, 'label'> & Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;
26
- /** On toggle open or close callback. */
27
- onToggleOpen?(shouldOpen: boolean, event: React.MouseEvent): void;
28
- }
29
- /**
30
- * ExpansionPanel component.
31
- *
32
- * @param props Component props.
33
- * @param ref Component ref.
34
- * @return React element.
35
- */
36
- declare const ExpansionPanel: Comp<ExpansionPanelProps, HTMLDivElement>;
37
-
38
- export { ExpansionPanel, type ExpansionPanelProps };
@@ -1,143 +0,0 @@
1
- import { h as getRootClassName, i as forwardRef, T as Theme, j as _objectWithoutProperties, C as ColorPalette, g as classNames, _ as _extends, E as Emphasis, o as EXPANSION_PANEL_TRANSITION_DURATION } from '../../1da25128.js';
2
- import React__default, { Children, useRef, useState, useEffect } from 'react';
3
- import get from 'lodash/get';
4
- import isEmpty from 'lodash/isEmpty';
5
- import isFunction from 'lodash/isFunction';
6
- import { i as isComponent } from '../../f39a1ba4.js';
7
- import { p as partitionMulti } from '../../4daccdd5.js';
8
- import { u as useTransitionVisibility } from '../../fb975afe.js';
9
- import { u as useTheme } from '../../3181f000.js';
10
- import { h as handleBasicClasses } from '../../f57e1239.js';
11
- import { n as mdiChevronUp, o as mdiChevronDown } from '../../c6c99f76.js';
12
- import { DragHandle } from '../drag-handle/index.ts-0aebf92f.js';
13
- import { I as IconButton } from '../../23bdba2d.js';
14
-
15
- const _excluded = ["className", "children", "hasBackground", "hasHeaderDivider", "isOpen", "label", "onClose", "onOpen", "onToggleOpen", "theme", "toggleButtonProps"];
16
-
17
- /**
18
- * Defines the props of the component.
19
- */
20
-
21
- /**
22
- * Component display name.
23
- */
24
- const COMPONENT_NAME = 'ExpansionPanel';
25
-
26
- /**
27
- * Component default class name and class prefix.
28
- */
29
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
30
-
31
- /**
32
- * Component default props.
33
- */
34
- const DEFAULT_PROPS = {};
35
- const isDragHandle = isComponent(DragHandle);
36
- const isHeader = isComponent('header');
37
- const isFooter = isComponent('footer');
38
-
39
- /**
40
- * ExpansionPanel component.
41
- *
42
- * @param props Component props.
43
- * @param ref Component ref.
44
- * @return React element.
45
- */
46
- const ExpansionPanel = forwardRef((props, ref) => {
47
- const defaultTheme = useTheme() || Theme.light;
48
- const {
49
- className,
50
- children: anyChildren,
51
- hasBackground,
52
- hasHeaderDivider,
53
- isOpen,
54
- label,
55
- onClose,
56
- onOpen,
57
- onToggleOpen,
58
- theme = defaultTheme,
59
- toggleButtonProps
60
- } = props,
61
- forwardedProps = _objectWithoutProperties(props, _excluded);
62
- const children = Children.toArray(anyChildren);
63
-
64
- // Partition children by types.
65
- const [[dragHandle], [header], [footer], content] = partitionMulti(children, [isDragHandle, isHeader, isFooter]);
66
-
67
- // Either take the header in children or create one with the label.
68
- const headerProps = /*#__PURE__*/React__default.isValidElement(header) ? header.props : {};
69
- const headerContent = !isEmpty(headerProps.children) ? headerProps.children : /*#__PURE__*/React__default.createElement("span", {
70
- className: `${CLASSNAME}__label`
71
- }, label);
72
- const toggleOpen = event => {
73
- const shouldOpen = !isOpen;
74
- if (isFunction(onOpen) && shouldOpen) {
75
- onOpen(event);
76
- }
77
- if (isFunction(onClose) && !shouldOpen) {
78
- onClose(event);
79
- }
80
- if (isFunction(onToggleOpen)) {
81
- onToggleOpen(shouldOpen, event);
82
- }
83
- };
84
- const color = theme === Theme.dark ? ColorPalette.light : ColorPalette.dark;
85
- const rootClassName = classNames(className, handleBasicClasses({
86
- hasBackground,
87
- hasHeader: Boolean(!isEmpty(headerProps.children)),
88
- hasHeaderDivider,
89
- isClose: !isOpen,
90
- isDraggable: Boolean(dragHandle),
91
- isOpen,
92
- prefix: CLASSNAME,
93
- theme
94
- }));
95
- const wrapperRef = useRef(null);
96
-
97
- /** Hide the children at the end of the transition */
98
- const isChildrenVisible = useTransitionVisibility(wrapperRef, !!isOpen, EXPANSION_PANEL_TRANSITION_DURATION);
99
-
100
- // Switch max height on/off to activate the CSS transition (updates when children changes).
101
- const [maxHeight, setMaxHeight] = useState('0');
102
- useEffect(() => {
103
- const height = isOpen ? get(wrapperRef.current, 'offsetHeight', 0) : 0;
104
- setMaxHeight(`${height}px`);
105
- }, [children, isOpen]);
106
- return /*#__PURE__*/React__default.createElement("section", _extends({
107
- ref: ref
108
- }, forwardedProps, {
109
- className: rootClassName
110
- }), /*#__PURE__*/React__default.createElement("header", {
111
- className: `${CLASSNAME}__header`,
112
- onClick: toggleOpen
113
- }, dragHandle && /*#__PURE__*/React__default.createElement("div", {
114
- className: `${CLASSNAME}__header-drag`
115
- }, dragHandle), /*#__PURE__*/React__default.createElement("div", _extends({}, headerProps, {
116
- className: `${CLASSNAME}__header-content`
117
- }), headerContent), /*#__PURE__*/React__default.createElement("div", {
118
- className: `${CLASSNAME}__header-toggle`
119
- }, /*#__PURE__*/React__default.createElement(IconButton, _extends({}, toggleButtonProps, {
120
- color: color,
121
- emphasis: Emphasis.low,
122
- icon: isOpen ? mdiChevronUp : mdiChevronDown,
123
- "aria-expanded": isOpen || 'false'
124
- })))), (isOpen || isChildrenVisible) && /*#__PURE__*/React__default.createElement("div", {
125
- className: `${CLASSNAME}__wrapper`,
126
- style: {
127
- maxHeight
128
- }
129
- }, /*#__PURE__*/React__default.createElement("div", {
130
- className: `${CLASSNAME}__container`,
131
- ref: wrapperRef
132
- }, /*#__PURE__*/React__default.createElement("div", {
133
- className: `${CLASSNAME}__content`
134
- }, content), footer && /*#__PURE__*/React__default.createElement("div", {
135
- className: `${CLASSNAME}__footer`
136
- }, footer))));
137
- });
138
- ExpansionPanel.displayName = COMPONENT_NAME;
139
- ExpansionPanel.className = CLASSNAME;
140
- ExpansionPanel.defaultProps = DEFAULT_PROPS;
141
-
142
- export { ExpansionPanel };
143
- //# sourceMappingURL=index.ts-fae3762e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.ts-fae3762e.js","sources":["../../../../src/components/expansion-panel/ExpansionPanel.tsx"],"sourcesContent":["import React, { Children, PropsWithChildren, ReactNode, useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { mdiChevronDown, mdiChevronUp } from '@lumx/icons';\n\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport isFunction from 'lodash/isFunction';\n\nimport { ColorPalette, DragHandle, Emphasis, IconButton, IconButtonProps, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { partitionMulti } from '@lumx/react/utils/partitionMulti';\nimport { useTransitionVisibility } from '@lumx/react/hooks/useTransitionVisibility';\nimport { EXPANSION_PANEL_TRANSITION_DURATION } from '@lumx/core/js/constants';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface ExpansionPanelProps extends GenericProps, HasTheme {\n /** Whether the expansion panel has a background. */\n hasBackground?: boolean;\n /** Whether the header has a divider. */\n hasHeaderDivider?: boolean;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Label text (overwritten if a `<header>` is provided in the children). */\n label?: string;\n /** On open callback. */\n onOpen?: (event: React.MouseEvent) => void;\n /** On close callback. */\n onClose?: (event: React.MouseEvent) => void;\n /** Props to pass to the toggle button (minus those already set by the ExpansionPanel props). */\n toggleButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** On toggle open or close callback. */\n onToggleOpen?(shouldOpen: boolean, event: React.MouseEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ExpansionPanel';\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<ExpansionPanelProps> = {};\n\nconst isDragHandle = isComponent(DragHandle);\nconst isHeader = isComponent('header');\nconst isFooter = isComponent('footer');\n\n/**\n * ExpansionPanel component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ExpansionPanel = forwardRef<ExpansionPanelProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n className,\n children: anyChildren,\n hasBackground,\n hasHeaderDivider,\n isOpen,\n label,\n onClose,\n onOpen,\n onToggleOpen,\n theme = defaultTheme,\n toggleButtonProps,\n ...forwardedProps\n } = props;\n\n const children: ReactNode[] = Children.toArray(anyChildren);\n\n // Partition children by types.\n const [[dragHandle], [header], [footer], content] = partitionMulti(children, [isDragHandle, isHeader, isFooter]);\n\n // Either take the header in children or create one with the label.\n const headerProps: PropsWithChildren<any> = React.isValidElement(header) ? header.props : {};\n const headerContent = !isEmpty(headerProps.children) ? (\n headerProps.children\n ) : (\n <span className={`${CLASSNAME}__label`}>{label}</span>\n );\n\n const toggleOpen = (event: React.MouseEvent) => {\n const shouldOpen = !isOpen;\n\n if (isFunction(onOpen) && shouldOpen) {\n onOpen(event);\n }\n if (isFunction(onClose) && !shouldOpen) {\n onClose(event);\n }\n if (isFunction(onToggleOpen)) {\n onToggleOpen(shouldOpen, event);\n }\n };\n\n const color = theme === Theme.dark ? ColorPalette.light : ColorPalette.dark;\n\n const rootClassName = classNames(\n className,\n handleBasicClasses({\n hasBackground,\n hasHeader: Boolean(!isEmpty(headerProps.children)),\n hasHeaderDivider,\n isClose: !isOpen,\n isDraggable: Boolean(dragHandle),\n isOpen,\n prefix: CLASSNAME,\n theme,\n }),\n );\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n /** Hide the children at the end of the transition */\n const isChildrenVisible = useTransitionVisibility(wrapperRef, !!isOpen, EXPANSION_PANEL_TRANSITION_DURATION);\n\n // Switch max height on/off to activate the CSS transition (updates when children changes).\n const [maxHeight, setMaxHeight] = useState('0');\n useEffect(() => {\n const height = isOpen ? get(wrapperRef.current, 'offsetHeight', 0) : 0;\n setMaxHeight(`${height}px`);\n }, [children, isOpen]);\n\n return (\n <section ref={ref} {...forwardedProps} className={rootClassName}>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}\n <header className={`${CLASSNAME}__header`} onClick={toggleOpen}>\n {dragHandle && <div className={`${CLASSNAME}__header-drag`}>{dragHandle}</div>}\n\n <div {...headerProps} className={`${CLASSNAME}__header-content`}>\n {headerContent}\n </div>\n\n <div className={`${CLASSNAME}__header-toggle`}>\n <IconButton\n {...toggleButtonProps}\n color={color}\n emphasis={Emphasis.low}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n aria-expanded={isOpen || 'false'}\n />\n </div>\n </header>\n\n {(isOpen || isChildrenVisible) && (\n <div className={`${CLASSNAME}__wrapper`} style={{ maxHeight }}>\n <div className={`${CLASSNAME}__container`} ref={wrapperRef}>\n <div className={`${CLASSNAME}__content`}>{content}</div>\n\n {footer && <div className={`${CLASSNAME}__footer`}>{footer}</div>}\n </div>\n </div>\n )}\n </section>\n );\n});\nExpansionPanel.displayName = COMPONENT_NAME;\nExpansionPanel.className = CLASSNAME;\nExpansionPanel.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","isDragHandle","isComponent","DragHandle","isHeader","isFooter","ExpansionPanel","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","className","children","anyChildren","hasBackground","hasHeaderDivider","isOpen","label","onClose","onOpen","onToggleOpen","theme","toggleButtonProps","forwardedProps","_objectWithoutProperties","_excluded","Children","toArray","dragHandle","header","footer","content","partitionMulti","headerProps","React","isValidElement","headerContent","isEmpty","createElement","toggleOpen","event","shouldOpen","isFunction","color","dark","ColorPalette","rootClassName","classNames","handleBasicClasses","hasHeader","Boolean","isClose","isDraggable","prefix","wrapperRef","useRef","isChildrenVisible","useTransitionVisibility","EXPANSION_PANEL_TRANSITION_DURATION","maxHeight","setMaxHeight","useState","useEffect","height","get","current","_extends","onClick","IconButton","emphasis","Emphasis","low","icon","mdiChevronUp","mdiChevronDown","style","displayName","defaultProps"],"mappings":";;;;;;;;;;;;;;;;AAmBA;AACA;AACA;;AAqBA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,gBAAgB,CAAA;;AAEvC;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA,MAAMG,aAA2C,GAAG,EAAE,CAAA;AAEtD,MAAMC,YAAY,GAAGC,WAAW,CAACC,UAAU,CAAC,CAAA;AAC5C,MAAMC,QAAQ,GAAGF,WAAW,CAAC,QAAQ,CAAC,CAAA;AACtC,MAAMG,QAAQ,GAAGH,WAAW,CAAC,QAAQ,CAAC,CAAA;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMI,cAAc,GAAGC,UAAU,CAAsC,CAACC,KAAK,EAAEC,GAAG,KAAK;EAC1F,MAAMC,YAAY,GAAGC,QAAQ,EAAE,IAAIC,KAAK,CAACC,KAAK,CAAA;EAC9C,MAAM;MACFC,SAAS;AACTC,MAAAA,QAAQ,EAAEC,WAAW;MACrBC,aAAa;MACbC,gBAAgB;MAChBC,MAAM;MACNC,KAAK;MACLC,OAAO;MACPC,MAAM;MACNC,YAAY;AACZC,MAAAA,KAAK,GAAGd,YAAY;AACpBe,MAAAA,iBAAAA;AAEJ,KAAC,GAAGjB,KAAK;AADFkB,IAAAA,cAAc,GAAAC,wBAAA,CACjBnB,KAAK,EAAAoB,SAAA,CAAA,CAAA;AAET,EAAA,MAAMb,QAAqB,GAAGc,QAAQ,CAACC,OAAO,CAACd,WAAW,CAAC,CAAA;;AAE3D;EACA,MAAM,CAAC,CAACe,UAAU,CAAC,EAAE,CAACC,MAAM,CAAC,EAAE,CAACC,MAAM,CAAC,EAAEC,OAAO,CAAC,GAAGC,cAAc,CAACpB,QAAQ,EAAE,CAACd,YAAY,EAAEG,QAAQ,EAAEC,QAAQ,CAAC,CAAC,CAAA;;AAEhH;AACA,EAAA,MAAM+B,WAAmC,gBAAGC,cAAK,CAACC,cAAc,CAACN,MAAM,CAAC,GAAGA,MAAM,CAACxB,KAAK,GAAG,EAAE,CAAA;AAC5F,EAAA,MAAM+B,aAAa,GAAG,CAACC,OAAO,CAACJ,WAAW,CAACrB,QAAQ,CAAC,GAChDqB,WAAW,CAACrB,QAAQ,gBAEpBsB,cAAA,CAAAI,aAAA,CAAA,MAAA,EAAA;IAAM3B,SAAS,EAAG,GAAEhB,SAAU,CAAA,OAAA,CAAA;AAAS,GAAA,EAAEsB,KAAY,CACxD,CAAA;EAED,MAAMsB,UAAU,GAAIC,KAAuB,IAAK;IAC5C,MAAMC,UAAU,GAAG,CAACzB,MAAM,CAAA;AAE1B,IAAA,IAAI0B,UAAU,CAACvB,MAAM,CAAC,IAAIsB,UAAU,EAAE;MAClCtB,MAAM,CAACqB,KAAK,CAAC,CAAA;AACjB,KAAA;AACA,IAAA,IAAIE,UAAU,CAACxB,OAAO,CAAC,IAAI,CAACuB,UAAU,EAAE;MACpCvB,OAAO,CAACsB,KAAK,CAAC,CAAA;AAClB,KAAA;AACA,IAAA,IAAIE,UAAU,CAACtB,YAAY,CAAC,EAAE;AAC1BA,MAAAA,YAAY,CAACqB,UAAU,EAAED,KAAK,CAAC,CAAA;AACnC,KAAA;GACH,CAAA;AAED,EAAA,MAAMG,KAAK,GAAGtB,KAAK,KAAKZ,KAAK,CAACmC,IAAI,GAAGC,YAAY,CAACnC,KAAK,GAAGmC,YAAY,CAACD,IAAI,CAAA;AAE3E,EAAA,MAAME,aAAa,GAAGC,UAAU,CAC5BpC,SAAS,EACTqC,kBAAkB,CAAC;IACflC,aAAa;IACbmC,SAAS,EAAEC,OAAO,CAAC,CAACb,OAAO,CAACJ,WAAW,CAACrB,QAAQ,CAAC,CAAC;IAClDG,gBAAgB;IAChBoC,OAAO,EAAE,CAACnC,MAAM;AAChBoC,IAAAA,WAAW,EAAEF,OAAO,CAACtB,UAAU,CAAC;IAChCZ,MAAM;AACNqC,IAAAA,MAAM,EAAE1D,SAAS;AACjB0B,IAAAA,KAAAA;AACJ,GAAC,CACL,CAAC,CAAA;AAED,EAAA,MAAMiC,UAAU,GAAGC,MAAM,CAAiB,IAAI,CAAC,CAAA;;AAE/C;EACA,MAAMC,iBAAiB,GAAGC,uBAAuB,CAACH,UAAU,EAAE,CAAC,CAACtC,MAAM,EAAE0C,mCAAmC,CAAC,CAAA;;AAE5G;EACA,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC/CC,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,MAAMC,MAAM,GAAG/C,MAAM,GAAGgD,GAAG,CAACV,UAAU,CAACW,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;AACtEL,IAAAA,YAAY,CAAE,CAAA,EAAEG,MAAO,CAAA,EAAA,CAAG,CAAC,CAAA;AAC/B,GAAC,EAAE,CAACnD,QAAQ,EAAEI,MAAM,CAAC,CAAC,CAAA;AAEtB,EAAA,oBACIkB,cAAA,CAAAI,aAAA,CAAA,SAAA,EAAA4B,QAAA,CAAA;AAAS5D,IAAAA,GAAG,EAAEA,GAAAA;AAAI,GAAA,EAAKiB,cAAc,EAAA;AAAEZ,IAAAA,SAAS,EAAEmC,aAAAA;GAE9CZ,CAAAA,eAAAA,cAAA,CAAAI,aAAA,CAAA,QAAA,EAAA;IAAQ3B,SAAS,EAAG,CAAEhB,EAAAA,SAAU,CAAU,QAAA,CAAA;AAACwE,IAAAA,OAAO,EAAE5B,UAAAA;AAAW,GAAA,EAC1DX,UAAU,iBAAIM,cAAA,CAAAI,aAAA,CAAA,KAAA,EAAA;IAAK3B,SAAS,EAAG,GAAEhB,SAAU,CAAA,aAAA,CAAA;GAAiBiC,EAAAA,UAAgB,CAAC,eAE9EM,cAAA,CAAAI,aAAA,CAAA,KAAA,EAAA4B,QAAA,CAAA,EAAA,EAASjC,WAAW,EAAA;IAAEtB,SAAS,EAAG,GAAEhB,SAAU,CAAA,gBAAA,CAAA;AAAkB,GAAA,CAAA,EAC3DyC,aACA,CAAC,eAENF,cAAA,CAAAI,aAAA,CAAA,KAAA,EAAA;IAAK3B,SAAS,EAAG,GAAEhB,SAAU,CAAA,eAAA,CAAA;GACzBuC,eAAAA,cAAA,CAAAI,aAAA,CAAC8B,UAAU,EAAAF,QAAA,KACH5C,iBAAiB,EAAA;AACrBqB,IAAAA,KAAK,EAAEA,KAAM;IACb0B,QAAQ,EAAEC,QAAQ,CAACC,GAAI;AACvBC,IAAAA,IAAI,EAAExD,MAAM,GAAGyD,YAAY,GAAGC,cAAe;AAC7C,IAAA,eAAA,EAAe1D,MAAM,IAAI,OAAA;GAC5B,CAAA,CACA,CACD,CAAC,EAER,CAACA,MAAM,IAAIwC,iBAAiB,kBACzBtB,cAAA,CAAAI,aAAA,CAAA,KAAA,EAAA;IAAK3B,SAAS,EAAG,CAAEhB,EAAAA,SAAU,CAAW,SAAA,CAAA;AAACgF,IAAAA,KAAK,EAAE;AAAEhB,MAAAA,SAAAA;AAAU,KAAA;GACxDzB,eAAAA,cAAA,CAAAI,aAAA,CAAA,KAAA,EAAA;IAAK3B,SAAS,EAAG,CAAEhB,EAAAA,SAAU,CAAa,WAAA,CAAA;AAACW,IAAAA,GAAG,EAAEgD,UAAAA;GAC5CpB,eAAAA,cAAA,CAAAI,aAAA,CAAA,KAAA,EAAA;IAAK3B,SAAS,EAAG,GAAEhB,SAAU,CAAA,SAAA,CAAA;AAAW,GAAA,EAAEoC,OAAa,CAAC,EAEvDD,MAAM,iBAAII,cAAA,CAAAI,aAAA,CAAA,KAAA,EAAA;IAAK3B,SAAS,EAAG,GAAEhB,SAAU,CAAA,QAAA,CAAA;AAAU,GAAA,EAAEmC,MAAY,CAC/D,CACJ,CAEJ,CAAC,CAAA;AAElB,CAAC,EAAC;AACF3B,cAAc,CAACyE,WAAW,GAAGlF,cAAc,CAAA;AAC3CS,cAAc,CAACQ,SAAS,GAAGhB,SAAS,CAAA;AACpCQ,cAAc,CAAC0E,YAAY,GAAGhF,aAAa;;;;"}
@@ -1,56 +0,0 @@
1
- import { h as getRootClassName, i as forwardRef, T as Theme, j as _objectWithoutProperties, C as ColorPalette, _ as _extends, g as classNames, S as Size } from '../../1da25128.js';
2
- import React__default from 'react';
3
- import { u as useTheme } from '../../3181f000.js';
4
- import { h as handleBasicClasses } from '../../f57e1239.js';
5
- import { I as Icon } from '../../c6c99f76.js';
6
- import { T as Text } from '../../53c94227.js';
7
-
8
- const _excluded = ["label", "icon", "color", "className", "theme", "truncate"];
9
- const COMPONENT_NAME = 'Flag';
10
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
11
- const DEFAULT_PROPS = {};
12
-
13
- /**
14
- * Flag component.
15
- *
16
- * @param props Component props.
17
- * @param ref Component ref.
18
- * @return React element.
19
- */
20
- const Flag = forwardRef((props, ref) => {
21
- const defaultTheme = useTheme() || Theme.light;
22
- const {
23
- label,
24
- icon,
25
- color,
26
- className,
27
- theme = defaultTheme,
28
- truncate
29
- } = props,
30
- forwardedProps = _objectWithoutProperties(props, _excluded);
31
- const flagColor = color || (theme === Theme.light ? ColorPalette.dark : ColorPalette.light);
32
- const isTruncated = !!truncate;
33
- return /*#__PURE__*/React__default.createElement("div", _extends({}, forwardedProps, {
34
- className: classNames(className, handleBasicClasses({
35
- prefix: CLASSNAME,
36
- color: flagColor,
37
- isTruncated
38
- })),
39
- ref: ref
40
- }), icon && /*#__PURE__*/React__default.createElement(Icon, {
41
- icon: icon,
42
- size: Size.xxs,
43
- className: `${CLASSNAME}__icon`
44
- }), /*#__PURE__*/React__default.createElement(Text, {
45
- as: "span",
46
- truncate: isTruncated,
47
- typography: "overline",
48
- className: `${CLASSNAME}__label`
49
- }, label));
50
- });
51
- Flag.displayName = COMPONENT_NAME;
52
- Flag.className = CLASSNAME;
53
- Flag.defaultProps = DEFAULT_PROPS;
54
-
55
- export { Flag };
56
- //# sourceMappingURL=index.ts-8dcd685b.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.ts-8dcd685b.js","sources":["../../../../src/components/flag/Flag.tsx"],"sourcesContent":["import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { ColorPalette, Icon, Size, Theme, Text } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nexport interface FlagProps extends GenericProps, HasTheme {\n /** Color of the component. */\n color?: ColorPalette;\n /** Icon to use before the label. */\n icon?: string;\n /** Text label of the flag. */\n label: React.ReactNode;\n /** Enable text truncate on overflow */\n truncate?: boolean;\n}\n\nconst COMPONENT_NAME = 'Flag';\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\nconst DEFAULT_PROPS: Partial<FlagProps> = {};\n\n/**\n * Flag component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Flag = forwardRef<FlagProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const { label, icon, color, className, theme = defaultTheme, truncate, ...forwardedProps } = props;\n const flagColor = color || (theme === Theme.light ? ColorPalette.dark : ColorPalette.light);\n const isTruncated = !!truncate;\n\n return (\n <div\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, color: flagColor, isTruncated }))}\n ref={ref}\n >\n {icon && <Icon icon={icon} size={Size.xxs} className={`${CLASSNAME}__icon`} />}\n <Text as=\"span\" truncate={isTruncated} typography=\"overline\" className={`${CLASSNAME}__label`}>\n {label}\n </Text>\n </div>\n );\n});\nFlag.displayName = COMPONENT_NAME;\nFlag.className = CLASSNAME;\nFlag.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","Flag","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","label","icon","color","className","theme","truncate","forwardedProps","_objectWithoutProperties","_excluded","flagColor","ColorPalette","dark","isTruncated","React","createElement","_extends","classNames","handleBasicClasses","prefix","Icon","size","Size","xxs","Text","as","typography","displayName","defaultProps"],"mappings":";;;;;;;;AAqBA,MAAMA,cAAc,GAAG,MAAM,CAAA;AAC7B,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;AAClD,MAAMG,aAAiC,GAAG,EAAE,CAAA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,IAAI,GAAGC,UAAU,CAA4B,CAACC,KAAK,EAAEC,GAAG,KAAK;EACtE,MAAMC,YAAY,GAAGC,QAAQ,EAAE,IAAIC,KAAK,CAACC,KAAK,CAAA;EAC9C,MAAM;MAAEC,KAAK;MAAEC,IAAI;MAAEC,KAAK;MAAEC,SAAS;AAAEC,MAAAA,KAAK,GAAGR,YAAY;AAAES,MAAAA,QAAAA;AAA4B,KAAC,GAAGX,KAAK;AAAxBY,IAAAA,cAAc,GAAAC,wBAAA,CAAKb,KAAK,EAAAc,SAAA,CAAA,CAAA;AAClG,EAAA,MAAMC,SAAS,GAAGP,KAAK,KAAKE,KAAK,KAAKN,KAAK,CAACC,KAAK,GAAGW,YAAY,CAACC,IAAI,GAAGD,YAAY,CAACX,KAAK,CAAC,CAAA;AAC3F,EAAA,MAAMa,WAAW,GAAG,CAAC,CAACP,QAAQ,CAAA;AAE9B,EAAA,oBACIQ,cAAA,CAAAC,aAAA,CAAAC,KAAAA,EAAAA,QAAA,KACQT,cAAc,EAAA;AAClBH,IAAAA,SAAS,EAAEa,UAAU,CAACb,SAAS,EAAEc,kBAAkB,CAAC;AAAEC,MAAAA,MAAM,EAAE7B,SAAS;AAAEa,MAAAA,KAAK,EAAEO,SAAS;AAAEG,MAAAA,WAAAA;AAAY,KAAC,CAAC,CAAE;AAC3GjB,IAAAA,GAAG,EAAEA,GAAAA;AAAI,GAAA,CAAA,EAERM,IAAI,iBAAIY,cAAA,CAAAC,aAAA,CAACK,IAAI,EAAA;AAAClB,IAAAA,IAAI,EAAEA,IAAK;IAACmB,IAAI,EAAEC,IAAI,CAACC,GAAI;IAACnB,SAAS,EAAG,GAAEd,SAAU,CAAA,MAAA,CAAA;AAAQ,GAAE,CAAC,eAC9EwB,cAAA,CAAAC,aAAA,CAACS,IAAI,EAAA;AAACC,IAAAA,EAAE,EAAC,MAAM;AAACnB,IAAAA,QAAQ,EAAEO,WAAY;AAACa,IAAAA,UAAU,EAAC,UAAU;IAACtB,SAAS,EAAG,GAAEd,SAAU,CAAA,OAAA,CAAA;GAChFW,EAAAA,KACC,CACL,CAAC,CAAA;AAEd,CAAC,EAAC;AACFR,IAAI,CAACkC,WAAW,GAAGtC,cAAc,CAAA;AACjCI,IAAI,CAACW,SAAS,GAAGd,SAAS,CAAA;AAC1BG,IAAI,CAACmC,YAAY,GAAGpC,aAAa;;;;"}
@@ -1,23 +0,0 @@
1
- import { G as GenericProps, H as HasTheme, a as ColorPalette, C as Comp } from '../../8d67e1e3.js';
2
- import React from 'react';
3
-
4
- interface FlagProps extends GenericProps, HasTheme {
5
- /** Color of the component. */
6
- color?: ColorPalette;
7
- /** Icon to use before the label. */
8
- icon?: string;
9
- /** Text label of the flag. */
10
- label: React.ReactNode;
11
- /** Enable text truncate on overflow */
12
- truncate?: boolean;
13
- }
14
- /**
15
- * Flag component.
16
- *
17
- * @param props Component props.
18
- * @param ref Component ref.
19
- * @return React element.
20
- */
21
- declare const Flag: Comp<FlagProps, HTMLDivElement>;
22
-
23
- export { Flag, type FlagProps };
@@ -1,43 +0,0 @@
1
- import { A as Alignment, S as Size, c as VerticalAlignment, d as HorizontalAlignment, G as GenericProps, O as Orientation, C as Comp } from '../../8d67e1e3.js';
2
- import React, { ReactNode } from 'react';
3
-
4
- type MarginAutoAlignment = Extract<Alignment, 'top' | 'bottom' | 'right' | 'left'>;
5
- type GapSize = Extract<Size, 'tiny' | 'regular' | 'medium' | 'big' | 'huge'>;
6
- type SpaceAlignment = Extract<Alignment, 'space-between' | 'space-evenly' | 'space-around'>;
7
- type FlexVerticalAlignment = VerticalAlignment | SpaceAlignment;
8
- type FlexHorizontalAlignment = HorizontalAlignment | SpaceAlignment;
9
- /**
10
- * Defines the props of the component.
11
- */
12
- interface FlexBoxProps extends GenericProps {
13
- /** Customize the root element. */
14
- as?: React.ElementType;
15
- /** Children elements. */
16
- children?: ReactNode;
17
- /** Whether the "content filling space" is enabled or not. */
18
- fillSpace?: boolean;
19
- /** Gap space between flexbox items. */
20
- gap?: GapSize;
21
- /** Flex horizontal alignment. */
22
- hAlign?: FlexVerticalAlignment;
23
- /** Whether the "auto margin" is enabled all around or not. */
24
- marginAuto?: MarginAutoAlignment | MarginAutoAlignment[];
25
- /** Whether the "content shrink" is disabled or not. */
26
- noShrink?: boolean;
27
- /** Flex direction. */
28
- orientation?: Orientation;
29
- /** Flex vertical alignment. */
30
- vAlign?: FlexHorizontalAlignment;
31
- /** Whether the "flex wrap" is enabled or not. */
32
- wrap?: boolean;
33
- }
34
- /**
35
- * FlexBox component.
36
- *
37
- * @param props Component props.
38
- * @param ref Component ref.
39
- * @return React element.
40
- */
41
- declare const FlexBox: Comp<FlexBoxProps, HTMLDivElement>;
42
-
43
- export { FlexBox, type FlexBoxProps, type FlexHorizontalAlignment, type FlexVerticalAlignment, type GapSize, type MarginAutoAlignment };