@lumx/react 3.0.2-alpha-react-utils.1 → 3.0.2-alpha-react-utils.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 (358) hide show
  1. package/_internal/{6340c129.js → ClickAwayProvider.js} +107 -2
  2. package/_internal/ClickAwayProvider.js.map +1 -0
  3. package/_internal/{eca6d4dc.d.ts → types.d.ts} +1 -1
  4. package/index.d.ts +2627 -56
  5. package/index.js +12438 -95
  6. package/index.js.map +1 -1
  7. package/package.json +4 -4
  8. package/utils/index.d.ts +1 -1
  9. package/utils/index.js +1 -4
  10. package/utils/index.js.map +1 -1
  11. package/_internal/0062d1bc.js +0 -220
  12. package/_internal/0062d1bc.js.map +0 -1
  13. package/_internal/03e8323d.d.ts +0 -118
  14. package/_internal/0402f9bc.d.ts +0 -183
  15. package/_internal/0b370acc.js +0 -796
  16. package/_internal/0b370acc.js.map +0 -1
  17. package/_internal/0d154d73.d.ts +0 -67
  18. package/_internal/113e3b40.d.ts +0 -31
  19. package/_internal/12ab39e4.js +0 -58
  20. package/_internal/12ab39e4.js.map +0 -1
  21. package/_internal/13e759f3.js +0 -343
  22. package/_internal/13e759f3.js.map +0 -1
  23. package/_internal/158b46d5.js +0 -151
  24. package/_internal/158b46d5.js.map +0 -1
  25. package/_internal/17b74e16.d.ts +0 -31
  26. package/_internal/1b1530a4.d.ts +0 -43
  27. package/_internal/20976405.js +0 -87
  28. package/_internal/20976405.js.map +0 -1
  29. package/_internal/20b0e9a5.d.ts +0 -77
  30. package/_internal/26cd9c63.js +0 -118
  31. package/_internal/26cd9c63.js.map +0 -1
  32. package/_internal/27f21164.js +0 -79
  33. package/_internal/27f21164.js.map +0 -1
  34. package/_internal/288dfd0f.js +0 -13
  35. package/_internal/288dfd0f.js.map +0 -1
  36. package/_internal/28aaf23a.d.ts +0 -41
  37. package/_internal/2c829c0b.d.ts +0 -57
  38. package/_internal/2cc0aec5.js +0 -86
  39. package/_internal/2cc0aec5.js.map +0 -1
  40. package/_internal/2d0a5b28.js +0 -23
  41. package/_internal/2d0a5b28.js.map +0 -1
  42. package/_internal/2d4b5a5e.d.ts +0 -92
  43. package/_internal/2d770113.d.ts +0 -38
  44. package/_internal/2fe97f00.js +0 -291
  45. package/_internal/2fe97f00.js.map +0 -1
  46. package/_internal/31c16fa0.d.ts +0 -37
  47. package/_internal/329a01d3.js +0 -25
  48. package/_internal/329a01d3.js.map +0 -1
  49. package/_internal/3326e990.js +0 -168
  50. package/_internal/3326e990.js.map +0 -1
  51. package/_internal/377b2f44.js +0 -70
  52. package/_internal/377b2f44.js.map +0 -1
  53. package/_internal/3b8d2a6e.js +0 -124
  54. package/_internal/3b8d2a6e.js.map +0 -1
  55. package/_internal/3bd3186e.d.ts +0 -57
  56. package/_internal/48e40868.js +0 -101
  57. package/_internal/48e40868.js.map +0 -1
  58. package/_internal/490ec1da.js +0 -322
  59. package/_internal/490ec1da.js.map +0 -1
  60. package/_internal/49127d69.d.ts +0 -52
  61. package/_internal/4dcd87cb.js +0 -78
  62. package/_internal/4dcd87cb.js.map +0 -1
  63. package/_internal/4f44d848.js +0 -157
  64. package/_internal/4f44d848.js.map +0 -1
  65. package/_internal/4fc64a2e.js +0 -27
  66. package/_internal/4fc64a2e.js.map +0 -1
  67. package/_internal/53a831be.js +0 -108
  68. package/_internal/53a831be.js.map +0 -1
  69. package/_internal/55271fa1.d.ts +0 -34
  70. package/_internal/55d30377.d.ts +0 -22
  71. package/_internal/56385b04.js +0 -116
  72. package/_internal/56385b04.js.map +0 -1
  73. package/_internal/599e250a.d.ts +0 -88
  74. package/_internal/5a054691.d.ts +0 -33
  75. package/_internal/5a127b58.js +0 -82
  76. package/_internal/5a127b58.js.map +0 -1
  77. package/_internal/5a1c0db4.js +0 -156
  78. package/_internal/5a1c0db4.js.map +0 -1
  79. package/_internal/5babcc39.js +0 -147
  80. package/_internal/5babcc39.js.map +0 -1
  81. package/_internal/5c1bf4d4.d.ts +0 -81
  82. package/_internal/5d8ed4ee.js +0 -113
  83. package/_internal/5d8ed4ee.js.map +0 -1
  84. package/_internal/616f2912.js +0 -301
  85. package/_internal/616f2912.js.map +0 -1
  86. package/_internal/61f915de.d.ts +0 -49
  87. package/_internal/620081fa.js +0 -122
  88. package/_internal/620081fa.js.map +0 -1
  89. package/_internal/6340c129.js.map +0 -1
  90. package/_internal/6581c863.d.ts +0 -34
  91. package/_internal/66de4d45.d.ts +0 -32
  92. package/_internal/6735c5c8.d.ts +0 -62
  93. package/_internal/69dd1472.js +0 -112
  94. package/_internal/69dd1472.js.map +0 -1
  95. package/_internal/6a0e1c77.js +0 -327
  96. package/_internal/6a0e1c77.js.map +0 -1
  97. package/_internal/701c20b0.d.ts +0 -24
  98. package/_internal/7391188a.js +0 -81
  99. package/_internal/7391188a.js.map +0 -1
  100. package/_internal/74cb6c26.js +0 -136
  101. package/_internal/74cb6c26.js.map +0 -1
  102. package/_internal/761031bf.js +0 -314
  103. package/_internal/761031bf.js.map +0 -1
  104. package/_internal/76fed69d.js +0 -50
  105. package/_internal/76fed69d.js.map +0 -1
  106. package/_internal/78ef8e34.js +0 -40
  107. package/_internal/78ef8e34.js.map +0 -1
  108. package/_internal/7b906e16.d.ts +0 -17
  109. package/_internal/7be11ddc.d.ts +0 -35
  110. package/_internal/7d39705e.d.ts +0 -20
  111. package/_internal/7e03266f.js +0 -47
  112. package/_internal/7e03266f.js.map +0 -1
  113. package/_internal/7e8d0ac5.js +0 -84
  114. package/_internal/7e8d0ac5.js.map +0 -1
  115. package/_internal/7ffa45f6.js +0 -48
  116. package/_internal/7ffa45f6.js.map +0 -1
  117. package/_internal/84c1ec44.js +0 -257
  118. package/_internal/84c1ec44.js.map +0 -1
  119. package/_internal/8518279f.js +0 -96
  120. package/_internal/8518279f.js.map +0 -1
  121. package/_internal/853713cd.js +0 -25
  122. package/_internal/853713cd.js.map +0 -1
  123. package/_internal/86566d75.d.ts +0 -27
  124. package/_internal/86d22dde.d.ts +0 -57
  125. package/_internal/8e755ded.d.ts +0 -101
  126. package/_internal/901471f5.d.ts +0 -37
  127. package/_internal/935ce959.d.ts +0 -49
  128. package/_internal/97089888.d.ts +0 -16
  129. package/_internal/97cc728c.d.ts +0 -26
  130. package/_internal/9ab3c637.js +0 -2474
  131. package/_internal/9ab3c637.js.map +0 -1
  132. package/_internal/9ca3f59c.js +0 -60
  133. package/_internal/9ca3f59c.js.map +0 -1
  134. package/_internal/9e95ea38.d.ts +0 -43
  135. package/_internal/a0108f92.js +0 -84
  136. package/_internal/a0108f92.js.map +0 -1
  137. package/_internal/a493a193.d.ts +0 -65
  138. package/_internal/a521723d.js +0 -120
  139. package/_internal/a521723d.js.map +0 -1
  140. package/_internal/a6fad025.d.ts +0 -107
  141. package/_internal/a8fa525f.js +0 -124
  142. package/_internal/a8fa525f.js.map +0 -1
  143. package/_internal/aca2ecf5.js +0 -141
  144. package/_internal/aca2ecf5.js.map +0 -1
  145. package/_internal/aef2ef1c.js +0 -53
  146. package/_internal/aef2ef1c.js.map +0 -1
  147. package/_internal/af048b0c.js +0 -89
  148. package/_internal/af048b0c.js.map +0 -1
  149. package/_internal/af2cd0cd.d.ts +0 -17
  150. package/_internal/afec6b62.js +0 -864
  151. package/_internal/afec6b62.js.map +0 -1
  152. package/_internal/b0eb3a30.js +0 -72
  153. package/_internal/b0eb3a30.js.map +0 -1
  154. package/_internal/b89517ea.js +0 -275
  155. package/_internal/b89517ea.js.map +0 -1
  156. package/_internal/bafa6fcc.js +0 -116
  157. package/_internal/bafa6fcc.js.map +0 -1
  158. package/_internal/bbbeb49e.js +0 -47
  159. package/_internal/bbbeb49e.js.map +0 -1
  160. package/_internal/c11f6162.d.ts +0 -52
  161. package/_internal/c723dab4.js +0 -133
  162. package/_internal/c723dab4.js.map +0 -1
  163. package/_internal/c87cc857.d.ts +0 -42
  164. package/_internal/c97f8d04.js +0 -424
  165. package/_internal/c97f8d04.js.map +0 -1
  166. package/_internal/cbb373ea.d.ts +0 -6
  167. package/_internal/cbef23b6.d.ts +0 -104
  168. package/_internal/cdf77f06.d.ts +0 -88
  169. package/_internal/d350f2ff.js +0 -105
  170. package/_internal/d350f2ff.js.map +0 -1
  171. package/_internal/d71a8cf7.js +0 -54
  172. package/_internal/d71a8cf7.js.map +0 -1
  173. package/_internal/d9337952.js +0 -96
  174. package/_internal/d9337952.js.map +0 -1
  175. package/_internal/def14e1a.d.ts +0 -24
  176. package/_internal/e0cd29c7.d.ts +0 -35
  177. package/_internal/e354228f.js +0 -145
  178. package/_internal/e354228f.js.map +0 -1
  179. package/_internal/e3922a05.d.ts +0 -22
  180. package/_internal/e3cb6177.d.ts +0 -75
  181. package/_internal/e810c841.d.ts +0 -182
  182. package/_internal/ea700b01.d.ts +0 -43
  183. package/_internal/eed07003.js +0 -122
  184. package/_internal/eed07003.js.map +0 -1
  185. package/_internal/f1c9b334.d.ts +0 -22
  186. package/_internal/f3c3a674.js +0 -281
  187. package/_internal/f3c3a674.js.map +0 -1
  188. package/_internal/f571cdcd.js +0 -132
  189. package/_internal/f571cdcd.js.map +0 -1
  190. package/_internal/f5bdff7e.js +0 -282
  191. package/_internal/f5bdff7e.js.map +0 -1
  192. package/_internal/f851fc00.d.ts +0 -34
  193. package/_internal/f859b007.d.ts +0 -49
  194. package/_internal/fb384b79.d.ts +0 -38
  195. package/_internal/fc4c034b.js +0 -63
  196. package/_internal/fc4c034b.js.map +0 -1
  197. package/_internal/fc608bd9.js +0 -16
  198. package/_internal/fc608bd9.js.map +0 -1
  199. package/_internal/fd1f4d68.d.ts +0 -36
  200. package/_internal/fd867c9d.js +0 -346
  201. package/_internal/fd867c9d.js.map +0 -1
  202. package/_internal/ff8081e5.js +0 -57
  203. package/_internal/ff8081e5.js.map +0 -1
  204. package/_internal/ffd1bfe3.js +0 -123
  205. package/_internal/ffd1bfe3.js.map +0 -1
  206. package/components/alert-dialog.d.ts +0 -6
  207. package/components/alert-dialog.js +0 -35
  208. package/components/alert-dialog.js.map +0 -1
  209. package/components/autocomplete.d.ts +0 -8
  210. package/components/autocomplete.js +0 -33
  211. package/components/autocomplete.js.map +0 -1
  212. package/components/avatar.d.ts +0 -4
  213. package/components/avatar.js +0 -13
  214. package/components/avatar.js.map +0 -1
  215. package/components/badge.d.ts +0 -3
  216. package/components/badge.js +0 -10
  217. package/components/badge.js.map +0 -1
  218. package/components/button.d.ts +0 -8
  219. package/components/button.js +0 -26
  220. package/components/button.js.map +0 -1
  221. package/components/checkbox.d.ts +0 -3
  222. package/components/checkbox.js +0 -14
  223. package/components/checkbox.js.map +0 -1
  224. package/components/chip.d.ts +0 -3
  225. package/components/chip.js +0 -12
  226. package/components/chip.js.map +0 -1
  227. package/components/comment-block.d.ts +0 -5
  228. package/components/comment-block.js +0 -25
  229. package/components/comment-block.js.map +0 -1
  230. package/components/date-picker.d.ts +0 -7
  231. package/components/date-picker.js +0 -33
  232. package/components/date-picker.js.map +0 -1
  233. package/components/dialog.d.ts +0 -3
  234. package/components/dialog.js +0 -28
  235. package/components/dialog.js.map +0 -1
  236. package/components/divider.d.ts +0 -3
  237. package/components/divider.js +0 -10
  238. package/components/divider.js.map +0 -1
  239. package/components/drag-handle.d.ts +0 -3
  240. package/components/drag-handle.js +0 -11
  241. package/components/drag-handle.js.map +0 -1
  242. package/components/dropdown.d.ts +0 -4
  243. package/components/dropdown.js +0 -22
  244. package/components/dropdown.js.map +0 -1
  245. package/components/expansion-panel.d.ts +0 -7
  246. package/components/expansion-panel.js +0 -33
  247. package/components/expansion-panel.js.map +0 -1
  248. package/components/flag.d.ts +0 -3
  249. package/components/flag.js +0 -11
  250. package/components/flag.js.map +0 -1
  251. package/components/flex-box.d.ts +0 -3
  252. package/components/flex-box.js +0 -11
  253. package/components/flex-box.js.map +0 -1
  254. package/components/generic-block.d.ts +0 -4
  255. package/components/generic-block.js +0 -20
  256. package/components/generic-block.js.map +0 -1
  257. package/components/grid.d.ts +0 -3
  258. package/components/grid.js +0 -10
  259. package/components/grid.js.map +0 -1
  260. package/components/heading.d.ts +0 -4
  261. package/components/heading.js +0 -11
  262. package/components/heading.js.map +0 -1
  263. package/components/icon.d.ts +0 -3
  264. package/components/icon.js +0 -10
  265. package/components/icon.js.map +0 -1
  266. package/components/image-block.d.ts +0 -4
  267. package/components/image-block.js +0 -14
  268. package/components/image-block.js.map +0 -1
  269. package/components/input-helper.d.ts +0 -3
  270. package/components/input-helper.js +0 -10
  271. package/components/input-helper.js.map +0 -1
  272. package/components/input-label.d.ts +0 -3
  273. package/components/input-label.js +0 -10
  274. package/components/input-label.js.map +0 -1
  275. package/components/lightbox.d.ts +0 -7
  276. package/components/lightbox.js +0 -28
  277. package/components/lightbox.js.map +0 -1
  278. package/components/link-preview.d.ts +0 -5
  279. package/components/link-preview.js +0 -15
  280. package/components/link-preview.js.map +0 -1
  281. package/components/link.d.ts +0 -3
  282. package/components/link.js +0 -12
  283. package/components/link.js.map +0 -1
  284. package/components/list.d.ts +0 -3
  285. package/components/list.js +0 -15
  286. package/components/list.js.map +0 -1
  287. package/components/message.d.ts +0 -3
  288. package/components/message.js +0 -11
  289. package/components/message.js.map +0 -1
  290. package/components/mosaic.d.ts +0 -4
  291. package/components/mosaic.js +0 -14
  292. package/components/mosaic.js.map +0 -1
  293. package/components/notification.d.ts +0 -3
  294. package/components/notification.js +0 -18
  295. package/components/notification.js.map +0 -1
  296. package/components/popover.d.ts +0 -3
  297. package/components/popover.js +0 -16
  298. package/components/popover.js.map +0 -1
  299. package/components/post-block.d.ts +0 -4
  300. package/components/post-block.js +0 -15
  301. package/components/post-block.js.map +0 -1
  302. package/components/progress-tracker.d.ts +0 -3
  303. package/components/progress-tracker.js +0 -17
  304. package/components/progress-tracker.js.map +0 -1
  305. package/components/progress.d.ts +0 -3
  306. package/components/progress.js +0 -10
  307. package/components/progress.js.map +0 -1
  308. package/components/radio-button.d.ts +0 -3
  309. package/components/radio-button.js +0 -13
  310. package/components/radio-button.js.map +0 -1
  311. package/components/select.d.ts +0 -7
  312. package/components/select.js +0 -32
  313. package/components/select.js.map +0 -1
  314. package/components/side-navigation.d.ts +0 -7
  315. package/components/side-navigation.js +0 -26
  316. package/components/side-navigation.js.map +0 -1
  317. package/components/skeleton.d.ts +0 -3
  318. package/components/skeleton.js +0 -10
  319. package/components/skeleton.js.map +0 -1
  320. package/components/slider.d.ts +0 -3
  321. package/components/slider.js +0 -13
  322. package/components/slider.js.map +0 -1
  323. package/components/slideshow.d.ts +0 -7
  324. package/components/slideshow.js +0 -30
  325. package/components/slideshow.js.map +0 -1
  326. package/components/switch.d.ts +0 -3
  327. package/components/switch.js +0 -13
  328. package/components/switch.js.map +0 -1
  329. package/components/table.d.ts +0 -3
  330. package/components/table.js +0 -12
  331. package/components/table.js.map +0 -1
  332. package/components/tabs.d.ts +0 -4
  333. package/components/tabs.js +0 -15
  334. package/components/tabs.js.map +0 -1
  335. package/components/text-field.d.ts +0 -7
  336. package/components/text-field.js +0 -27
  337. package/components/text-field.js.map +0 -1
  338. package/components/text.d.ts +0 -3
  339. package/components/text.js +0 -10
  340. package/components/text.js.map +0 -1
  341. package/components/thumbnail.d.ts +0 -4
  342. package/components/thumbnail.js +0 -13
  343. package/components/thumbnail.js.map +0 -1
  344. package/components/toolbar.d.ts +0 -3
  345. package/components/toolbar.js +0 -9
  346. package/components/toolbar.js.map +0 -1
  347. package/components/tooltip.d.ts +0 -4
  348. package/components/tooltip.js +0 -19
  349. package/components/tooltip.js.map +0 -1
  350. package/components/uploader.d.ts +0 -3
  351. package/components/uploader.js +0 -11
  352. package/components/uploader.js.map +0 -1
  353. package/components/user-block.d.ts +0 -5
  354. package/components/user-block.js +0 -17
  355. package/components/user-block.js.map +0 -1
  356. package/components.d.ts +0 -2
  357. package/components.js +0 -156
  358. package/components.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"13e759f3.js","sources":["../../src/components/date-picker/constants.ts","../../../lumx-core/src/js/date-picker.ts","../../src/components/date-picker/DatePickerControlled.tsx","../../src/components/date-picker/DatePicker.tsx","../../src/components/date-picker/DatePickerField.tsx"],"sourcesContent":["import { getRootClassName } from '@lumx/react/utils/className';\n\n/**\n * Component display name.\n */\nexport const COMPONENT_NAME = 'DatePicker';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n","import range from 'lodash/range';\nimport mMoment, { Moment } from 'moment';\nimport { extendMoment } from 'moment-range';\n\nconst moment = extendMoment(mMoment as any);\n\nconst DAYS_PER_WEEK = 7;\n\ninterface AnnotatedDate {\n date: Moment;\n isDisplayed: boolean;\n isClickable: boolean;\n isToday: boolean;\n}\n\n/**\n * Get the list of days in a week based on locale.\n *\n * @param locale The locale using to generate the order of days in a week.\n * @return The list of days in a week based on locale.\n */\nexport function getWeekDays(locale: string): Moment[] {\n return range(DAYS_PER_WEEK).map((_, i) => moment().locale(locale).weekday(i));\n}\n\n/**\n * Get month calendar based on locale and start date.\n *\n * @param locale The locale using to generate the order of days in a week.\n * @param selectedMonth The selected month.\n * @return The list of days in a week based on locale.\n */\nexport function getMonthCalendar(locale: string, selectedMonth?: Moment): Moment[] {\n const firstDayOfMonth = moment(selectedMonth).startOf('month');\n const endDayOfMonth = moment(selectedMonth).endOf('month');\n // The first day of the week depends on the locale used. In FR the first day is a monday but in EN the first day is sunday\n const firstDay = firstDayOfMonth.locale(locale).startOf('week');\n const monthRange = moment.range(firstDay.toDate(), endDayOfMonth.toDate());\n\n return Array.from(monthRange.by('day'));\n}\n\n/**\n * Get month calendar based on locale and start date.\n * Each day is annotated to know if they are displayed and/or clickable.\n *\n * @param locale The locale using to generate the order of days in a week.\n * @param minDate The first selectable date.\n * @param maxDate The last selectable date.\n * @param selectedMonth The selected month.\n * @return The list of days in a week based on locale.\n */\nexport function getAnnotatedMonthCalendar(\n locale: string,\n minDate?: Date,\n maxDate?: Date,\n selectedMonth?: Moment,\n): AnnotatedDate[] {\n const month = moment(selectedMonth).locale(locale).month();\n\n const clickableRange = moment.range(minDate as Date, maxDate as Date);\n\n return getMonthCalendar(locale, selectedMonth).map((date) => {\n return {\n date,\n isClickable: clickableRange.contains(date),\n isDisplayed: date.month() === month,\n isToday: date.isSame(moment(), 'day'),\n };\n });\n}\n","import React, { forwardRef } from 'react';\nimport moment from 'moment';\nimport classNames from 'classnames';\nimport { DatePickerProps, Emphasis, IconButton, Toolbar } from '@lumx/react';\nimport { mdiChevronLeft, mdiChevronRight } from '@lumx/icons';\nimport { getAnnotatedMonthCalendar, getWeekDays } from '@lumx/core/js/date-picker';\nimport { Comp } from '@lumx/react/utils/type';\nimport { CLASSNAME } from './constants';\n\n/**\n * Defines the props of the component.\n */\nexport interface DatePickerControlledProps extends DatePickerProps {\n /** Selected month to display. */\n selectedMonth: Date;\n /** On previous month change callback. */\n onPrevMonthChange(): void;\n /** On next month change callback. */\n onNextMonthChange(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'DatePickerControlled';\n\n/**\n * DatePickerControlled component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const DatePickerControlled: Comp<DatePickerControlledProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n locale,\n maxDate,\n minDate,\n nextButtonProps,\n onChange,\n onNextMonthChange,\n onPrevMonthChange,\n previousButtonProps,\n selectedMonth,\n todayOrSelectedDateRef,\n value,\n } = props;\n const days = React.useMemo(() => {\n return getAnnotatedMonthCalendar(locale, minDate, maxDate, moment(selectedMonth));\n }, [locale, minDate, maxDate, selectedMonth]);\n\n const weekDays = React.useMemo(() => {\n return getWeekDays(locale);\n }, [locale]);\n\n return (\n <div ref={ref} className={`${CLASSNAME}`}>\n <Toolbar\n className={`${CLASSNAME}__toolbar`}\n after={\n <IconButton\n {...nextButtonProps}\n emphasis={Emphasis.low}\n icon={mdiChevronRight}\n onClick={onNextMonthChange}\n />\n }\n before={\n <IconButton\n {...previousButtonProps}\n emphasis={Emphasis.low}\n icon={mdiChevronLeft}\n onClick={onPrevMonthChange}\n />\n }\n label={\n <span className={`${CLASSNAME}__month`}>\n {moment(selectedMonth).locale(locale).format('MMMM YYYY')}\n </span>\n }\n />\n <div className={`${CLASSNAME}__calendar`}>\n <div className={`${CLASSNAME}__week-days ${CLASSNAME}__days-wrapper`}>\n {weekDays.map((weekDay) => (\n <div key={weekDay.unix()} className={`${CLASSNAME}__day-wrapper`}>\n <span className={`${CLASSNAME}__week-day`}>\n {weekDay.format('dddd').slice(0, 1).toLocaleUpperCase()}\n </span>\n </div>\n ))}\n </div>\n\n <div className={`${CLASSNAME}__month-days ${CLASSNAME}__days-wrapper`}>\n {days.map((annotatedDate) => {\n if (annotatedDate.isDisplayed) {\n return (\n <div key={annotatedDate.date.unix()} className={`${CLASSNAME}__day-wrapper`}>\n <button\n ref={\n (value && annotatedDate.date.isSame(value, 'day')) ||\n (!value && annotatedDate.isToday)\n ? todayOrSelectedDateRef\n : null\n }\n className={classNames(`${CLASSNAME}__month-day`, {\n [`${CLASSNAME}__month-day--is-selected`]:\n value && annotatedDate.date.isSame(value, 'day'),\n [`${CLASSNAME}__month-day--is-today`]:\n annotatedDate.isClickable && annotatedDate.isToday,\n })}\n disabled={!annotatedDate.isClickable}\n type=\"button\"\n onClick={() => onChange(moment(annotatedDate.date).toDate())}\n >\n <span>{annotatedDate.date.format('DD')}</span>\n </button>\n </div>\n );\n }\n return <div key={annotatedDate.date.unix()} className={`${CLASSNAME}__day-wrapper`} />;\n })}\n </div>\n </div>\n </div>\n );\n});\nDatePickerControlled.displayName = COMPONENT_NAME;\nDatePickerControlled.className = CLASSNAME;\n","import moment from 'moment';\nimport React, { forwardRef, useState } from 'react';\nimport { Comp } from '@lumx/react/utils/type';\nimport { CLASSNAME, COMPONENT_NAME } from './constants';\nimport { DatePickerControlled } from './DatePickerControlled';\nimport { DatePickerProps } from './types';\n\n/**\n * DatePicker component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const DatePicker: Comp<DatePickerProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { defaultMonth, locale, value, onChange, ...forwardedProps } = props;\n let castedValue;\n if (value) {\n castedValue = moment(value);\n } else if (defaultMonth) {\n castedValue = moment(defaultMonth);\n }\n if (castedValue && !castedValue.isValid()) {\n // eslint-disable-next-line no-console\n console.warn(`[@lumx/react/DatePicker] Invalid date provided ${castedValue}`);\n }\n const selectedDay = castedValue && castedValue.isValid() ? castedValue : moment();\n\n const [monthOffset, setMonthOffset] = useState(0);\n\n const setPrevMonth = () => setMonthOffset(monthOffset - 1);\n const setNextMonth = () => setMonthOffset(monthOffset + 1);\n\n const onDatePickerChange = (newDate?: Date) => {\n onChange(newDate);\n setMonthOffset(0);\n };\n\n const selectedMonth = moment(selectedDay).locale(locale).add(monthOffset, 'months').toDate();\n\n return (\n <DatePickerControlled\n ref={ref}\n {...forwardedProps}\n defaultMonth={defaultMonth}\n locale={locale}\n value={value}\n onPrevMonthChange={setPrevMonth}\n onNextMonthChange={setNextMonth}\n selectedMonth={selectedMonth}\n onChange={onDatePickerChange}\n />\n );\n});\nDatePicker.displayName = COMPONENT_NAME;\nDatePicker.className = CLASSNAME;\n","import { DatePicker, Placement, Popover, TextField, IconButtonProps } from '@lumx/react';\nimport { useFocusTrap } from '@lumx/react/hooks/useFocusTrap';\n\nimport moment from 'moment';\n\nimport React, { forwardRef, SyntheticEvent, useCallback, useRef, useState } from 'react';\n\nimport { useFocus } from '@lumx/react/hooks/useFocus';\nimport { Comp, GenericProps } from '@lumx/react/utils/type';\n\n/**\n * Defines the props of the component.\n */\nexport interface DatePickerFieldProps extends GenericProps {\n /** Default month. */\n defaultMonth?: Date;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Locale (language or region) to use. */\n locale: string;\n /** Date after which dates can't be selected. */\n maxDate?: Date;\n /** Date before which dates can't be selected. */\n minDate?: Date;\n /** Native input name property. */\n name?: string;\n /** Props to pass to the next month button (minus those already set by the DatePickerControlled props). */\n nextButtonProps: Pick<IconButtonProps, 'label'> & Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis'>;\n /** Props to pass to the previous month button (minus those already set by the DatePickerControlled props). */\n previousButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis'>;\n /** Currently selected date. */\n value: Date | undefined;\n /** On change callback. */\n onChange(value: Date | undefined, name?: string, event?: SyntheticEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'DatePickerField';\n\n/**\n * DatePickerField component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const DatePickerField: Comp<DatePickerFieldProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n defaultMonth,\n disabled,\n isDisabled = disabled,\n locale,\n maxDate,\n minDate,\n name,\n nextButtonProps,\n onChange,\n previousButtonProps,\n value,\n ...forwardedProps\n } = props;\n const [wrapperElement, setWrapperElement] = useState<HTMLDivElement | null>(null);\n const anchorRef = useRef(null);\n\n const [isOpen, setIsOpen] = useState(false);\n\n const toggleSimpleMenu = () => {\n setIsOpen(!isOpen);\n };\n\n const onClose = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n useFocus(anchorRef.current, isOpen);\n const handleKeyboardNav = (evt: React.KeyboardEvent) => {\n if ((evt.key === 'Enter' || evt.key === ' ') && toggleSimpleMenu) {\n toggleSimpleMenu();\n }\n };\n\n // Handle focus trap.\n const [todayOrSelectedDate, setTodayOrSelectedDate] = useState<HTMLButtonElement | null>(null);\n useFocusTrap(isOpen && wrapperElement, todayOrSelectedDate);\n\n const onTextFieldChange = (textFieldValue: string, textFieldName?: string, event?: SyntheticEvent) => {\n if (!textFieldValue) {\n onChange(undefined, textFieldName, event);\n }\n };\n\n const onDatePickerChange = (newDate?: Date) => {\n onChange(newDate, name);\n onClose();\n };\n\n return (\n <>\n <TextField\n ref={ref}\n {...forwardedProps}\n name={name}\n forceFocusStyle={isOpen}\n textFieldRef={anchorRef}\n value={value ? moment(value).locale(locale).format('LL') : ''}\n onClick={toggleSimpleMenu}\n onChange={onTextFieldChange}\n onKeyPress={handleKeyboardNav}\n isDisabled={isDisabled}\n readOnly\n />\n {isOpen ? (\n <Popover\n anchorRef={anchorRef}\n placement={Placement.BOTTOM_START}\n isOpen={isOpen}\n onClose={onClose}\n closeOnClickAway\n closeOnEscape\n >\n <DatePicker\n ref={setWrapperElement}\n locale={locale}\n maxDate={maxDate}\n minDate={minDate}\n value={value}\n onChange={onDatePickerChange}\n todayOrSelectedDateRef={setTodayOrSelectedDate}\n defaultMonth={defaultMonth}\n nextButtonProps={nextButtonProps}\n previousButtonProps={previousButtonProps}\n />\n </Popover>\n ) : null}\n </>\n );\n});\nDatePickerField.displayName = COMPONENT_NAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","moment","extendMoment","mMoment","DAYS_PER_WEEK","getWeekDays","locale","range","map","_","i","weekday","getMonthCalendar","selectedMonth","firstDayOfMonth","startOf","endDayOfMonth","endOf","firstDay","monthRange","toDate","Array","from","by","getAnnotatedMonthCalendar","minDate","maxDate","month","clickableRange","date","isClickable","contains","isDisplayed","isToday","isSame","DatePickerControlled","forwardRef","props","ref","nextButtonProps","onChange","onNextMonthChange","onPrevMonthChange","previousButtonProps","todayOrSelectedDateRef","value","days","React","useMemo","weekDays","Emphasis","low","mdiChevronRight","mdiChevronLeft","format","weekDay","unix","slice","toLocaleUpperCase","annotatedDate","classNames","displayName","className","DatePicker","defaultMonth","forwardedProps","castedValue","isValid","console","warn","selectedDay","useState","monthOffset","setMonthOffset","setPrevMonth","setNextMonth","onDatePickerChange","newDate","add","DatePickerField","disabled","isDisabled","name","wrapperElement","setWrapperElement","anchorRef","useRef","isOpen","setIsOpen","toggleSimpleMenu","onClose","useCallback","useFocus","current","handleKeyboardNav","evt","key","todayOrSelectedDate","setTodayOrSelectedDate","useFocusTrap","onTextFieldChange","textFieldValue","textFieldName","event","undefined","Placement","BOTTOM_START"],"mappings":";;;;;;;;;;;;;;AAEA;;;;AAGO,IAAMA,cAAc,GAAG,YAAvB;AAEP;;;;AAGO,IAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAD,CAAlC;;ACNP,IAAMG,MAAM,GAAGC,YAAY,CAACC,QAAD,CAA3B;AAEA,IAAMC,aAAa,GAAG,CAAtB;;AASA;;;;;;AAMO,SAASC,WAAT,CAAqBC,MAArB,EAA+C;AAClD,SAAOC,KAAK,CAACH,aAAD,CAAL,CAAqBI,GAArB,CAAyB,UAACC,CAAD,EAAIC,CAAJ;AAAA,WAAUT,MAAM,GAAGK,MAAT,CAAgBA,MAAhB,EAAwBK,OAAxB,CAAgCD,CAAhC,CAAV;AAAA,GAAzB,CAAP;AACH;AAED;;;;;;;;AAOO,SAASE,gBAAT,CAA0BN,MAA1B,EAA0CO,aAA1C,EAA4E;AAC/E,MAAMC,eAAe,GAAGb,MAAM,CAACY,aAAD,CAAN,CAAsBE,OAAtB,CAA8B,OAA9B,CAAxB;AACA,MAAMC,aAAa,GAAGf,MAAM,CAACY,aAAD,CAAN,CAAsBI,KAAtB,CAA4B,OAA5B,CAAtB,CAF+E;;AAI/E,MAAMC,QAAQ,GAAGJ,eAAe,CAACR,MAAhB,CAAuBA,MAAvB,EAA+BS,OAA/B,CAAuC,MAAvC,CAAjB;AACA,MAAMI,UAAU,GAAGlB,MAAM,CAACM,KAAP,CAAaW,QAAQ,CAACE,MAAT,EAAb,EAAgCJ,aAAa,CAACI,MAAd,EAAhC,CAAnB;AAEA,SAAOC,KAAK,CAACC,IAAN,CAAWH,UAAU,CAACI,EAAX,CAAc,KAAd,CAAX,CAAP;AACH;AAED;;;;;;;;;;;AAUO,SAASC,yBAAT,CACHlB,MADG,EAEHmB,OAFG,EAGHC,OAHG,EAIHb,aAJG,EAKY;AACf,MAAMc,KAAK,GAAG1B,MAAM,CAACY,aAAD,CAAN,CAAsBP,MAAtB,CAA6BA,MAA7B,EAAqCqB,KAArC,EAAd;AAEA,MAAMC,cAAc,GAAG3B,MAAM,CAACM,KAAP,CAAakB,OAAb,EAA8BC,OAA9B,CAAvB;AAEA,SAAOd,gBAAgB,CAACN,MAAD,EAASO,aAAT,CAAhB,CAAwCL,GAAxC,CAA4C,UAACqB,IAAD,EAAU;AACzD,WAAO;AACHA,MAAAA,IAAI,EAAJA,IADG;AAEHC,MAAAA,WAAW,EAAEF,cAAc,CAACG,QAAf,CAAwBF,IAAxB,CAFV;AAGHG,MAAAA,WAAW,EAAEH,IAAI,CAACF,KAAL,OAAiBA,KAH3B;AAIHM,MAAAA,OAAO,EAAEJ,IAAI,CAACK,MAAL,CAAYjC,MAAM,EAAlB,EAAsB,KAAtB;AAJN,KAAP;AAMH,GAPM,CAAP;AAQH;;AC7DD;;;;AAYA;;;AAGA,IAAMH,gBAAc,GAAG,sBAAvB;AAEA;;;;;;;;IAOaqC,oBAAqE,GAAGC,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MAExGhC,MAFwG,GAaxG+B,KAbwG,CAExG/B,MAFwG;AAAA,MAGxGoB,OAHwG,GAaxGW,KAbwG,CAGxGX,OAHwG;AAAA,MAIxGD,OAJwG,GAaxGY,KAbwG,CAIxGZ,OAJwG;AAAA,MAKxGc,eALwG,GAaxGF,KAbwG,CAKxGE,eALwG;AAAA,MAMxGC,QANwG,GAaxGH,KAbwG,CAMxGG,QANwG;AAAA,MAOxGC,iBAPwG,GAaxGJ,KAbwG,CAOxGI,iBAPwG;AAAA,MAQxGC,iBARwG,GAaxGL,KAbwG,CAQxGK,iBARwG;AAAA,MASxGC,mBATwG,GAaxGN,KAbwG,CASxGM,mBATwG;AAAA,MAUxG9B,aAVwG,GAaxGwB,KAbwG,CAUxGxB,aAVwG;AAAA,MAWxG+B,sBAXwG,GAaxGP,KAbwG,CAWxGO,sBAXwG;AAAA,MAYxGC,KAZwG,GAaxGR,KAbwG,CAYxGQ,KAZwG;AAc5G,MAAMC,IAAI,GAAGC,KAAK,CAACC,OAAN,CAAc,YAAM;AAC7B,WAAOxB,yBAAyB,CAAClB,MAAD,EAASmB,OAAT,EAAkBC,OAAlB,EAA2BzB,QAAM,CAACY,aAAD,CAAjC,CAAhC;AACH,GAFY,EAEV,CAACP,MAAD,EAASmB,OAAT,EAAkBC,OAAlB,EAA2Bb,aAA3B,CAFU,CAAb;AAIA,MAAMoC,QAAQ,GAAGF,KAAK,CAACC,OAAN,CAAc,YAAM;AACjC,WAAO3C,WAAW,CAACC,MAAD,CAAlB;AACH,GAFgB,EAEd,CAACA,MAAD,CAFc,CAAjB;AAIA,SACI;AAAK,IAAA,GAAG,EAAEgC,GAAV;AAAe,IAAA,SAAS,YAAKvC,SAAL;AAAxB,KACI,oBAAC,OAAD;AACI,IAAA,SAAS,YAAKA,SAAL,cADb;AAEI,IAAA,KAAK,EACD,oBAAC,UAAD,eACQwC,eADR;AAEI,MAAA,QAAQ,EAAEW,QAAQ,CAACC,GAFvB;AAGI,MAAA,IAAI,EAAEC,eAHV;AAII,MAAA,OAAO,EAAEX;AAJb,OAHR;AAUI,IAAA,MAAM,EACF,oBAAC,UAAD,eACQE,mBADR;AAEI,MAAA,QAAQ,EAAEO,QAAQ,CAACC,GAFvB;AAGI,MAAA,IAAI,EAAEE,cAHV;AAII,MAAA,OAAO,EAAEX;AAJb,OAXR;AAkBI,IAAA,KAAK,EACD;AAAM,MAAA,SAAS,YAAK3C,SAAL;AAAf,OACKE,QAAM,CAACY,aAAD,CAAN,CAAsBP,MAAtB,CAA6BA,MAA7B,EAAqCgD,MAArC,CAA4C,WAA5C,CADL;AAnBR,IADJ,EAyBI;AAAK,IAAA,SAAS,YAAKvD,SAAL;AAAd,KACI;AAAK,IAAA,SAAS,YAAKA,SAAL,yBAA6BA,SAA7B;AAAd,KACKkD,QAAQ,CAACzC,GAAT,CAAa,UAAC+C,OAAD;AAAA,WACV;AAAK,MAAA,GAAG,EAAEA,OAAO,CAACC,IAAR,EAAV;AAA0B,MAAA,SAAS,YAAKzD,SAAL;AAAnC,OACI;AAAM,MAAA,SAAS,YAAKA,SAAL;AAAf,OACKwD,OAAO,CAACD,MAAR,CAAe,MAAf,EAAuBG,KAAvB,CAA6B,CAA7B,EAAgC,CAAhC,EAAmCC,iBAAnC,EADL,CADJ,CADU;AAAA,GAAb,CADL,CADJ,EAWI;AAAK,IAAA,SAAS,YAAK3D,SAAL,0BAA8BA,SAA9B;AAAd,KACK+C,IAAI,CAACtC,GAAL,CAAS,UAACmD,aAAD,EAAmB;AACzB,QAAIA,aAAa,CAAC3B,WAAlB,EAA+B;AAAA;;AAC3B,aACI;AAAK,QAAA,GAAG,EAAE2B,aAAa,CAAC9B,IAAd,CAAmB2B,IAAnB,EAAV;AAAqC,QAAA,SAAS,YAAKzD,SAAL;AAA9C,SACI;AACI,QAAA,GAAG,EACE8C,KAAK,IAAIc,aAAa,CAAC9B,IAAd,CAAmBK,MAAnB,CAA0BW,KAA1B,EAAiC,KAAjC,CAAV,IACC,CAACA,KAAD,IAAUc,aAAa,CAAC1B,OADzB,GAEMW,sBAFN,GAGM,IALd;AAOI,QAAA,SAAS,EAAEgB,UAAU,WAAI7D,SAAJ,4EACbA,SADa,+BAEb8C,KAAK,IAAIc,aAAa,CAAC9B,IAAd,CAAmBK,MAAnB,CAA0BW,KAA1B,EAAiC,KAAjC,CAFI,0CAGb9C,SAHa,4BAIb4D,aAAa,CAAC7B,WAAd,IAA6B6B,aAAa,CAAC1B,OAJ9B,gBAPzB;AAaI,QAAA,QAAQ,EAAE,CAAC0B,aAAa,CAAC7B,WAb7B;AAcI,QAAA,IAAI,EAAC,QAdT;AAeI,QAAA,OAAO,EAAE;AAAA,iBAAMU,QAAQ,CAACvC,QAAM,CAAC0D,aAAa,CAAC9B,IAAf,CAAN,CAA2BT,MAA3B,EAAD,CAAd;AAAA;AAfb,SAiBI,kCAAOuC,aAAa,CAAC9B,IAAd,CAAmByB,MAAnB,CAA0B,IAA1B,CAAP,CAjBJ,CADJ,CADJ;AAuBH;;AACD,WAAO;AAAK,MAAA,GAAG,EAAEK,aAAa,CAAC9B,IAAd,CAAmB2B,IAAnB,EAAV;AAAqC,MAAA,SAAS,YAAKzD,SAAL;AAA9C,MAAP;AACH,GA3BA,CADL,CAXJ,CAzBJ,CADJ;AAsEH,CA5F8F;AA6F/FoC,oBAAoB,CAAC0B,WAArB,GAAmC/D,gBAAnC;AACAqC,oBAAoB,CAAC2B,SAArB,GAAiC/D,SAAjC;;ACxHA;;;;;;;IAOagE,UAAiD,GAAG3B,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MAChF0B,YADgF,GACnB3B,KADmB,CAChF2B,YADgF;AAAA,MAClE1D,MADkE,GACnB+B,KADmB,CAClE/B,MADkE;AAAA,MAC1DuC,KAD0D,GACnBR,KADmB,CAC1DQ,KAD0D;AAAA,MACnDL,QADmD,GACnBH,KADmB,CACnDG,QADmD;AAAA,MACtCyB,cADsC,4BACnB5B,KADmB;;AAExF,MAAI6B,WAAJ;;AACA,MAAIrB,KAAJ,EAAW;AACPqB,IAAAA,WAAW,GAAGjE,QAAM,CAAC4C,KAAD,CAApB;AACH,GAFD,MAEO,IAAImB,YAAJ,EAAkB;AACrBE,IAAAA,WAAW,GAAGjE,QAAM,CAAC+D,YAAD,CAApB;AACH;;AACD,MAAIE,WAAW,IAAI,CAACA,WAAW,CAACC,OAAZ,EAApB,EAA2C;AACvC;AACAC,IAAAA,OAAO,CAACC,IAAR,0DAA+DH,WAA/D;AACH;;AACD,MAAMI,WAAW,GAAGJ,WAAW,IAAIA,WAAW,CAACC,OAAZ,EAAf,GAAuCD,WAAvC,GAAqDjE,QAAM,EAA/E;;AAZwF,kBAclDsE,QAAQ,CAAC,CAAD,CAd0C;AAAA;AAAA,MAcjFC,WAdiF;AAAA,MAcpEC,cAdoE;;AAgBxF,MAAMC,YAAY,GAAG,SAAfA,YAAe;AAAA,WAAMD,cAAc,CAACD,WAAW,GAAG,CAAf,CAApB;AAAA,GAArB;;AACA,MAAMG,YAAY,GAAG,SAAfA,YAAe;AAAA,WAAMF,cAAc,CAACD,WAAW,GAAG,CAAf,CAApB;AAAA,GAArB;;AAEA,MAAMI,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,OAAD,EAAoB;AAC3CrC,IAAAA,QAAQ,CAACqC,OAAD,CAAR;AACAJ,IAAAA,cAAc,CAAC,CAAD,CAAd;AACH,GAHD;;AAKA,MAAM5D,aAAa,GAAGZ,QAAM,CAACqE,WAAD,CAAN,CAAoBhE,MAApB,CAA2BA,MAA3B,EAAmCwE,GAAnC,CAAuCN,WAAvC,EAAoD,QAApD,EAA8DpD,MAA9D,EAAtB;AAEA,SACI,oBAAC,oBAAD;AACI,IAAA,GAAG,EAAEkB;AADT,KAEQ2B,cAFR;AAGI,IAAA,YAAY,EAAED,YAHlB;AAII,IAAA,MAAM,EAAE1D,MAJZ;AAKI,IAAA,KAAK,EAAEuC,KALX;AAMI,IAAA,iBAAiB,EAAE6B,YANvB;AAOI,IAAA,iBAAiB,EAAEC,YAPvB;AAQI,IAAA,aAAa,EAAE9D,aARnB;AASI,IAAA,QAAQ,EAAE+D;AATd,KADJ;AAaH,CAvC0E;AAwC3Eb,UAAU,CAACF,WAAX,GAAyB/D,cAAzB;AACAiE,UAAU,CAACD,SAAX,GAAuB/D,SAAvB;;AClBA;;;AAGA,IAAMD,gBAAc,GAAG,iBAAvB;AAEA;;;;;;;;IAOaiF,eAA2D,GAAG3C,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MAE9F0B,YAF8F,GAc9F3B,KAd8F,CAE9F2B,YAF8F;AAAA,MAG9FgB,QAH8F,GAc9F3C,KAd8F,CAG9F2C,QAH8F;AAAA,0BAc9F3C,KAd8F,CAI9F4C,UAJ8F;AAAA,MAI9FA,UAJ8F,kCAIjFD,QAJiF;AAAA,MAK9F1E,MAL8F,GAc9F+B,KAd8F,CAK9F/B,MAL8F;AAAA,MAM9FoB,OAN8F,GAc9FW,KAd8F,CAM9FX,OAN8F;AAAA,MAO9FD,OAP8F,GAc9FY,KAd8F,CAO9FZ,OAP8F;AAAA,MAQ9FyD,IAR8F,GAc9F7C,KAd8F,CAQ9F6C,IAR8F;AAAA,MAS9F3C,eAT8F,GAc9FF,KAd8F,CAS9FE,eAT8F;AAAA,MAU9FC,QAV8F,GAc9FH,KAd8F,CAU9FG,QAV8F;AAAA,MAW9FG,mBAX8F,GAc9FN,KAd8F,CAW9FM,mBAX8F;AAAA,MAY9FE,KAZ8F,GAc9FR,KAd8F,CAY9FQ,KAZ8F;AAAA,MAa3FoB,cAb2F,4BAc9F5B,KAd8F;;AAAA,kBAetDkC,QAAQ,CAAwB,IAAxB,CAf8C;AAAA;AAAA,MAe3FY,cAf2F;AAAA,MAe3EC,iBAf2E;;AAgBlG,MAAMC,SAAS,GAAGC,MAAM,CAAC,IAAD,CAAxB;;AAhBkG,mBAkBtEf,QAAQ,CAAC,KAAD,CAlB8D;AAAA;AAAA,MAkB3FgB,MAlB2F;AAAA,MAkBnFC,SAlBmF;;AAoBlG,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAM;AAC3BD,IAAAA,SAAS,CAAC,CAACD,MAAF,CAAT;AACH,GAFD;;AAIA,MAAMG,OAAO,GAAGC,WAAW,CAAC,YAAM;AAC9BH,IAAAA,SAAS,CAAC,KAAD,CAAT;AACH,GAF0B,EAExB,EAFwB,CAA3B;AAIAI,EAAAA,QAAQ,CAACP,SAAS,CAACQ,OAAX,EAAoBN,MAApB,CAAR;;AACA,MAAMO,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,GAAD,EAA8B;AACpD,QAAI,CAACA,GAAG,CAACC,GAAJ,KAAY,OAAZ,IAAuBD,GAAG,CAACC,GAAJ,KAAY,GAApC,KAA4CP,gBAAhD,EAAkE;AAC9DA,MAAAA,gBAAgB;AACnB;AACJ,GAJD,CA7BkG;;;AAAA,mBAoC5ClB,QAAQ,CAA2B,IAA3B,CApCoC;AAAA;AAAA,MAoC3F0B,mBApC2F;AAAA,MAoCtEC,sBApCsE;;AAqClGC,EAAAA,YAAY,CAACZ,MAAM,IAAIJ,cAAX,EAA2Bc,mBAA3B,CAAZ;;AAEA,MAAMG,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,cAAD,EAAyBC,aAAzB,EAAiDC,KAAjD,EAA4E;AAClG,QAAI,CAACF,cAAL,EAAqB;AACjB7D,MAAAA,QAAQ,CAACgE,SAAD,EAAYF,aAAZ,EAA2BC,KAA3B,CAAR;AACH;AACJ,GAJD;;AAMA,MAAM3B,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,OAAD,EAAoB;AAC3CrC,IAAAA,QAAQ,CAACqC,OAAD,EAAUK,IAAV,CAAR;AACAQ,IAAAA,OAAO;AACV,GAHD;;AAKA,SACI,0CACI,oBAAC,SAAD;AACI,IAAA,GAAG,EAAEpD;AADT,KAEQ2B,cAFR;AAGI,IAAA,IAAI,EAAEiB,IAHV;AAII,IAAA,eAAe,EAAEK,MAJrB;AAKI,IAAA,YAAY,EAAEF,SALlB;AAMI,IAAA,KAAK,EAAExC,KAAK,GAAG5C,QAAM,CAAC4C,KAAD,CAAN,CAAcvC,MAAd,CAAqBA,MAArB,EAA6BgD,MAA7B,CAAoC,IAApC,CAAH,GAA+C,EAN/D;AAOI,IAAA,OAAO,EAAEmC,gBAPb;AAQI,IAAA,QAAQ,EAAEW,iBARd;AASI,IAAA,UAAU,EAAEN,iBAThB;AAUI,IAAA,UAAU,EAAEb,UAVhB;AAWI,IAAA,QAAQ;AAXZ,KADJ,EAcKM,MAAM,GACH,oBAAC,OAAD;AACI,IAAA,SAAS,EAAEF,SADf;AAEI,IAAA,SAAS,EAAEoB,SAAS,CAACC,YAFzB;AAGI,IAAA,MAAM,EAAEnB,MAHZ;AAII,IAAA,OAAO,EAAEG,OAJb;AAKI,IAAA,gBAAgB,MALpB;AAMI,IAAA,aAAa;AANjB,KAQI,oBAAC,UAAD;AACI,IAAA,GAAG,EAAEN,iBADT;AAEI,IAAA,MAAM,EAAE9E,MAFZ;AAGI,IAAA,OAAO,EAAEoB,OAHb;AAII,IAAA,OAAO,EAAED,OAJb;AAKI,IAAA,KAAK,EAAEoB,KALX;AAMI,IAAA,QAAQ,EAAE+B,kBANd;AAOI,IAAA,sBAAsB,EAAEsB,sBAP5B;AAQI,IAAA,YAAY,EAAElC,YARlB;AASI,IAAA,eAAe,EAAEzB,eATrB;AAUI,IAAA,mBAAmB,EAAEI;AAVzB,IARJ,CADG,GAsBH,IApCR,CADJ;AAwCH,CA1FoF;AA2FrFoC,eAAe,CAAClB,WAAhB,GAA8B/D,gBAA9B;;;;"}
@@ -1,151 +0,0 @@
1
- import { b as _objectWithoutProperties, c as _extends, _ as _objectSpread2 } from './6340c129.js';
2
- import { Theme, Size, Emphasis } from '../components.js';
3
- import React, { forwardRef, Children } from 'react';
4
- import { g as getRootClassName, c as classnames, h as handleBasicClasses, o as onEnterPressed } from './fd867c9d.js';
5
- import { I as Icon, i as mdiChevronUp, j as mdiChevronDown } from './a521723d.js';
6
- import isEmpty from 'lodash/isEmpty';
7
- import { r as renderLink } from './329a01d3.js';
8
- import { I as IconButton } from './377b2f44.js';
9
- import { i as isComponent } from './78ef8e34.js';
10
-
11
- /**
12
- * Defines the props of the component.
13
- */
14
-
15
- /**
16
- * Component display name.
17
- */
18
- var COMPONENT_NAME = 'SideNavigation';
19
- /**
20
- * Component default class name and class prefix.
21
- */
22
-
23
- var CLASSNAME = getRootClassName(COMPONENT_NAME);
24
- /**
25
- * SideNavigation component.
26
- *
27
- * @param props Component props.
28
- * @param ref Component ref.
29
- * @return React element.
30
- */
31
-
32
- var SideNavigation = forwardRef(function (props, ref) {
33
- var children = props.children,
34
- className = props.className,
35
- theme = props.theme,
36
- forwardedProps = _objectWithoutProperties(props, ["children", "className", "theme"]);
37
-
38
- var content = Children.toArray(children).filter(isComponent(SideNavigationItem));
39
- return React.createElement("ul", _extends({
40
- ref: ref
41
- }, forwardedProps, {
42
- className: classnames(className, theme === Theme.dark && 'lumx-color-font-light-N', handleBasicClasses({
43
- prefix: CLASSNAME
44
- }))
45
- }), content);
46
- });
47
- SideNavigation.displayName = COMPONENT_NAME;
48
- SideNavigation.className = CLASSNAME;
49
-
50
- /**
51
- * Defines the props of the component.
52
- */
53
-
54
- /**
55
- * Component display name.
56
- */
57
- var COMPONENT_NAME$1 = 'SideNavigationItem';
58
- /**
59
- * Component default class name and class prefix.
60
- */
61
-
62
- var CLASSNAME$1 = getRootClassName(COMPONENT_NAME$1);
63
- /**
64
- * Component default props.
65
- */
66
-
67
- var DEFAULT_PROPS = {
68
- emphasis: Emphasis.high,
69
- closeMode: 'unmount'
70
- };
71
- /**
72
- * SideNavigationItem component.
73
- *
74
- * @param props Component props.
75
- * @param ref Component ref.
76
- * @return React element.
77
- */
78
-
79
- var SideNavigationItem = forwardRef(function (props, ref) {
80
- var children = props.children,
81
- className = props.className,
82
- emphasis = props.emphasis,
83
- icon = props.icon,
84
- isOpen = props.isOpen,
85
- isSelected = props.isSelected,
86
- label = props.label,
87
- linkAs = props.linkAs,
88
- linkProps = props.linkProps,
89
- onActionClick = props.onActionClick,
90
- onClick = props.onClick,
91
- toggleButtonProps = props.toggleButtonProps,
92
- _props$closeMode = props.closeMode,
93
- closeMode = _props$closeMode === void 0 ? 'unmount' : _props$closeMode,
94
- forwardedProps = _objectWithoutProperties(props, ["children", "className", "emphasis", "icon", "isOpen", "isSelected", "label", "linkAs", "linkProps", "onActionClick", "onClick", "toggleButtonProps", "closeMode"]);
95
-
96
- var content = children && Children.toArray(children).filter(isComponent(SideNavigationItem));
97
- var hasContent = !isEmpty(content);
98
- var shouldSplitActions = Boolean(onActionClick);
99
- var showChildren = hasContent && isOpen;
100
- return React.createElement("li", _extends({
101
- ref: ref
102
- }, forwardedProps, {
103
- className: classnames(className, handleBasicClasses({
104
- emphasis: emphasis,
105
- isOpen: showChildren,
106
- isSelected: isSelected,
107
- prefix: CLASSNAME$1
108
- }))
109
- }), shouldSplitActions ? React.createElement("div", {
110
- className: "".concat(CLASSNAME$1, "__wrapper")
111
- }, renderLink(_objectSpread2({
112
- linkAs: linkAs
113
- }, linkProps, {
114
- className: "".concat(CLASSNAME$1, "__link"),
115
- onClick: onClick,
116
- tabIndex: 0
117
- }), icon && React.createElement(Icon, {
118
- className: "".concat(CLASSNAME$1, "__icon"),
119
- icon: icon,
120
- size: Size.xs
121
- }), React.createElement("span", null, label)), React.createElement(IconButton, _extends({}, toggleButtonProps, {
122
- className: "".concat(CLASSNAME$1, "__toggle"),
123
- icon: isOpen ? mdiChevronUp : mdiChevronDown,
124
- size: Size.m,
125
- emphasis: Emphasis.low,
126
- onClick: onActionClick
127
- }))) : renderLink(_objectSpread2({
128
- linkAs: linkAs
129
- }, linkProps, {
130
- className: "".concat(CLASSNAME$1, "__link"),
131
- tabIndex: 0,
132
- onClick: onClick,
133
- onKeyDown: onClick ? onEnterPressed(onClick) : undefined
134
- }), icon && React.createElement(Icon, {
135
- className: "".concat(CLASSNAME$1, "__icon"),
136
- icon: icon,
137
- size: Size.xs
138
- }), React.createElement("span", null, label), hasContent && React.createElement(Icon, {
139
- className: "".concat(CLASSNAME$1, "__chevron"),
140
- icon: isOpen ? mdiChevronUp : mdiChevronDown,
141
- size: Size.xs
142
- })), (closeMode === 'hide' || showChildren) && React.createElement("ul", {
143
- className: "".concat(CLASSNAME$1, "__children")
144
- }, content));
145
- });
146
- SideNavigationItem.displayName = COMPONENT_NAME$1;
147
- SideNavigationItem.className = CLASSNAME$1;
148
- SideNavigationItem.defaultProps = DEFAULT_PROPS;
149
-
150
- export { SideNavigation as S, SideNavigationItem as a };
151
- //# sourceMappingURL=158b46d5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"158b46d5.js","sources":["../../src/components/side-navigation/SideNavigation.tsx","../../src/components/side-navigation/SideNavigationItem.tsx"],"sourcesContent":["import React, { Children, forwardRef, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { SideNavigationItem, Theme } from '@lumx/react';\n\nimport { Comp, GenericProps, HasTheme, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\n\n/**\n * Defines the props of the component.\n */\nexport interface SideNavigationProps extends GenericProps, HasTheme {\n /** SideNavigationItem elements. */\n children: ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SideNavigation';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * SideNavigation component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SideNavigation: Comp<SideNavigationProps, HTMLUListElement> = forwardRef((props, ref) => {\n const { children, className, theme, ...forwardedProps } = props;\n const content = Children.toArray(children).filter(isComponent(SideNavigationItem));\n\n return (\n <ul\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n theme === Theme.dark && 'lumx-color-font-light-N',\n handleBasicClasses({ prefix: CLASSNAME }),\n )}\n >\n {content}\n </ul>\n );\n});\nSideNavigation.displayName = COMPONENT_NAME;\nSideNavigation.className = CLASSNAME;\n","import React, { Children, forwardRef, ReactNode } from 'react';\n\nimport classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { mdiChevronDown, mdiChevronUp } from '@lumx/icons';\n\nimport { Emphasis, Icon, Size, IconButton, IconButtonProps } from '@lumx/react';\n\nimport { Callback, Comp, GenericProps, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { onEnterPressed } from '@lumx/react/utils/event';\nimport { renderLink } from '@lumx/react/utils/renderLink';\n\n/**\n * Defines the props of the component.\n */\nexport interface SideNavigationItemProps extends GenericProps {\n /** SideNavigationItem elements. */\n children?: ReactNode;\n /** Emphasis variant. */\n emphasis?: Emphasis;\n /** Label content. */\n label: string | ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Whether the component is selected or not. */\n isSelected?: boolean;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n /** Props to pass to the link (minus those already set by the SideNavigationItem props). */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Props to pass to the toggle button (minus those already set by the SideNavigationItem props). */\n toggleButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color' | 'size'>;\n /**\n * Choose how the children are hidden when closed\n * ('hide' keeps the children in DOM but hide them, 'unmount' remove the children from the DOM).\n */\n closeMode?: 'hide' | 'unmount';\n /** On action button click callback. */\n onActionClick?(evt: React.MouseEvent): void;\n /** On click callback. */\n onClick?(evt: React.MouseEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SideNavigationItem';\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<SideNavigationItemProps> = {\n emphasis: Emphasis.high,\n closeMode: 'unmount',\n};\n\n/**\n * SideNavigationItem component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SideNavigationItem: Comp<SideNavigationItemProps, HTMLLIElement> = forwardRef((props, ref) => {\n const {\n children,\n className,\n emphasis,\n icon,\n isOpen,\n isSelected,\n label,\n linkAs,\n linkProps,\n onActionClick,\n onClick,\n toggleButtonProps,\n closeMode = 'unmount',\n ...forwardedProps\n } = props;\n\n const content = children && Children.toArray(children).filter(isComponent(SideNavigationItem));\n const hasContent = !isEmpty(content);\n const shouldSplitActions = Boolean(onActionClick);\n const showChildren = hasContent && isOpen;\n\n return (\n <li\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n emphasis,\n isOpen: showChildren,\n isSelected,\n prefix: CLASSNAME,\n }),\n )}\n >\n {shouldSplitActions ? (\n <div className={`${CLASSNAME}__wrapper`}>\n {renderLink(\n {\n linkAs,\n ...linkProps,\n className: `${CLASSNAME}__link`,\n onClick,\n tabIndex: 0,\n },\n icon && <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.xs} />,\n <span>{label}</span>,\n )}\n\n <IconButton\n {...toggleButtonProps}\n className={`${CLASSNAME}__toggle`}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n size={Size.m}\n emphasis={Emphasis.low}\n onClick={onActionClick}\n />\n </div>\n ) : (\n renderLink(\n {\n linkAs,\n ...linkProps,\n className: `${CLASSNAME}__link`,\n tabIndex: 0,\n onClick,\n onKeyDown: onClick ? onEnterPressed(onClick as Callback) : undefined,\n },\n icon && <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.xs} />,\n <span>{label}</span>,\n hasContent && (\n <Icon\n className={`${CLASSNAME}__chevron`}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n size={Size.xs}\n />\n ),\n )\n )}\n\n {(closeMode === 'hide' || showChildren) && <ul className={`${CLASSNAME}__children`}>{content}</ul>}\n </li>\n );\n});\nSideNavigationItem.displayName = COMPONENT_NAME;\nSideNavigationItem.className = CLASSNAME;\nSideNavigationItem.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","SideNavigation","forwardRef","props","ref","children","className","theme","forwardedProps","content","Children","toArray","filter","isComponent","SideNavigationItem","classNames","Theme","dark","handleBasicClasses","prefix","displayName","DEFAULT_PROPS","emphasis","Emphasis","high","closeMode","icon","isOpen","isSelected","label","linkAs","linkProps","onActionClick","onClick","toggleButtonProps","hasContent","isEmpty","shouldSplitActions","Boolean","showChildren","renderLink","tabIndex","Size","xs","mdiChevronUp","mdiChevronDown","m","low","onKeyDown","onEnterPressed","undefined","defaultProps"],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { l as GenericProps, k as Comp } from './eca6d4dc.js';
3
- import { P as Placement } from './599e250a.js';
4
-
5
- /** Position of the tooltip relative to the anchor element. */
6
- declare type TooltipPlacement = Extract<Placement, 'top' | 'right' | 'bottom' | 'left'>;
7
- /**
8
- * Defines the props of the component.
9
- */
10
- interface TooltipProps extends GenericProps {
11
- /** Anchor (element on which we activate the tooltip). */
12
- children: ReactNode;
13
- /** Delay (in ms) before closing the tooltip. */
14
- delay?: number;
15
- /** Whether the tooltip is displayed even without the mouse hovering the anchor. */
16
- forceOpen?: boolean;
17
- /** Label text. */
18
- label?: string | null | false;
19
- /** Placement of the tooltip relative to the anchor. */
20
- placement?: TooltipPlacement;
21
- }
22
- /**
23
- * Tooltip component.
24
- *
25
- * @param props Component props.
26
- * @param ref Component ref.
27
- * @return React element.
28
- */
29
- declare const Tooltip: Comp<TooltipProps, HTMLDivElement>;
30
-
31
- export { TooltipPlacement as T, TooltipProps as a, Tooltip as b };
@@ -1,43 +0,0 @@
1
- import React, { ReactNode } from 'react';
2
- import { A as Alignment, S as Size, V as VerticalAlignment, H as HorizontalAlignment, l as GenericProps, O as Orientation, k as Comp } from './eca6d4dc.js';
3
-
4
- declare type MarginAutoAlignment = Extract<Alignment, 'top' | 'bottom' | 'right' | 'left'>;
5
- declare type GapSize = Extract<Size, 'tiny' | 'regular' | 'medium' | 'big' | 'huge'>;
6
- declare type SpaceAlignment = Extract<Alignment, 'space-between' | 'space-evenly' | 'space-around'>;
7
- declare type FlexVerticalAlignment = VerticalAlignment | SpaceAlignment;
8
- declare 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 { FlexVerticalAlignment as F, GapSize as G, MarginAutoAlignment as M, FlexHorizontalAlignment as a, FlexBoxProps as b, FlexBox as c };
@@ -1,87 +0,0 @@
1
- import { e as _toConsumableArray } from './6340c129.js';
2
- import { useEffect } from 'react';
3
-
4
- var useRovingTabIndex = function useRovingTabIndex(_ref) {
5
- var parentRef = _ref.parentRef,
6
- elementSelector = _ref.elementSelector,
7
- keepTabIndex = _ref.keepTabIndex,
8
- onElementFocus = _ref.onElementFocus,
9
- _ref$extraDependencie = _ref.extraDependencies,
10
- extraDependencies = _ref$extraDependencie === void 0 ? [] : _ref$extraDependencie;
11
- useEffect(function () {
12
- var parent = parentRef === null || parentRef === void 0 ? void 0 : parentRef.current;
13
-
14
- if (!parent) {
15
- return undefined;
16
- }
17
-
18
- var elements = parent.querySelectorAll(elementSelector);
19
- var initialFocusableElement = parent === null || parent === void 0 ? void 0 : parent.querySelector("".concat(elementSelector, "[tabindex=\"0\"]"));
20
-
21
- var handleKeyDown = function handleKeyDown(index) {
22
- return function (evt) {
23
- var newTabFocus = index;
24
-
25
- if (!(evt.key === 'ArrowRight' || evt.key === 'ArrowLeft')) {
26
- return;
27
- }
28
-
29
- if (evt.key === 'ArrowRight') {
30
- // Move right
31
- newTabFocus += 1; // If we're at the end, go to the start
32
-
33
- if (newTabFocus >= elements.length) {
34
- newTabFocus = 0;
35
- }
36
- } else if (evt.key === 'ArrowLeft') {
37
- // Move left
38
- newTabFocus -= 1;
39
-
40
- if (newTabFocus < 0) {
41
- // If we're at the start, move to the end
42
- newTabFocus = elements.length - 1;
43
- }
44
- }
45
-
46
- var newElement = elements[newTabFocus];
47
- newElement === null || newElement === void 0 ? void 0 : newElement.focus(); // When an element is focused using roving tab index, trigger the onElementFocus callback
48
-
49
- if (newElement && onElementFocus) {
50
- onElementFocus(newElement);
51
- }
52
-
53
- if (keepTabIndex) {
54
- evt.currentTarget.setAttribute('tabindex', '-1');
55
- newElement === null || newElement === void 0 ? void 0 : newElement.setAttribute('tabindex', '0');
56
- }
57
- };
58
- };
59
-
60
- if ((elements === null || elements === void 0 ? void 0 : elements.length) > 0) {
61
- elements.forEach(function (el, key) {
62
- // if no element has tabindex set to 0, set the first element as focusable
63
- if (!initialFocusableElement && key === 0) {
64
- el.setAttribute('tabindex', '0'); // set all other to -1
65
- } else if (initialFocusableElement !== el) {
66
- el.setAttribute('tabindex', '-1');
67
- } // add event listener
68
-
69
-
70
- el.addEventListener('keydown', handleKeyDown(key));
71
- });
72
- } // Cleanup listeners
73
-
74
-
75
- return function () {
76
- if ((elements === null || elements === void 0 ? void 0 : elements.length) > 0) {
77
- elements.forEach(function (el, key) {
78
- el.removeEventListener('keydown', handleKeyDown(key));
79
- });
80
- }
81
- };
82
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
83
- [parentRef].concat(_toConsumableArray(extraDependencies)));
84
- };
85
-
86
- export { useRovingTabIndex as u };
87
- //# sourceMappingURL=20976405.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"20976405.js","sources":["../../src/hooks/useRovingTabIndex.tsx"],"sourcesContent":["import { RefObject, useEffect } from 'react';\n\ninterface UseRovingTabIndexOptions {\n parentRef: RefObject<HTMLElement>;\n elementSelector: string;\n keepTabIndex?: boolean;\n /** Action to trigger when an element is focused using roving tab index */\n onElementFocus?: (element: HTMLElement) => void;\n /** List of values to be used as extra dependencies of the useEffect */\n extraDependencies?: any[];\n}\n\nexport const useRovingTabIndex = ({\n parentRef,\n elementSelector,\n keepTabIndex,\n onElementFocus,\n extraDependencies = [],\n}: UseRovingTabIndexOptions): void => {\n useEffect(\n () => {\n const parent = parentRef?.current;\n if (!parent) {\n return undefined;\n }\n\n const elements = parent.querySelectorAll(elementSelector) as NodeListOf<HTMLElement>;\n const initialFocusableElement = parent?.querySelector(`${elementSelector}[tabindex=\"0\"]`);\n\n const handleKeyDown = (index: number) => (evt: KeyboardEvent) => {\n let newTabFocus = index;\n if (!(evt.key === 'ArrowRight' || evt.key === 'ArrowLeft')) {\n return;\n }\n\n if (evt.key === 'ArrowRight') {\n // Move right\n newTabFocus += 1;\n // If we're at the end, go to the start\n if (newTabFocus >= elements.length) {\n newTabFocus = 0;\n }\n } else if (evt.key === 'ArrowLeft') {\n // Move left\n newTabFocus -= 1;\n if (newTabFocus < 0) {\n // If we're at the start, move to the end\n newTabFocus = elements.length - 1;\n }\n }\n const newElement = elements[newTabFocus];\n newElement?.focus();\n\n // When an element is focused using roving tab index, trigger the onElementFocus callback\n if (newElement && onElementFocus) {\n onElementFocus(newElement);\n }\n\n if (keepTabIndex) {\n (evt.currentTarget as HTMLElement).setAttribute('tabindex', '-1');\n newElement?.setAttribute('tabindex', '0');\n }\n };\n\n if (elements?.length > 0) {\n elements.forEach((el, key) => {\n // if no element has tabindex set to 0, set the first element as focusable\n if (!initialFocusableElement && key === 0) {\n el.setAttribute('tabindex', '0');\n // set all other to -1\n } else if (initialFocusableElement !== el) {\n el.setAttribute('tabindex', '-1');\n }\n // add event listener\n el.addEventListener('keydown', handleKeyDown(key) as EventListener);\n });\n }\n\n // Cleanup listeners\n return () => {\n if (elements?.length > 0) {\n elements.forEach((el, key) => {\n el.removeEventListener('keydown', handleKeyDown(key) as EventListener);\n });\n }\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [parentRef, ...extraDependencies],\n );\n};\n"],"names":["useRovingTabIndex","parentRef","elementSelector","keepTabIndex","onElementFocus","extraDependencies","useEffect","parent","current","undefined","elements","querySelectorAll","initialFocusableElement","querySelector","handleKeyDown","index","evt","newTabFocus","key","length","newElement","focus","currentTarget","setAttribute","forEach","el","addEventListener","removeEventListener"],"mappings":"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"}
@@ -1,77 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { k as Comp } from './eca6d4dc.js';
3
- import { b as FlexBoxProps } from './1b1530a4.js';
4
-
5
- interface GenericBlockProps extends FlexBoxProps {
6
- /**
7
- * Component to use as visual element.
8
- */
9
- figure?: ReactNode;
10
- /**
11
- * Actions to set after the main content.
12
- */
13
- actions?: ReactNode;
14
- /**
15
- * Main content to display or sections components
16
- * ({@see GenericBlock.Figure}, {@see GenericBlock.Content} & {@see GenericBlock.Actions})
17
- */
18
- children: ReactNode;
19
- /**
20
- * Orientation of the 3 sections
21
- */
22
- orientation?: FlexBoxProps['orientation'];
23
- /**
24
- * Horizontal alignment.
25
- */
26
- hAlign?: FlexBoxProps['hAlign'];
27
- /**
28
- * Vertical alignment.
29
- */
30
- vAlign?: FlexBoxProps['vAlign'];
31
- /**
32
- * The props to forward to the content.
33
- * By default, the content will have the same alignment as wrapper.
34
- */
35
- contentProps?: Omit<FlexBoxProps, 'children'>;
36
- /**
37
- * props to forward to the actions element.
38
- */
39
- actionsProps?: Omit<FlexBoxProps, 'children'>;
40
- /**
41
- * props to forward to the figure element.
42
- */
43
- figureProps?: Omit<FlexBoxProps, 'children'>;
44
- }
45
- declare type BaseGenericBlock = Comp<GenericBlockProps, HTMLDivElement>;
46
- /**
47
- * The GenericBlock is a layout component made of 3 sections that can be
48
- * displayed either horizontally of vertically with the same gap between each section.
49
- *
50
- * The sections are:
51
- * - `Figure` => A visual element to display before the main content.
52
- * - `Content` => The main content displayed
53
- * - `Actions` => One or more actions to set after the element.
54
- *
55
- * @see https://www.figma.com/file/lzzrQmsfaXRaOyRfoEogPZ/DS%3A-playground?node-id=1%3A4076
56
- */
57
- declare const BaseGenericBlock: BaseGenericBlock;
58
- interface GenericBlock extends BaseGenericBlock {
59
- /**
60
- * Use `GenericBlock.Figure` component as children of the `GenericBlock` component as an alternative way to inject
61
- * the "figure" section of the block (instead of using `figure` and `figureProps` props).
62
- */
63
- Figure: Comp<FlexBoxProps>;
64
- /**
65
- * Use `GenericBlock.Content` component as children of the `GenericBlock` component as an alternative way to inject
66
- * the "content" section of the block (instead of using `content` and `contentProps` props).
67
- */
68
- Content: Comp<FlexBoxProps>;
69
- /**
70
- * Use `GenericBlock.Actions` component as children of the `GenericBlock` component as an alternative way to inject
71
- * the "actions" section of the block (instead of using `actions` and `actionsProps` props).
72
- */
73
- Actions: Comp<FlexBoxProps>;
74
- }
75
- declare const GenericBlock: GenericBlock;
76
-
77
- export { GenericBlockProps as G, GenericBlock as a };
@@ -1,118 +0,0 @@
1
- import { b as _objectWithoutProperties, c as _extends, a as _defineProperty } from './6340c129.js';
2
- import { Size, Theme, ColorPalette } from '../components.js';
3
- import React, { useCallback, forwardRef } from 'react';
4
- import { g as getRootClassName, c as classnames, h as handleBasicClasses, o as onEnterPressed } from './fd867c9d.js';
5
- import isFunction from 'lodash/isFunction';
6
-
7
- /**
8
- * Wrap mouse event handler to stop event propagation.
9
- *
10
- * @param handler The mouse handler to wrap.
11
- * @return Mouse handler stopping propagation.
12
- */
13
-
14
- function useStopPropagation(handler) {
15
- return useCallback(function (evt) {
16
- if (!evt || !isFunction(handler)) {
17
- return;
18
- }
19
-
20
- handler(evt);
21
- evt.stopPropagation();
22
- }, [handler]);
23
- }
24
-
25
- /**
26
- * Chip sizes.
27
- */
28
-
29
- /**
30
- * Component display name.
31
- */
32
- var COMPONENT_NAME = 'Chip';
33
- /**
34
- * Component default class name and class prefix.
35
- */
36
-
37
- var CLASSNAME = getRootClassName(COMPONENT_NAME);
38
- /**
39
- * Component default props.
40
- */
41
-
42
- var DEFAULT_PROPS = {
43
- size: Size.m,
44
- theme: Theme.light
45
- };
46
- /**
47
- * Chip component.
48
- *
49
- * @param props Component props.
50
- * @param ref Component ref.
51
- * @return React element.
52
- */
53
-
54
- var Chip = forwardRef(function (props, ref) {
55
- var after = props.after,
56
- before = props.before,
57
- children = props.children,
58
- className = props.className,
59
- color = props.color,
60
- disabled = props.disabled,
61
- isClickable = props.isClickable,
62
- _props$isDisabled = props.isDisabled,
63
- isDisabled = _props$isDisabled === void 0 ? disabled : _props$isDisabled,
64
- isHighlighted = props.isHighlighted,
65
- isSelected = props.isSelected,
66
- onAfterClick = props.onAfterClick,
67
- onBeforeClick = props.onBeforeClick,
68
- onClick = props.onClick,
69
- size = props.size,
70
- theme = props.theme,
71
- forwardedProps = _objectWithoutProperties(props, ["after", "before", "children", "className", "color", "disabled", "isClickable", "isDisabled", "isHighlighted", "isSelected", "onAfterClick", "onBeforeClick", "onClick", "size", "theme"]);
72
-
73
- var hasAfterClick = isFunction(onAfterClick);
74
- var hasBeforeClick = isFunction(onBeforeClick);
75
- var hasOnClick = isFunction(onClick); // Adapt color to the theme.
76
-
77
- var chipColor = color || (theme === Theme.light ? ColorPalette.dark : ColorPalette.light);
78
- var handleOnBeforeClick = useStopPropagation(onBeforeClick);
79
- var handleOnAfterClick = useStopPropagation(onAfterClick);
80
- return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions
81
- React.createElement("a", _extends({}, forwardedProps, {
82
- ref: ref,
83
- className: classnames(className, handleBasicClasses({
84
- clickable: Boolean(hasOnClick) || isClickable,
85
- color: chipColor,
86
- isDisabled: isDisabled,
87
- hasAfter: Boolean(after),
88
- hasBefore: Boolean(before),
89
- highlighted: Boolean(isHighlighted),
90
- prefix: CLASSNAME,
91
- selected: Boolean(isSelected),
92
- size: size,
93
- unselected: Boolean(!isSelected)
94
- })),
95
- role: hasOnClick ? 'button' : undefined,
96
- tabIndex: isDisabled || !hasOnClick ? -1 : 0,
97
- "aria-disabled": hasOnClick && isDisabled || undefined,
98
- onClick: hasOnClick ? onClick : undefined,
99
- onKeyDown: hasOnClick ? onEnterPressed(onClick) : undefined
100
- }), before && // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
101
- React.createElement("div", {
102
- className: classnames("".concat(CLASSNAME, "__before"), _defineProperty({}, "".concat(CLASSNAME, "__before--is-clickable"), hasBeforeClick)),
103
- onClick: handleOnBeforeClick
104
- }, before), React.createElement("div", {
105
- className: "".concat(CLASSNAME, "__label")
106
- }, children), after && // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
107
- React.createElement("div", {
108
- className: classnames("".concat(CLASSNAME, "__after"), _defineProperty({}, "".concat(CLASSNAME, "__after--is-clickable"), hasAfterClick)),
109
- onClick: handleOnAfterClick
110
- }, after))
111
- );
112
- });
113
- Chip.displayName = COMPONENT_NAME;
114
- Chip.className = CLASSNAME;
115
- Chip.defaultProps = DEFAULT_PROPS;
116
-
117
- export { Chip as C };
118
- //# sourceMappingURL=26cd9c63.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"26cd9c63.js","sources":["../../src/hooks/useStopPropagation.ts","../../src/components/chip/Chip.tsx"],"sourcesContent":["import isFunction from 'lodash/isFunction';\nimport { MouseEventHandler, useCallback } from 'react';\n\n/**\n * Wrap mouse event handler to stop event propagation.\n *\n * @param handler The mouse handler to wrap.\n * @return Mouse handler stopping propagation.\n */\nexport function useStopPropagation(handler?: MouseEventHandler): MouseEventHandler {\n return useCallback(\n (evt) => {\n if (!evt || !isFunction(handler)) {\n return;\n }\n handler(evt);\n evt.stopPropagation();\n },\n [handler],\n );\n}\n","import { Color, ColorPalette, Size, Theme } from '@lumx/react';\nimport { useStopPropagation } from '@lumx/react/hooks/useStopPropagation';\n\nimport { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { onEnterPressed } from '@lumx/react/utils/event';\n\nimport classNames from 'classnames';\n\nimport isFunction from 'lodash/isFunction';\nimport React, { forwardRef, MouseEventHandler, ReactNode } from 'react';\n\n/**\n * Chip sizes.\n */\ntype ChipSize = Extract<Size, 's' | 'm'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ChipProps extends GenericProps, HasTheme {\n /** A component to be rendered after the content. */\n after?: ReactNode;\n /** A component to be rendered before the content. */\n before?: ReactNode;\n /** Color variant. */\n color?: Color;\n /** Whether the component is clickable or not. */\n isClickable?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the chip is currently in a highlighted state or not. */\n isHighlighted?: boolean;\n /** Whether the component is selected or not. */\n isSelected?: boolean;\n /** Size variant. */\n size?: ChipSize;\n /** On \"after\" element clicked callback. */\n onAfterClick?: MouseEventHandler;\n /** On \"before\" element clicked callback. */\n onBeforeClick?: MouseEventHandler;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Chip';\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<ChipProps> = {\n size: Size.m,\n theme: Theme.light,\n};\n\n/**\n * Chip component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Chip: Comp<ChipProps, HTMLAnchorElement> = forwardRef((props, ref) => {\n const {\n after,\n before,\n children,\n className,\n color,\n disabled,\n isClickable,\n isDisabled = disabled,\n isHighlighted,\n isSelected,\n onAfterClick,\n onBeforeClick,\n onClick,\n size,\n theme,\n ...forwardedProps\n } = props;\n const hasAfterClick = isFunction(onAfterClick);\n const hasBeforeClick = isFunction(onBeforeClick);\n const hasOnClick = isFunction(onClick);\n\n // Adapt color to the theme.\n const chipColor = color || (theme === Theme.light ? ColorPalette.dark : ColorPalette.light);\n\n const handleOnBeforeClick = useStopPropagation(onBeforeClick);\n const handleOnAfterClick = useStopPropagation(onAfterClick);\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <a\n {...forwardedProps}\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n clickable: Boolean(hasOnClick) || isClickable,\n color: chipColor,\n isDisabled,\n hasAfter: Boolean(after),\n hasBefore: Boolean(before),\n highlighted: Boolean(isHighlighted),\n prefix: CLASSNAME,\n selected: Boolean(isSelected),\n size,\n unselected: Boolean(!isSelected),\n }),\n )}\n role={hasOnClick ? 'button' : undefined}\n tabIndex={isDisabled || !hasOnClick ? -1 : 0}\n aria-disabled={(hasOnClick && isDisabled) || undefined}\n onClick={hasOnClick ? onClick : undefined}\n onKeyDown={hasOnClick ? onEnterPressed(onClick) : undefined}\n >\n {before && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <div\n className={classNames(`${CLASSNAME}__before`, {\n [`${CLASSNAME}__before--is-clickable`]: hasBeforeClick,\n })}\n onClick={handleOnBeforeClick}\n >\n {before}\n </div>\n )}\n\n <div className={`${CLASSNAME}__label`}>{children}</div>\n\n {after && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <div\n className={classNames(`${CLASSNAME}__after`, {\n [`${CLASSNAME}__after--is-clickable`]: hasAfterClick,\n })}\n onClick={handleOnAfterClick}\n >\n {after}\n </div>\n )}\n </a>\n );\n});\nChip.displayName = COMPONENT_NAME;\nChip.className = CLASSNAME;\nChip.defaultProps = DEFAULT_PROPS;\n"],"names":["useStopPropagation","handler","useCallback","evt","isFunction","stopPropagation","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","size","Size","m","theme","Theme","light","Chip","forwardRef","props","ref","after","before","children","className","color","disabled","isClickable","isDisabled","isHighlighted","isSelected","onAfterClick","onBeforeClick","onClick","forwardedProps","hasAfterClick","hasBeforeClick","hasOnClick","chipColor","ColorPalette","dark","handleOnBeforeClick","handleOnAfterClick","classNames","handleBasicClasses","clickable","Boolean","hasAfter","hasBefore","highlighted","prefix","selected","unselected","undefined","onEnterPressed","displayName","defaultProps"],"mappings":"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"}