@rio-cloud/rio-uikit 2.2.1 → 2.3.0-beta.2

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 (475) hide show
  1. package/AnalyticsAnalysisOverlay.d.ts +1 -0
  2. package/AnalyticsAnalysisOverlay.js +5 -0
  3. package/AnalyticsAnalysisOverlay.js.map +1 -0
  4. package/DayPicker.js +6 -2
  5. package/DayPicker.js.map +1 -1
  6. package/DayPickerCalendar.d.ts +2 -0
  7. package/DayPickerCalendar.js +5 -0
  8. package/DayPickerCalendar.js.map +1 -0
  9. package/DayPickerPrototype.d.ts +2 -0
  10. package/DayPickerPrototype.js +5 -0
  11. package/DayPickerPrototype.js.map +1 -0
  12. package/Table.d.ts +2 -0
  13. package/Table.js +23 -0
  14. package/Table.js.map +1 -0
  15. package/TableCol.d.ts +2 -2
  16. package/TableCol.js +1 -1
  17. package/TableHead.d.ts +2 -2
  18. package/TableHead.js +1 -1
  19. package/TableNext.d.ts +2 -0
  20. package/TableNext.js +23 -0
  21. package/TableNext.js.map +1 -0
  22. package/TableSettingsDialog.d.ts +2 -2
  23. package/TableSettingsDialog.js +1 -1
  24. package/TableToolbar.js +4 -2
  25. package/TableToolbar.js.map +1 -1
  26. package/analyticsAnalysisUtils.d.ts +1 -0
  27. package/analyticsAnalysisUtils.js +13 -0
  28. package/analyticsAnalysisUtils.js.map +1 -0
  29. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.d.ts +18 -0
  30. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js +128 -0
  31. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js.map +1 -0
  32. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.d.ts +9 -0
  33. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js +73 -0
  34. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js.map +1 -0
  35. package/components/applicationHeader/AppMenuContent.js.map +1 -1
  36. package/components/applicationHeader/ApplicationActionBar.js +4 -4
  37. package/components/applicationHeader/ApplicationActionBar.js.map +1 -1
  38. package/components/applicationHeader/CollapsedNavItem.js +5 -14
  39. package/components/applicationHeader/CollapsedNavItem.js.map +1 -1
  40. package/components/applicationHeader/NavItems.js +10 -10
  41. package/components/applicationHeader/NavItems.js.map +1 -1
  42. package/components/assetTree/AssetTree.js +23 -23
  43. package/components/assetTree/AssetTree.js.map +1 -1
  44. package/components/assetTree/Tree.js +13 -13
  45. package/components/assetTree/TreeNothingFound.js +2 -2
  46. package/components/assetTree/TreeNothingFound.js.map +1 -1
  47. package/components/assetTree/treeUtils.js.map +1 -1
  48. package/components/autosuggest/AutoSuggest.js +31 -31
  49. package/components/autosuggest/AutoSuggest.js.map +1 -1
  50. package/components/autosuggest/AutoSuggestAddons.js +9 -9
  51. package/components/autosuggest/AutoSuggestAddons.js.map +1 -1
  52. package/components/banner/BannerActions.js +2 -2
  53. package/components/banner/BannerActions.js.map +1 -1
  54. package/components/banner/BannerIcon.js +3 -3
  55. package/components/banner/BannerIcon.js.map +1 -1
  56. package/components/banner/BannerPage.js +4 -4
  57. package/components/banner/BannerPage.js.map +1 -1
  58. package/components/button/Button.d.ts +7 -0
  59. package/components/button/Button.js +73 -65
  60. package/components/button/Button.js.map +1 -1
  61. package/components/charts/Area.d.ts +5 -3
  62. package/components/charts/Area.js +4 -3
  63. package/components/charts/Area.js.map +1 -1
  64. package/components/charts/AreaChart.js.map +1 -1
  65. package/components/charts/ComposedChart.js.map +1 -1
  66. package/components/checkbox/Checkbox.js +18 -17
  67. package/components/checkbox/Checkbox.js.map +1 -1
  68. package/components/clearableInput/ClearableInput.d.ts +30 -0
  69. package/components/clearableInput/ClearableInput.js +81 -78
  70. package/components/clearableInput/ClearableInput.js.map +1 -1
  71. package/components/datepicker/DateRangePicker.js +0 -2
  72. package/components/datepicker/DateRangePicker.js.map +1 -1
  73. package/components/datepicker/DayPicker.d.ts +4 -51
  74. package/components/datepicker/DayPicker.js +264 -256
  75. package/components/datepicker/DayPicker.js.map +1 -1
  76. package/components/datepicker/DayPickerCalendar.d.ts +4 -0
  77. package/components/datepicker/DayPickerCalendar.js +129 -0
  78. package/components/datepicker/DayPickerCalendar.js.map +1 -0
  79. package/components/datepicker/DayPickerDropdown.d.ts +18 -0
  80. package/components/datepicker/DayPickerDropdown.js +75 -0
  81. package/components/datepicker/DayPickerDropdown.js.map +1 -0
  82. package/components/datepicker/DayPickerDropdownFooter.d.ts +7 -0
  83. package/components/datepicker/DayPickerDropdownFooter.js +7 -0
  84. package/components/datepicker/DayPickerDropdownFooter.js.map +1 -0
  85. package/components/datepicker/DayPickerDropdownSidebar.d.ts +8 -0
  86. package/components/datepicker/DayPickerDropdownSidebar.js +7 -0
  87. package/components/datepicker/DayPickerDropdownSidebar.js.map +1 -0
  88. package/components/datepicker/DayPickerInput.d.ts +28 -0
  89. package/components/datepicker/DayPickerInput.js +65 -0
  90. package/components/datepicker/DayPickerInput.js.map +1 -0
  91. package/components/datepicker/DayPickerPrototype.d.ts +53 -0
  92. package/components/datepicker/DayPickerPrototype.js +285 -0
  93. package/components/datepicker/DayPickerPrototype.js.map +1 -0
  94. package/components/datepicker/dayPickerRangeSelectionUtils.d.ts +15 -0
  95. package/components/datepicker/dayPickerRangeSelectionUtils.js +31 -0
  96. package/components/datepicker/dayPickerRangeSelectionUtils.js.map +1 -0
  97. package/components/datepicker/dayPickerTypes.d.ts +517 -0
  98. package/components/datepicker/dayPickerTypes.js +7 -0
  99. package/components/datepicker/dayPickerTypes.js.map +1 -0
  100. package/components/datepicker/dayPickerUtils.d.ts +10 -0
  101. package/components/datepicker/dayPickerUtils.js +92 -0
  102. package/components/datepicker/dayPickerUtils.js.map +1 -0
  103. package/components/datepicker/useDayPickerInputState.d.ts +32 -0
  104. package/components/datepicker/useDayPickerInputState.js +85 -0
  105. package/components/datepicker/useDayPickerInputState.js.map +1 -0
  106. package/components/datepicker/useStackedDayPickerCalendars.d.ts +5 -0
  107. package/components/datepicker/useStackedDayPickerCalendars.js +39 -0
  108. package/components/datepicker/useStackedDayPickerCalendars.js.map +1 -0
  109. package/components/dialog/Dialog.js.map +1 -1
  110. package/components/dialog/DialogHeader.js +23 -20
  111. package/components/dialog/DialogHeader.js.map +1 -1
  112. package/components/dialog/MediaDialog.js +1 -1
  113. package/components/dialog/MediaDialog.js.map +1 -1
  114. package/components/divider/Divider.js +6 -6
  115. package/components/dropdown/ButtonDropdown.d.ts +4 -0
  116. package/components/dropdown/ButtonDropdown.js +70 -68
  117. package/components/dropdown/ButtonDropdown.js.map +1 -1
  118. package/components/dropdown/DropdownToggleButton.d.ts +1 -0
  119. package/components/dropdown/DropdownToggleButton.js +17 -15
  120. package/components/dropdown/DropdownToggleButton.js.map +1 -1
  121. package/components/editableContent/EditableContent.js +7 -7
  122. package/components/editableContent/EditableContent.js.map +1 -1
  123. package/components/expander/ExpanderList.d.ts +5 -0
  124. package/components/expander/ExpanderList.js +25 -16
  125. package/components/expander/ExpanderList.js.map +1 -1
  126. package/components/expander/ExpanderPanel.d.ts +5 -0
  127. package/components/expander/ExpanderPanel.js +29 -28
  128. package/components/expander/ExpanderPanel.js.map +1 -1
  129. package/components/fade/FadeExpander.js +17 -20
  130. package/components/fade/FadeExpander.js.map +1 -1
  131. package/components/filepicker/FilePicker.js.map +1 -1
  132. package/components/loadMore/LoadMoreButton.d.ts +5 -0
  133. package/components/loadMore/LoadMoreButton.js +33 -29
  134. package/components/loadMore/LoadMoreButton.js.map +1 -1
  135. package/components/loadMore/LoadMoreProgress.js +6 -7
  136. package/components/map/components/Map.js +3 -3
  137. package/components/map/components/features/ContextMenu.js +13 -13
  138. package/components/map/components/features/ContextMenu.js.map +1 -1
  139. package/components/map/components/features/basics/InfoBubble.js.map +1 -1
  140. package/components/map/components/features/settings/MapSettingsTile.js.map +1 -1
  141. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +6 -6
  142. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js.map +1 -1
  143. package/components/map/utils/eventHandling.js +18 -18
  144. package/components/map/utils/eventHandling.js.map +1 -1
  145. package/components/map/utils/positions.d.ts +1 -1
  146. package/components/map/utils/positions.js +15 -12
  147. package/components/map/utils/positions.js.map +1 -1
  148. package/components/map/utils/rendering.d.ts +1 -1
  149. package/components/map/utils/rendering.js +5 -5
  150. package/components/menuItems/MenuItems.js +6 -6
  151. package/components/menuItems/MenuItems.js.map +1 -1
  152. package/components/notification/NotificationsContainer.js.map +1 -1
  153. package/components/numberInput/NumberInput.js +57 -56
  154. package/components/numberInput/NumberInput.js.map +1 -1
  155. package/components/popover/Popover.js +3 -3
  156. package/components/popover/Popover.js.map +1 -1
  157. package/components/radiobutton/RadioCardGroup.js +3 -3
  158. package/components/resizer/Resizer.js +6 -3
  159. package/components/resizer/Resizer.js.map +1 -1
  160. package/components/rioglyph/RioglyphIconType.d.ts +1 -1
  161. package/components/selects/BaseSelectDropdown.js +34 -32
  162. package/components/selects/BaseSelectDropdown.js.map +1 -1
  163. package/components/selects/Multiselect.d.ts +6 -0
  164. package/components/selects/Multiselect.js +164 -150
  165. package/components/selects/Multiselect.js.map +1 -1
  166. package/components/selects/MultiselectTogglePlaceholder.js.map +1 -1
  167. package/components/selects/MultiselectToggleSelection.js +11 -11
  168. package/components/selects/MultiselectToggleSelection.js.map +1 -1
  169. package/components/selects/Select.js +39 -37
  170. package/components/selects/Select.js.map +1 -1
  171. package/components/sidebars/Sidebar.js +12 -12
  172. package/components/sidebars/Sidebar.js.map +1 -1
  173. package/components/sidebars/SidebarCloseButton.js +2 -2
  174. package/components/sidebars/SidebarCloseButton.js.map +1 -1
  175. package/components/smoothScrollbars/SmoothScrollbars.d.ts +4 -3
  176. package/components/smoothScrollbars/SmoothScrollbars.js +11 -11
  177. package/components/smoothScrollbars/SmoothScrollbars.js.map +1 -1
  178. package/components/states/CustomState.js.map +1 -1
  179. package/components/svgImage/svgConverter.js.map +1 -1
  180. package/components/table/Table.d.ts +46 -0
  181. package/components/table/Table.js +256 -0
  182. package/components/table/Table.js.map +1 -0
  183. package/components/table/Table.types.d.ts +379 -0
  184. package/components/table/TableBody.d.ts +70 -0
  185. package/components/table/TableBody.js +135 -0
  186. package/components/table/TableBody.js.map +1 -0
  187. package/components/table/TableCardsSorting.js +25 -32
  188. package/components/table/TableCardsSorting.js.map +1 -1
  189. package/components/table/TableColumn.d.ts +55 -0
  190. package/components/table/TableColumn.js +115 -0
  191. package/components/table/TableColumn.js.map +1 -0
  192. package/components/table/TableExpandedContentRow.d.ts +22 -0
  193. package/components/table/TableExpandedContentRow.js +110 -0
  194. package/components/table/TableExpandedContentRow.js.map +1 -0
  195. package/components/table/TableExpandedRow.d.ts +22 -0
  196. package/components/table/TableExpandedRow.js +150 -0
  197. package/components/table/TableExpandedRow.js.map +1 -0
  198. package/components/table/TableExpanderButton.d.ts +25 -0
  199. package/components/table/TableExpanderButton.js +24 -0
  200. package/components/table/TableExpanderButton.js.map +1 -0
  201. package/components/table/TableFooter.d.ts +17 -0
  202. package/components/table/TableFooter.js +52 -0
  203. package/components/table/TableFooter.js.map +1 -0
  204. package/components/table/TableGroupFooterRow.d.ts +18 -0
  205. package/components/table/TableGroupFooterRow.js +30 -0
  206. package/components/table/TableGroupFooterRow.js.map +1 -0
  207. package/components/table/TableGroupRow.d.ts +24 -0
  208. package/components/table/TableGroupRow.js +36 -0
  209. package/components/table/TableGroupRow.js.map +1 -0
  210. package/components/table/TableHeader.d.ts +14 -0
  211. package/components/table/TableHeader.js +107 -0
  212. package/components/table/TableHeader.js.map +1 -0
  213. package/components/table/TableHeaderColumn.d.ts +76 -0
  214. package/components/table/TableHeaderColumn.js +81 -0
  215. package/components/table/TableHeaderColumn.js.map +1 -0
  216. package/components/table/TableHeaderRow.d.ts +9 -0
  217. package/components/table/TableHeaderRow.js +14 -0
  218. package/components/table/TableHeaderRow.js.map +1 -0
  219. package/components/table/TableRow.d.ts +24 -0
  220. package/components/table/TableRow.js +111 -0
  221. package/components/table/TableRow.js.map +1 -0
  222. package/components/table/TableSpacerRow.d.ts +13 -0
  223. package/components/table/TableSpacerRow.js +29 -0
  224. package/components/table/TableSpacerRow.js.map +1 -0
  225. package/components/table/TableToolbar.d.ts +3 -0
  226. package/components/table/TableToolbar.js +49 -4
  227. package/components/table/TableToolbar.js.map +1 -1
  228. package/components/table/TableToolbarColumn.d.ts +31 -0
  229. package/components/table/TableToolbarColumn.js +33 -0
  230. package/components/table/TableToolbarColumn.js.map +1 -0
  231. package/components/table/TableViewToggles.d.ts +21 -3
  232. package/components/table/TableViewToggles.js +59 -87
  233. package/components/table/TableViewToggles.js.map +1 -1
  234. package/components/table/context/TableInteractionContext.d.ts +26 -0
  235. package/components/table/context/TableInteractionContext.js +7 -0
  236. package/components/table/context/TableInteractionContext.js.map +1 -0
  237. package/components/table/context/TableLayoutContext.d.ts +25 -0
  238. package/components/table/context/TableLayoutContext.js +7 -0
  239. package/components/table/context/TableLayoutContext.js.map +1 -0
  240. package/components/table/context/TableRenderConfigContext.d.ts +27 -0
  241. package/components/table/context/TableRenderConfigContext.js +7 -0
  242. package/components/table/context/TableRenderConfigContext.js.map +1 -0
  243. package/components/table/context/TableRenderContext.d.ts +85 -0
  244. package/components/table/context/TableRenderContext.js +7 -0
  245. package/components/table/context/TableRenderContext.js.map +1 -0
  246. package/components/table/context/TableStructureContext.d.ts +31 -0
  247. package/components/table/context/TableStructureContext.js +17 -0
  248. package/components/table/context/TableStructureContext.js.map +1 -0
  249. package/components/table/layout/columnSizing.d.ts +3 -0
  250. package/components/table/layout/columnSizing.js +23 -0
  251. package/components/table/layout/columnSizing.js.map +1 -0
  252. package/components/table/layout/useDraggableColumns.d.ts +14 -0
  253. package/components/table/layout/useDraggableColumns.js +47 -0
  254. package/components/table/layout/useDraggableColumns.js.map +1 -0
  255. package/components/table/layout/useHorizontalSectionSync.d.ts +13 -0
  256. package/components/table/layout/useHorizontalSectionSync.js +43 -0
  257. package/components/table/layout/useHorizontalSectionSync.js.map +1 -0
  258. package/components/table/layout/useMeasuredColumnMaxWidths.d.ts +12 -0
  259. package/components/table/layout/useMeasuredColumnMaxWidths.js +85 -0
  260. package/components/table/layout/useMeasuredColumnMaxWidths.js.map +1 -0
  261. package/components/table/layout/useResizableColumns.d.ts +15 -0
  262. package/components/table/layout/useResizableColumns.js +132 -0
  263. package/components/table/layout/useResizableColumns.js.map +1 -0
  264. package/components/table/layout/useTableBodyScrollBottom.d.ts +12 -0
  265. package/components/table/layout/useTableBodyScrollBottom.js +37 -0
  266. package/components/table/layout/useTableBodyScrollBottom.js.map +1 -0
  267. package/components/table/layout/useTableLayout.d.ts +36 -0
  268. package/components/table/layout/useTableLayout.js +59 -0
  269. package/components/table/layout/useTableLayout.js.map +1 -0
  270. package/components/table/layout/useTableVirtualization.d.ts +22 -0
  271. package/components/table/layout/useTableVirtualization.js +125 -0
  272. package/components/table/layout/useTableVirtualization.js.map +1 -0
  273. package/components/table/model/resolveRowMeta.d.ts +3 -0
  274. package/components/table/model/resolveRowMeta.js +15 -0
  275. package/components/table/model/resolveRowMeta.js.map +1 -0
  276. package/components/table/model/resolveTableClassConfig.d.ts +47 -0
  277. package/components/table/model/resolveTableClassConfig.js +64 -0
  278. package/components/table/model/resolveTableClassConfig.js.map +1 -0
  279. package/components/table/model/tableView.types.d.ts +41 -0
  280. package/components/table/native/TableCol.js.map +1 -0
  281. package/components/table/{TableHead.js → native/TableHead.js} +2 -2
  282. package/components/table/native/TableHead.js.map +1 -0
  283. package/components/table/native/TableSettingsColumnButtons.js +59 -0
  284. package/components/table/native/TableSettingsColumnButtons.js.map +1 -0
  285. package/components/table/{TableSettingsColumnDetails.js → native/TableSettingsColumnDetails.js} +2 -2
  286. package/components/table/native/TableSettingsColumnDetails.js.map +1 -0
  287. package/components/table/{TableSettingsDialog.d.ts → native/TableSettingsDialog.d.ts} +2 -3
  288. package/components/table/native/TableSettingsDialog.js +216 -0
  289. package/components/table/native/TableSettingsDialog.js.map +1 -0
  290. package/components/table/{TableSettingsDialogFooter.js → native/TableSettingsDialogFooter.js} +2 -2
  291. package/components/table/native/TableSettingsDialogFooter.js.map +1 -0
  292. package/components/table/native/TableSettingsListContainer.js.map +1 -0
  293. package/components/table/native/TableSettingsListItem.js +100 -0
  294. package/components/table/native/TableSettingsListItem.js.map +1 -0
  295. package/components/table/render/body/TableBodyContent.d.ts +21 -0
  296. package/components/table/render/body/TableBodyContent.js +52 -0
  297. package/components/table/render/body/TableBodyContent.js.map +1 -0
  298. package/components/table/render/body/TableEmptyRow.d.ts +7 -0
  299. package/components/table/render/body/TableEmptyRow.js +6 -0
  300. package/components/table/render/body/TableEmptyRow.js.map +1 -0
  301. package/components/table/render/footer/TableFooterContent.d.ts +6 -0
  302. package/components/table/render/footer/TableFooterContent.js +6 -0
  303. package/components/table/render/footer/TableFooterContent.js.map +1 -0
  304. package/components/table/render/header/TableBatchDropdown.d.ts +13 -0
  305. package/components/table/render/header/TableBatchDropdown.js +30 -0
  306. package/components/table/render/header/TableBatchDropdown.js.map +1 -0
  307. package/components/table/render/header/TableColumnFilter.d.ts +66 -0
  308. package/components/table/render/header/TableColumnFilter.js +72 -0
  309. package/components/table/render/header/TableColumnFilter.js.map +1 -0
  310. package/components/table/render/header/TableDraggableHeaderCell.d.ts +4 -0
  311. package/components/table/render/header/TableDraggableHeaderCell.js +64 -0
  312. package/components/table/render/header/TableDraggableHeaderCell.js.map +1 -0
  313. package/components/table/render/header/TableHeader.types.d.ts +37 -0
  314. package/components/table/render/header/TableHeaderCellContent.d.ts +4 -0
  315. package/components/table/render/header/TableHeaderCellContent.js +57 -0
  316. package/components/table/render/header/TableHeaderCellContent.js.map +1 -0
  317. package/components/table/render/header/TableHeaderCellResizeHandle.d.ts +4 -0
  318. package/components/table/render/header/TableHeaderCellResizeHandle.js +22 -0
  319. package/components/table/render/header/TableHeaderCellResizeHandle.js.map +1 -0
  320. package/components/table/render/header/TableHeaderDragOverlay.d.ts +14 -0
  321. package/components/table/render/header/TableHeaderDragOverlay.js +35 -0
  322. package/components/table/render/header/TableHeaderDragOverlay.js.map +1 -0
  323. package/components/table/render/header/TableHeaderSelectionCell.d.ts +9 -0
  324. package/components/table/render/header/TableHeaderSelectionCell.js +41 -0
  325. package/components/table/render/header/TableHeaderSelectionCell.js.map +1 -0
  326. package/components/table/render/header/TableStaticHeaderCell.d.ts +4 -0
  327. package/components/table/render/header/TableStaticHeaderCell.js +48 -0
  328. package/components/table/render/header/TableStaticHeaderCell.js.map +1 -0
  329. package/components/table/render/header/resolveAriaSort.d.ts +3 -0
  330. package/components/table/render/header/resolveAriaSort.js +8 -0
  331. package/components/table/render/header/resolveAriaSort.js.map +1 -0
  332. package/components/table/render/header/resolveColumnCollisionDetection.d.ts +2 -0
  333. package/components/table/render/header/resolveColumnCollisionDetection.js +9 -0
  334. package/components/table/render/header/resolveColumnCollisionDetection.js.map +1 -0
  335. package/components/table/render/header/resolveHeaderCellClassName.d.ts +12 -0
  336. package/components/table/render/header/resolveHeaderCellClassName.js +23 -0
  337. package/components/table/render/header/resolveHeaderCellClassName.js.map +1 -0
  338. package/components/table/render/header/resolveHeaderCellStyle.d.ts +830 -0
  339. package/components/table/render/header/resolveHeaderCellStyle.js +9 -0
  340. package/components/table/render/header/resolveHeaderCellStyle.js.map +1 -0
  341. package/components/table/runtime/shouldAnimateBodyRows.d.ts +17 -0
  342. package/components/table/runtime/shouldAnimateBodyRows.js +5 -0
  343. package/components/table/runtime/shouldAnimateBodyRows.js.map +1 -0
  344. package/components/table/runtime/useRenderDraftState.d.ts +14 -0
  345. package/components/table/runtime/useRenderDraftState.js +80 -0
  346. package/components/table/runtime/useRenderDraftState.js.map +1 -0
  347. package/components/table/runtime/useResolvedRenderColumns.d.ts +43 -0
  348. package/components/table/runtime/useResolvedRenderColumns.js +113 -0
  349. package/components/table/runtime/useResolvedRenderColumns.js.map +1 -0
  350. package/components/table/runtime/useResolvedRenderHeader.d.ts +27 -0
  351. package/components/table/runtime/useResolvedRenderHeader.js +67 -0
  352. package/components/table/runtime/useResolvedRenderHeader.js.map +1 -0
  353. package/components/table/selection/useInternalTableSelectionState.d.ts +17 -0
  354. package/components/table/selection/useInternalTableSelectionState.js +28 -0
  355. package/components/table/selection/useInternalTableSelectionState.js.map +1 -0
  356. package/components/table/selection/useTableSelection.d.ts +82 -0
  357. package/components/table/selection/useTableSelection.js +35 -0
  358. package/components/table/selection/useTableSelection.js.map +1 -0
  359. package/components/table/settings/TableColumnsDropdown.d.ts +90 -0
  360. package/components/table/settings/TableColumnsDropdown.js +137 -0
  361. package/components/table/settings/TableColumnsDropdown.js.map +1 -0
  362. package/components/table/settings/TableColumnsDropdownItem.d.ts +8 -0
  363. package/components/table/settings/TableColumnsDropdownItem.js +66 -0
  364. package/components/table/settings/TableColumnsDropdownItem.js.map +1 -0
  365. package/components/table/shared/getAlignClassName.d.ts +3 -0
  366. package/components/table/shared/getAlignClassName.js +6 -0
  367. package/components/table/shared/getAlignClassName.js.map +1 -0
  368. package/components/table/shared/getCellContentOverflowClassName.d.ts +3 -0
  369. package/components/table/shared/getCellContentOverflowClassName.js +18 -0
  370. package/components/table/shared/getCellContentOverflowClassName.js.map +1 -0
  371. package/components/table/shared/getInteractiveRowProps.d.ts +15 -0
  372. package/components/table/shared/getInteractiveRowProps.js +15 -0
  373. package/components/table/shared/getInteractiveRowProps.js.map +1 -0
  374. package/components/table/shared/resolveTableAria.d.ts +2 -0
  375. package/components/table/shared/resolveTableAria.js +6 -0
  376. package/components/table/shared/resolveTableAria.js.map +1 -0
  377. package/components/table/tableSizing.constants.d.ts +4 -0
  378. package/components/table/tableSizing.constants.js +8 -0
  379. package/components/table/tableSizing.constants.js.map +1 -0
  380. package/components/teaser/TeaserContainer.js +3 -3
  381. package/components/teaser/TeaserContainer.js.map +1 -1
  382. package/components/virtualList/VirtualList.js +16 -13
  383. package/components/virtualList/VirtualList.js.map +1 -1
  384. package/googleAnalyticsUtils.d.ts +1 -0
  385. package/googleAnalyticsUtils.js +9 -0
  386. package/googleAnalyticsUtils.js.map +1 -0
  387. package/hooks/useCookies.js +17 -17
  388. package/hooks/useCookies.js.map +1 -1
  389. package/hooks/useDraggableElement.d.ts +35 -0
  390. package/hooks/useDraggableElement.js +49 -0
  391. package/hooks/useDraggableElement.js.map +1 -0
  392. package/hooks/useElapsedTime.js +4 -4
  393. package/hooks/useElapsedTime.js.map +1 -1
  394. package/hooks/useLocationSuggestions.js +13 -10
  395. package/hooks/useLocationSuggestions.js.map +1 -1
  396. package/hooks/useMergeRefs.js +12 -12
  397. package/hooks/useMergeRefs.js.map +1 -1
  398. package/hooks/usePrevious.d.ts +1 -1
  399. package/hooks/usePrevious.js.map +1 -1
  400. package/hooks/useResizeObserver.js +25 -10
  401. package/hooks/useResizeObserver.js.map +1 -1
  402. package/hooks/useRioCookieConsent.js +7 -4
  403. package/hooks/useRioCookieConsent.js.map +1 -1
  404. package/hooks/useSorting.js +10 -10
  405. package/hooks/useSorting.js.map +1 -1
  406. package/hooks/useStorage.js +12 -12
  407. package/hooks/useStorage.js.map +1 -1
  408. package/hooks/useSum.js +10 -7
  409. package/hooks/useSum.js.map +1 -1
  410. package/hooks/useTableSelection.js.map +1 -1
  411. package/hooks/useTimeout.js +6 -3
  412. package/hooks/useTimeout.js.map +1 -1
  413. package/hooks/useUrlState.js +3 -3
  414. package/package.json +17 -18
  415. package/routeUtils.js +12 -10
  416. package/utils/analytics/analyticsAnalysisUtils.d.ts +27 -0
  417. package/utils/analytics/analyticsAnalysisUtils.js +161 -0
  418. package/utils/analytics/analyticsAnalysisUtils.js.map +1 -0
  419. package/utils/analytics/autoTracking.d.ts +14 -0
  420. package/utils/analytics/autoTracking.js +19 -0
  421. package/utils/analytics/autoTracking.js.map +1 -0
  422. package/utils/analytics/createAnalyticsOverlayTooltip.d.ts +36 -0
  423. package/utils/analytics/createAnalyticsOverlayTooltip.js +203 -0
  424. package/utils/analytics/createAnalyticsOverlayTooltip.js.map +1 -0
  425. package/utils/analytics/googleAnalyticsUtils.d.ts +37 -0
  426. package/utils/analytics/googleAnalyticsUtils.js +37 -0
  427. package/utils/analytics/googleAnalyticsUtils.js.map +1 -0
  428. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.d.ts +8 -0
  429. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js +61 -0
  430. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js.map +1 -0
  431. package/utils/analytics/useAnalyticsOverlayDom.d.ts +11 -0
  432. package/utils/analytics/useAnalyticsOverlayDom.js +120 -0
  433. package/utils/analytics/useAnalyticsOverlayDom.js.map +1 -0
  434. package/utils/arrayMove.js +11 -0
  435. package/utils/arrayMove.js.map +1 -0
  436. package/utils/cssuseragent.js +2 -2
  437. package/utils/cssuseragent.js.map +1 -1
  438. package/utils/deviceUtils.js.map +1 -1
  439. package/utils/formatUtils.js.map +1 -1
  440. package/utils/hasUtilityClass.js +3 -3
  441. package/utils/hasUtilityClass.js.map +1 -1
  442. package/utils/hidePiiData.js.map +1 -1
  443. package/utils/init/checkForReleaseVersion.js +4 -4
  444. package/utils/init/checkForReleaseVersion.js.map +1 -1
  445. package/utils/init/styledLogs.js.map +1 -1
  446. package/utils/mergeRefs.js +3 -3
  447. package/utils/mergeRefs.js.map +1 -1
  448. package/utils/routeUtils.d.ts +37 -3
  449. package/utils/routeUtils.js +88 -70
  450. package/utils/routeUtils.js.map +1 -1
  451. package/utils/storageUtils.js +9 -9
  452. package/utils/storageUtils.js.map +1 -1
  453. package/version.d.ts +1 -1
  454. package/version.js +2 -2
  455. package/version.js.map +1 -1
  456. package/components/table/TableCol.js.map +0 -1
  457. package/components/table/TableHead.js.map +0 -1
  458. package/components/table/TableSettingsColumnButtons.js +0 -45
  459. package/components/table/TableSettingsColumnButtons.js.map +0 -1
  460. package/components/table/TableSettingsColumnDetails.js.map +0 -1
  461. package/components/table/TableSettingsDialog.js +0 -208
  462. package/components/table/TableSettingsDialog.js.map +0 -1
  463. package/components/table/TableSettingsDialogFooter.js.map +0 -1
  464. package/components/table/TableSettingsListContainer.js.map +0 -1
  465. package/components/table/TableSettingsListItem.js +0 -96
  466. package/components/table/TableSettingsListItem.js.map +0 -1
  467. /package/components/table/{TableCol.d.ts → native/TableCol.d.ts} +0 -0
  468. /package/components/table/{TableCol.js → native/TableCol.js} +0 -0
  469. /package/components/table/{TableHead.d.ts → native/TableHead.d.ts} +0 -0
  470. /package/components/table/{TableSettingsColumnButtons.d.ts → native/TableSettingsColumnButtons.d.ts} +0 -0
  471. /package/components/table/{TableSettingsColumnDetails.d.ts → native/TableSettingsColumnDetails.d.ts} +0 -0
  472. /package/components/table/{TableSettingsDialogFooter.d.ts → native/TableSettingsDialogFooter.d.ts} +0 -0
  473. /package/components/table/{TableSettingsListContainer.d.ts → native/TableSettingsListContainer.d.ts} +0 -0
  474. /package/components/table/{TableSettingsListContainer.js → native/TableSettingsListContainer.js} +0 -0
  475. /package/components/table/{TableSettingsListItem.d.ts → native/TableSettingsListItem.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dayPickerUtils.js","sources":["../../../src/components/datepicker/dayPickerUtils.ts"],"sourcesContent":["import { format, isValid, parse, type Locale } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nimport type { ClearableInputProps } from '../clearableInput/ClearableInput';\nimport type { DateRange, DayPickerMode } from './dayPickerTypes';\n\nconst localeFormatMap: Record<string, string> = {\n 'bg-BG': 'dd.MM.yyyy',\n 'cs-CZ': 'dd.MM.yyyy',\n 'da-DK': 'dd-MM-yyyy',\n 'de-DE': 'dd.MM.yyyy',\n 'el-GR': 'dd/MM/yyyy',\n 'en-GB': 'dd/MM/yyyy',\n 'es-ES': 'dd/MM/yyyy',\n 'et-EE': 'dd.MM.yyyy',\n 'fi-FI': 'dd.MM.yyyy',\n 'fr-FR': 'dd/MM/yyyy',\n 'hr-HR': 'dd.MM.yyyy',\n 'hu-HU': 'yyyy. MM. dd.',\n 'it-IT': 'dd/MM/yyyy',\n 'lt-LT': 'dd-MM-yyyy',\n 'lv-LV': 'dd.MM.yyyy',\n 'nb-NO': 'dd.MM.yyyy',\n 'nl-NL': 'dd-MM-yyyy',\n 'pl-PL': 'dd.MM.yyyy',\n 'pt-BR': 'dd/MM/yyyy',\n 'pt-PT': 'dd/MM/yyyy',\n 'ro-RO': 'dd.MM.yyyy',\n 'sk-SK': 'dd.MM.yyyy',\n 'sl-SI': 'dd.MM.yyyy',\n 'sv-SE': 'yyyy-MM-dd',\n};\n\nexport const supportedDayPickerLocales = Object.keys(localeFormatMap);\n\nexport const resolveLocale = (localeCode: string): Locale => {\n const normalizedLocaleCode = localeCode.trim();\n const dateFnsLocaleKey = normalizedLocaleCode.replace(/-([a-z])/gi, (_, segment: string) => segment.toUpperCase());\n const baseCode = normalizedLocaleCode.split('-')[0];\n\n return (\n (locales as Record<string, Locale>)[dateFnsLocaleKey] ||\n (locales as Record<string, Locale>)[normalizedLocaleCode] ||\n (locales as Record<string, Locale>)[baseCode] ||\n locales.enGB\n );\n};\n\nexport const formatDate = (date: Date | undefined, localeCode: string, dateFormat?: string): string => {\n if (!date) {\n return '';\n }\n\n return format(date, getInputFormat(localeCode, dateFormat));\n};\n\nexport const formatSelectionForInput = (\n selected: Date | Date[] | DateRange | undefined,\n localeCode: string,\n mode: DayPickerMode,\n dateFormat?: string\n): string => {\n if (!selected) {\n return '';\n }\n\n const formatFn = (date: Date) => formatDate(date, localeCode, dateFormat);\n\n if (mode === 'single' && selected instanceof Date) {\n return formatFn(selected);\n }\n\n if (mode === 'multiple' && Array.isArray(selected)) {\n return selected.map(formatFn).join(', ');\n }\n\n if (mode === 'range' && typeof selected === 'object' && 'from' in selected) {\n const from = selected.from ? formatFn(selected.from) : '...';\n const to = selected.to ? formatFn(selected.to) : '...';\n return `${from} - ${to}`;\n }\n\n return '';\n};\n\nexport const getInputFormat = (localeCode: string, dateFormat?: string) =>\n dateFormat || localeFormatMap[localeCode] || 'yyyy-MM-dd';\n\nconst getInputMaskPattern = (inputFormat: string) => {\n let pattern = '';\n\n for (let index = 0; index < inputFormat.length; ) {\n if (inputFormat.startsWith('dd', index)) {\n pattern += 'd';\n index += 2;\n continue;\n }\n\n if (inputFormat.startsWith('MM', index)) {\n pattern += 'm';\n index += 2;\n continue;\n }\n\n if (inputFormat.startsWith('yyyy', index)) {\n pattern += 'Y';\n index += 4;\n continue;\n }\n\n const currentChar = inputFormat[index];\n if (!currentChar) {\n break;\n }\n\n if (/[a-zA-Z]/.test(currentChar)) {\n return;\n }\n\n pattern += currentChar;\n index += 1;\n }\n\n return pattern;\n};\n\nexport const getInputMaskProps = (\n localeCode: string,\n dateFormat?: string\n): Pick<ClearableInputProps, 'mask' | 'pattern' | 'format' | 'parse'> | undefined => {\n const inputFormat = getInputFormat(localeCode, dateFormat);\n const pattern = getInputMaskPattern(inputFormat);\n if (!pattern) {\n return;\n }\n\n return {\n mask: Date,\n pattern,\n format: (value: Date | null) => {\n if (!value) {\n return '';\n }\n\n return format(value, inputFormat);\n },\n parse: (value: string) => parse(value, inputFormat, new Date()),\n };\n};\n\nexport const parseDateString = (\n value: string | undefined,\n localeCode: string,\n dateFormat?: string\n): Date | undefined => {\n if (!value) {\n return;\n }\n\n const expectedFormat = dateFormat || getInputFormat(localeCode);\n const parsed = parse(value, expectedFormat, new Date());\n if (!isValid(parsed)) {\n return;\n }\n\n if (format(parsed, expectedFormat) !== value) {\n return;\n }\n\n return parsed;\n};\n"],"names":["localeFormatMap","supportedDayPickerLocales","resolveLocale","localeCode","normalizedLocaleCode","dateFnsLocaleKey","_","segment","baseCode","locales","formatDate","date","dateFormat","format","getInputFormat","formatSelectionForInput","selected","mode","formatFn","from","to","getInputMaskPattern","inputFormat","pattern","index","currentChar","getInputMaskProps","value","parse","parseDateString","expectedFormat","parsed","isValid"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { ChangeEvent, FocusEvent, FocusEventHandler, KeyboardEvent, MouseEvent, RefObject } from 'react';
2
+ import { DayPickerProps, DayPickerSelection, Modifiers } from './dayPickerTypes';
3
+ type UseDayPickerInputStateParams = {
4
+ props: DayPickerProps;
5
+ locale: string;
6
+ dateFormat?: string;
7
+ inputProps?: DayPickerProps['inputProps'];
8
+ onBlur?: FocusEventHandler<HTMLInputElement>;
9
+ isDropdownOpen: boolean;
10
+ isSingleMode: boolean;
11
+ selectionBehavior: 'immediate' | 'deferred';
12
+ closeOnOutsideClick: boolean;
13
+ committedValue: DayPickerSelection;
14
+ draftValue: DayPickerSelection;
15
+ setDraftValue: (value: DayPickerSelection) => void;
16
+ commitValue: (value: DayPickerSelection, modifiers?: Modifiers) => void;
17
+ clearValue: () => void;
18
+ openDropdown: () => void;
19
+ closeDropdown: () => void;
20
+ applyDraftValue: () => void;
21
+ popperElementRef: RefObject<HTMLElement | null>;
22
+ };
23
+ declare const useDayPickerInputState: ({ props, locale, dateFormat, inputProps, onBlur, isDropdownOpen, isSingleMode, selectionBehavior, closeOnOutsideClick, committedValue, draftValue, setDraftValue, commitValue, clearValue, openDropdown, closeDropdown, applyDraftValue, popperElementRef, }: UseDayPickerInputStateParams) => {
24
+ displayValue: string;
25
+ handleInputBlur: (event: FocusEvent<HTMLInputElement>) => void;
26
+ handleInputChange: (nextValue: string, _event?: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLSpanElement>) => void;
27
+ handleClearInput: () => void;
28
+ handleInputFocus: (event: FocusEvent<HTMLInputElement>) => void;
29
+ handleInputKeyDown: (event: KeyboardEvent<HTMLInputElement>) => void;
30
+ inputMaskProps: Pick<import('../clearableInput/ClearableInput').ClearableInputProps, "pattern" | "mask" | "format" | "parse"> | undefined;
31
+ };
32
+ export default useDayPickerInputState;
@@ -0,0 +1,85 @@
1
+ import { useState as R, useEffect as H } from "react";
2
+ import { isSingleDayPickerProps as d, isMultipleDayPickerProps as U, isRangeDayPickerProps as V } from "./dayPickerTypes.js";
3
+ import { getInputMaskProps as W, formatSelectionForInput as C, parseDateString as X } from "./dayPickerUtils.js";
4
+ const x = ({
5
+ props: n,
6
+ locale: e,
7
+ dateFormat: r,
8
+ inputProps: f,
9
+ onBlur: b,
10
+ isDropdownOpen: a,
11
+ isSingleMode: I,
12
+ selectionBehavior: s,
13
+ closeOnOutsideClick: j,
14
+ committedValue: y,
15
+ draftValue: k,
16
+ setDraftValue: S,
17
+ commitValue: F,
18
+ clearValue: D,
19
+ openDropdown: l,
20
+ closeDropdown: E,
21
+ applyDraftValue: m,
22
+ popperElementRef: q
23
+ }) => {
24
+ const [g, P] = R(""), [K, c] = R(!1);
25
+ H(() => {
26
+ I && c(!1);
27
+ }, [y, I]), H(() => {
28
+ const t = a && s === "deferred" ? k : y;
29
+ I && K || P(_(t, n, e, r));
30
+ }, [
31
+ y,
32
+ k,
33
+ K,
34
+ a,
35
+ e,
36
+ r,
37
+ s,
38
+ I,
39
+ n
40
+ ]);
41
+ const z = (t) => {
42
+ f?.onFocus?.(t), a || l();
43
+ }, A = (t) => {
44
+ b?.(t), f?.onBlur?.(t);
45
+ const h = t.relatedTarget;
46
+ if (!(h && q.current?.contains(h))) {
47
+ if (d(n)) {
48
+ const u = T(n, g, e), i = u instanceof Date;
49
+ n.onInputChange?.(g, u, i), g === "" ? D() : i ? (c(!1), s === "immediate" ? F(u, {}) : S(u)) : c(!0);
50
+ }
51
+ j && E();
52
+ }
53
+ }, G = (t) => {
54
+ if (f?.onKeyDown?.(t), t.key === "Enter") {
55
+ if (t.preventDefault(), !a) {
56
+ l();
57
+ return;
58
+ }
59
+ s === "deferred" ? m() : E();
60
+ }
61
+ }, J = (t, h) => {
62
+ if (P(t), !d(n))
63
+ return;
64
+ const u = T(n, t, e), i = u instanceof Date;
65
+ n.onInputChange?.(t, u, i), c(t !== "" && !i), t === "" ? D() : i && s === "immediate" ? F(u, {}) : i && S(u);
66
+ }, L = () => {
67
+ c(!1), P(""), D();
68
+ }, N = I ? g : _(a && s === "deferred" ? k : y, n, e, r), Q = d(n) && !n.parseInput && !n.renderValue ? W(e, r) : void 0;
69
+ return {
70
+ displayValue: N,
71
+ handleInputBlur: A,
72
+ handleInputChange: J,
73
+ handleClearInput: L,
74
+ handleInputFocus: z,
75
+ handleInputKeyDown: G,
76
+ inputMaskProps: Q
77
+ };
78
+ }, T = (n, e, r) => {
79
+ if (d(n))
80
+ return n.parseInput ? n.parseInput(e, r) : X(e, r, n.dateFormat);
81
+ }, _ = (n, e, r, f) => d(e) ? e.renderValue ? e.renderValue(n, r) : C(n, r, "single", f) : U(e) ? e.renderValue ? e.renderValue(n, r) : C(n, r, "multiple", f) : V(e) ? e.renderValue ? e.renderValue(n, r) : C(n, r, "range", f) : "";
82
+ export {
83
+ x as default
84
+ };
85
+ //# sourceMappingURL=useDayPickerInputState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDayPickerInputState.js","sources":["../../../src/components/datepicker/useDayPickerInputState.ts"],"sourcesContent":["import {\n useEffect,\n useState,\n type ChangeEvent,\n type FocusEvent,\n type FocusEventHandler,\n type KeyboardEvent,\n type MouseEvent,\n type RefObject,\n} from 'react';\n\nimport {\n isMultipleDayPickerProps,\n isRangeDayPickerProps,\n isSingleDayPickerProps,\n type DateRange,\n type DayPickerProps,\n type DayPickerSelection,\n type Modifiers,\n} from './dayPickerTypes';\nimport { formatSelectionForInput, getInputMaskProps, parseDateString } from './dayPickerUtils';\n\ntype UseDayPickerInputStateParams = {\n props: DayPickerProps;\n locale: string;\n dateFormat?: string;\n inputProps?: DayPickerProps['inputProps'];\n onBlur?: FocusEventHandler<HTMLInputElement>;\n isDropdownOpen: boolean;\n isSingleMode: boolean;\n selectionBehavior: 'immediate' | 'deferred';\n closeOnOutsideClick: boolean;\n committedValue: DayPickerSelection;\n draftValue: DayPickerSelection;\n setDraftValue: (value: DayPickerSelection) => void;\n commitValue: (value: DayPickerSelection, modifiers?: Modifiers) => void;\n clearValue: () => void;\n openDropdown: () => void;\n closeDropdown: () => void;\n applyDraftValue: () => void;\n popperElementRef: RefObject<HTMLElement | null>;\n};\n\nconst useDayPickerInputState = ({\n props,\n locale,\n dateFormat,\n inputProps,\n onBlur,\n isDropdownOpen,\n isSingleMode,\n selectionBehavior,\n closeOnOutsideClick,\n committedValue,\n draftValue,\n setDraftValue,\n commitValue,\n clearValue,\n openDropdown,\n closeDropdown,\n applyDraftValue,\n popperElementRef,\n}: UseDayPickerInputStateParams) => {\n const [rawInputValue, setRawInputValue] = useState('');\n const [hasInvalidSingleInput, setHasInvalidSingleInput] = useState(false);\n\n useEffect(() => {\n if (isSingleMode) {\n setHasInvalidSingleInput(false);\n }\n }, [committedValue, isSingleMode]);\n\n useEffect(() => {\n const selectionForDisplay = isDropdownOpen && selectionBehavior === 'deferred' ? draftValue : committedValue;\n\n if (isSingleMode && hasInvalidSingleInput) {\n return;\n }\n\n setRawInputValue(getDisplayValue(selectionForDisplay, props, locale, dateFormat));\n }, [\n committedValue,\n draftValue,\n hasInvalidSingleInput,\n isDropdownOpen,\n locale,\n dateFormat,\n selectionBehavior,\n isSingleMode,\n props,\n ]);\n\n const handleInputFocus = (event: FocusEvent<HTMLInputElement>) => {\n inputProps?.onFocus?.(event);\n if (!isDropdownOpen) {\n openDropdown();\n }\n };\n\n const handleInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n inputProps?.onBlur?.(event);\n\n const nextFocused = event.relatedTarget as Node | null;\n if (nextFocused && popperElementRef.current?.contains(nextFocused)) {\n return;\n }\n\n if (isSingleDayPickerProps(props)) {\n // Blur is the final validation point for manual input:\n // the mask narrows input, but only parsing decides whether it becomes a real Date value.\n const parsed = parseSingleInputValue(props, rawInputValue, locale);\n const isValid = parsed instanceof Date;\n props.onInputChange?.(rawInputValue, parsed, isValid);\n\n if (rawInputValue === '') {\n clearValue();\n } else if (isValid) {\n setHasInvalidSingleInput(false);\n if (selectionBehavior === 'immediate') {\n commitValue(parsed, {});\n } else {\n setDraftValue(parsed);\n }\n } else {\n setHasInvalidSingleInput(true);\n }\n }\n\n if (!closeOnOutsideClick) {\n return;\n }\n\n closeDropdown();\n };\n\n const handleInputKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n inputProps?.onKeyDown?.(event);\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (!isDropdownOpen) {\n openDropdown();\n return;\n }\n\n if (selectionBehavior === 'deferred') {\n applyDraftValue();\n } else {\n closeDropdown();\n }\n }\n };\n\n const handleInputChange = (\n nextValue: string,\n _event?: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLSpanElement>\n ) => {\n setRawInputValue(nextValue);\n\n if (!isSingleDayPickerProps(props)) {\n return;\n }\n\n // Parse on every change so consumers can react to incomplete/invalid intermediate input\n // while only valid dates are promoted into picker state.\n const parsed = parseSingleInputValue(props, nextValue, locale);\n const isValid = parsed instanceof Date;\n\n props.onInputChange?.(nextValue, parsed, isValid);\n setHasInvalidSingleInput(nextValue !== '' && !isValid);\n\n if (nextValue === '') {\n clearValue();\n } else if (isValid && selectionBehavior === 'immediate') {\n commitValue(parsed, {});\n } else if (isValid) {\n setDraftValue(parsed);\n }\n };\n\n const handleClearInput = () => {\n setHasInvalidSingleInput(false);\n setRawInputValue('');\n clearValue();\n };\n\n const selectionForDisplay = isDropdownOpen && selectionBehavior === 'deferred' ? draftValue : committedValue;\n const displayValue = isSingleMode ? rawInputValue : getDisplayValue(selectionForDisplay, props, locale, dateFormat);\n const inputMaskProps =\n isSingleDayPickerProps(props) && !props.parseInput && !props.renderValue\n ? getInputMaskProps(locale, dateFormat)\n : undefined;\n\n return {\n displayValue,\n handleInputBlur,\n handleInputChange,\n handleClearInput,\n handleInputFocus,\n handleInputKeyDown,\n inputMaskProps,\n };\n};\n\nconst parseSingleInputValue = (props: DayPickerProps, rawValue: string, locale: string) => {\n if (!isSingleDayPickerProps(props)) {\n return;\n }\n\n // A custom parser fully owns validation semantics for manual single-date input.\n if (props.parseInput) {\n return props.parseInput(rawValue, locale);\n }\n\n // Default parsing still runs after the input mask and is the final source of truth for validity.\n return parseDateString(rawValue, locale, props.dateFormat);\n};\n\nconst getDisplayValue = (value: DayPickerSelection, props: DayPickerProps, locale: string, dateFormat?: string) => {\n if (isSingleDayPickerProps(props)) {\n return props.renderValue\n ? props.renderValue(value as Date | undefined, locale)\n : formatSelectionForInput(value, locale, 'single', dateFormat);\n }\n\n if (isMultipleDayPickerProps(props)) {\n return props.renderValue\n ? props.renderValue(value as Date[] | undefined, locale)\n : formatSelectionForInput(value, locale, 'multiple', dateFormat);\n }\n\n if (isRangeDayPickerProps(props)) {\n return props.renderValue\n ? props.renderValue(value as DateRange | undefined, locale)\n : formatSelectionForInput(value, locale, 'range', dateFormat);\n }\n\n return '';\n};\n\nexport default useDayPickerInputState;\n"],"names":["useDayPickerInputState","props","locale","dateFormat","inputProps","onBlur","isDropdownOpen","isSingleMode","selectionBehavior","closeOnOutsideClick","committedValue","draftValue","setDraftValue","commitValue","clearValue","openDropdown","closeDropdown","applyDraftValue","popperElementRef","rawInputValue","setRawInputValue","useState","hasInvalidSingleInput","setHasInvalidSingleInput","useEffect","selectionForDisplay","getDisplayValue","handleInputFocus","event","handleInputBlur","nextFocused","isSingleDayPickerProps","parsed","parseSingleInputValue","isValid","handleInputKeyDown","handleInputChange","nextValue","_event","handleClearInput","displayValue","inputMaskProps","getInputMaskProps","rawValue","parseDateString","value","formatSelectionForInput","isMultipleDayPickerProps","isRangeDayPickerProps"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ declare const useStackedDayPickerCalendars: (dependencies?: readonly unknown[]) => {
2
+ calendarsRef: import('react').MutableRefObject<HTMLDivElement | null>;
3
+ stackCalendars: boolean;
4
+ };
5
+ export default useStackedDayPickerCalendars;
@@ -0,0 +1,39 @@
1
+ import { useState as S, useCallback as E, useEffect as y } from "react";
2
+ import R from "../../hooks/useResizeObserver.js";
3
+ import W from "../../hooks/useWindowResize.js";
4
+ const A = 480, B = (m = []) => {
5
+ const [r, , { inlineSize: a }] = R(), [f, n] = S(!1), o = E(() => {
6
+ const e = r.current;
7
+ if (!e || typeof window > "u")
8
+ return;
9
+ const t = e.querySelector(".rdp-months"), s = t ? Array.from(t.querySelectorAll(".rdp-month")) : [], d = s[0];
10
+ if (!t || !d) {
11
+ n(!1);
12
+ return;
13
+ }
14
+ const l = e.parentElement, i = window.document.documentElement.clientWidth;
15
+ if (!l || !a || !i) {
16
+ n(!1);
17
+ return;
18
+ }
19
+ if (i < A) {
20
+ n(!1);
21
+ return;
22
+ }
23
+ const h = Number.parseFloat(window.getComputedStyle(t).columnGap || "0") || 0, p = d.getBoundingClientRect().width, w = Math.max(
24
+ 0,
25
+ e.getBoundingClientRect().width - t.getBoundingClientRect().width
26
+ ), C = p * s.length + h * (s.length - 1) + w, g = Array.from(l.children).reduce((c, u) => u === e ? c : c + u.getBoundingClientRect().width, 0);
27
+ n(C + g > i - 32);
28
+ }, [a, r]);
29
+ return W(o), y(() => {
30
+ o();
31
+ }, [o, ...m]), {
32
+ calendarsRef: r,
33
+ stackCalendars: f
34
+ };
35
+ };
36
+ export {
37
+ B as default
38
+ };
39
+ //# sourceMappingURL=useStackedDayPickerCalendars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStackedDayPickerCalendars.js","sources":["../../../src/components/datepicker/useStackedDayPickerCalendars.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nimport useResizeObserver from '../../hooks/useResizeObserver';\nimport useWindowResize from '../../hooks/useWindowResize';\n\nconst STACKED_CALENDARS_XS_MAX = 480;\n\nconst useStackedDayPickerCalendars = (dependencies: readonly unknown[] = []) => {\n const [calendarsRef, , { inlineSize: calendarsInlineSize }] = useResizeObserver<HTMLDivElement>();\n const [stackCalendars, setStackCalendars] = useState(false);\n\n const updateCalendarLayout = useCallback(() => {\n const calendarsElement = calendarsRef.current;\n if (!calendarsElement || typeof window === 'undefined') {\n return;\n }\n\n const monthsWrapper = calendarsElement.querySelector<HTMLElement>('.rdp-months');\n const monthElements = monthsWrapper\n ? Array.from(monthsWrapper.querySelectorAll<HTMLElement>('.rdp-month'))\n : [];\n const firstMonthElement = monthElements[0];\n\n if (!monthsWrapper || !firstMonthElement) {\n setStackCalendars(false);\n return;\n }\n\n const rowElement = calendarsElement.parentElement;\n const viewportWidth = window.document.documentElement.clientWidth;\n\n if (!rowElement || !calendarsInlineSize || !viewportWidth) {\n setStackCalendars(false);\n return;\n }\n\n // XS layouts are always stacked via CSS so Popper measures the compact layout immediately.\n if (viewportWidth < STACKED_CALENDARS_XS_MAX) {\n setStackCalendars(false);\n return;\n }\n\n const monthsGap = Number.parseFloat(window.getComputedStyle(monthsWrapper).columnGap || '0') || 0;\n const monthWidth = firstMonthElement.getBoundingClientRect().width;\n const calendarsExtraWidth = Math.max(\n 0,\n calendarsElement.getBoundingClientRect().width - monthsWrapper.getBoundingClientRect().width\n );\n const requiredCalendarsWidth =\n monthWidth * monthElements.length + monthsGap * (monthElements.length - 1) + calendarsExtraWidth;\n const siblingWidth = Array.from(rowElement.children).reduce((sum, child) => {\n if (child === calendarsElement) {\n return sum;\n }\n\n return sum + (child as HTMLElement).getBoundingClientRect().width;\n }, 0);\n\n setStackCalendars(requiredCalendarsWidth + siblingWidth > viewportWidth - 32);\n }, [calendarsInlineSize, calendarsRef]);\n\n useWindowResize(updateCalendarLayout);\n\n useEffect(() => {\n updateCalendarLayout();\n }, [updateCalendarLayout, ...dependencies]);\n\n return {\n calendarsRef,\n stackCalendars,\n };\n};\n\nexport default useStackedDayPickerCalendars;\n"],"names":["STACKED_CALENDARS_XS_MAX","useStackedDayPickerCalendars","dependencies","calendarsRef","calendarsInlineSize","useResizeObserver","stackCalendars","setStackCalendars","useState","updateCalendarLayout","useCallback","calendarsElement","monthsWrapper","monthElements","firstMonthElement","rowElement","viewportWidth","monthsGap","monthWidth","calendarsExtraWidth","requiredCalendarsWidth","siblingWidth","sum","child","useWindowResize","useEffect"],"mappings":";;;AAKA,MAAMA,IAA2B,KAE3BC,IAA+B,CAACC,IAAmC,OAAO;AAC5E,QAAM,CAACC,KAAgB,EAAE,YAAYC,EAAA,CAAqB,IAAIC,EAAA,GACxD,CAACC,GAAgBC,CAAiB,IAAIC,EAAS,EAAK,GAEpDC,IAAuBC,EAAY,MAAM;AAC3C,UAAMC,IAAmBR,EAAa;AACtC,QAAI,CAACQ,KAAoB,OAAO,SAAW;AACvC;AAGJ,UAAMC,IAAgBD,EAAiB,cAA2B,aAAa,GACzEE,IAAgBD,IAChB,MAAM,KAAKA,EAAc,iBAA8B,YAAY,CAAC,IACpE,CAAA,GACAE,IAAoBD,EAAc,CAAC;AAEzC,QAAI,CAACD,KAAiB,CAACE,GAAmB;AACtC,MAAAP,EAAkB,EAAK;AACvB;AAAA,IACJ;AAEA,UAAMQ,IAAaJ,EAAiB,eAC9BK,IAAgB,OAAO,SAAS,gBAAgB;AAEtD,QAAI,CAACD,KAAc,CAACX,KAAuB,CAACY,GAAe;AACvD,MAAAT,EAAkB,EAAK;AACvB;AAAA,IACJ;AAGA,QAAIS,IAAgBhB,GAA0B;AAC1C,MAAAO,EAAkB,EAAK;AACvB;AAAA,IACJ;AAEA,UAAMU,IAAY,OAAO,WAAW,OAAO,iBAAiBL,CAAa,EAAE,aAAa,GAAG,KAAK,GAC1FM,IAAaJ,EAAkB,sBAAA,EAAwB,OACvDK,IAAsB,KAAK;AAAA,MAC7B;AAAA,MACAR,EAAiB,sBAAA,EAAwB,QAAQC,EAAc,wBAAwB;AAAA,IAAA,GAErFQ,IACFF,IAAaL,EAAc,SAASI,KAAaJ,EAAc,SAAS,KAAKM,GAC3EE,IAAe,MAAM,KAAKN,EAAW,QAAQ,EAAE,OAAO,CAACO,GAAKC,MAC1DA,MAAUZ,IACHW,IAGJA,IAAOC,EAAsB,sBAAA,EAAwB,OAC7D,CAAC;AAEJ,IAAAhB,EAAkBa,IAAyBC,IAAeL,IAAgB,EAAE;AAAA,EAChF,GAAG,CAACZ,GAAqBD,CAAY,CAAC;AAEtC,SAAAqB,EAAgBf,CAAoB,GAEpCgB,EAAU,MAAM;AACZ,IAAAhB,EAAA;AAAA,EACJ,GAAG,CAACA,GAAsB,GAAGP,CAAY,CAAC,GAEnC;AAAA,IACH,cAAAC;AAAA,IACA,gBAAAG;AAAA,EAAA;AAER;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../../../src/components/dialog/Dialog.tsx"],"sourcesContent":["import React, { useState, type PropsWithChildren } from 'react';\nimport ReactDOM from 'react-dom';\nimport { noop } from 'es-toolkit/function';\nimport { AnimatePresence, type AnimationDefinition, motion, type Transition, useReducedMotion } from 'motion/react';\n\nimport classNames from '../../utils/classNames';\nimport { getOrCreatePortalRoot } from '../../utils/portalRoot';\nimport useEsc from '../../hooks/useEsc';\nimport DialogHeader from './DialogHeader';\nimport DialogBody from './DialogBody';\nimport DialogFooter from './DialogFooter';\nimport useFocusTrap from '../../hooks/useFocusTrap';\nimport { DialogContextProvider } from './dialogContext';\n\nconst MODAL_DIALOG_CLASS = 'modal-dialog';\nconst MODAL_OPEN_CLASS = 'modal-open';\n\nexport type DialogSize =\n | 'xs'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | 'full'\n | 'fullwidth'\n | 'fullheight'\n | 'fullheight-lg'\n | 'fullheight-xl'\n | 'fullscreen';\n\nexport type BaseDialogProps = {\n /**\n * Opens the dialog when set to `true`.\n *\n * @default false\n */\n show: boolean;\n\n /**\n * The dialog title (can also be a FormattedMessage component).\n */\n title?: React.ReactNode;\n\n /**\n * The dialog header subtitle content.\n */\n subtitle?: React.ReactNode;\n\n /**\n * Shows a close button when set to `true`.\n *\n * @default true\n */\n showCloseButton?: boolean;\n\n /**\n * A callback function invoked when the dialog closes.\n */\n onClose?: () => void;\n\n /**\n * Defined how large the dialog will be rendered.\n *\n * By default, the dialog has a medium size, and thus it can be omitted.\n *\n * Possible values are:\n *\n * - `'xs'`\n * - `'sm'`\n * - `'lg'`\n * - `'xl'`\n * - `'fullwidth'`\n * - `'fullheight'`\n * - `'fullheight-lg'`\n * - `'fullheight-xl'`\n * - `'fullscreen'`\n *\n * @default 'md'\n */\n bsSize?: DialogSize;\n\n /**\n * Enables or disabled closing the dialog via esc key.\n *\n * @default false\n */\n disableEsc?: boolean;\n\n /**\n * Enables the modal body to overflow and use inline scrolling if needed.\n *\n * @default false\n */\n useOverflow?: boolean;\n\n /**\n * Show Header and Footer Borders for the \"xs\" dialog\n *\n * @default false\n */\n showXsDialogBorders?: boolean;\n\n /**\n * Additional classes for the modal element.\n */\n className?: string;\n};\n\nexport type DialogProps = BaseDialogProps & {\n /**\n * The dialog body content.\n */\n body?: React.ReactNode;\n\n /**\n * The dialog body content.\n */\n footer?: React.ReactNode;\n\n /**\n * Additional classes for the modal-body element.\n */\n bodyClassName?: string;\n\n /**\n * Additional classes for the modal-footer element.\n */\n footerClassName?: string;\n\n /**\n * Allows to add additional buttons to the dialog header.\n */\n headerButtons?: React.ReactNode;\n\n /**\n * A callback fired when esc key is pressed and the dialog is about to close.\n */\n onEsc?: VoidFunction;\n\n /**\n * A callback function to be executed before closing the dialog.\n *\n * If the function returns `false`, the dialog will not be closed\n *\n * @default () => true\n */\n onCloseValidation?: () => boolean;\n};\n\nconst Dialog = (props: PropsWithChildren<DialogProps>) => {\n const {\n title,\n subtitle,\n body,\n footer,\n headerButtons,\n className = '',\n bodyClassName,\n footerClassName,\n showXsDialogBorders = false,\n showCloseButton = true,\n useOverflow = false,\n bsSize,\n show = false,\n onClose: onCloseCallback = noop,\n disableEsc = false,\n onEsc = noop,\n onCloseValidation = () => true,\n children,\n ...remainingProps\n } = props;\n\n const [open, setOpen] = useState(show);\n\n const modalRoot = getOrCreatePortalRoot();\n\n const shouldReduceMotion = useReducedMotion();\n\n // Use a setter function for the focus trap as it would not re-render\n // and fails to set the focus listener\n const [focusTrapRef, setFocusTrapRef] = useState<HTMLDivElement | null>(null);\n useFocusTrap(focusTrapRef);\n\n const toggleBodyClass = (add: boolean) => {\n // We need to set a body class to fix the -webkit-overflow-scrolling on safari and iOS\n\n // Remove \"modal-open\" from body only when there is no other dialog in the DOM\n // in order to support multiple dialogs\n const hasOtherDialogs = modalRoot.getElementsByClassName(MODAL_DIALOG_CLASS).length > 1;\n\n if (add) {\n document.body.classList.add(MODAL_OPEN_CLASS);\n } else if (!add && !hasOtherDialogs) {\n document.body.classList.remove(MODAL_OPEN_CLASS);\n }\n };\n\n const handleCloseButton = () => closeDialog(true);\n\n const closeDialog = (usedEscapeKey: boolean) => {\n if (onCloseValidation()) {\n setOpen(false);\n onCloseCallback();\n\n usedEscapeKey && onEsc();\n }\n };\n\n const [previousShow, setPreviousShow] = useState(show);\n if (show !== previousShow) {\n setOpen(show);\n toggleBodyClass(show);\n setPreviousShow(show);\n }\n\n useEsc(() => {\n if (!focusTrapRef) {\n return;\n }\n\n const dialogElement = focusTrapRef;\n const currentActiveElement = document.activeElement;\n\n // Only allow to close the dialog when the focus is inside the dialog\n if (!disableEsc && dialogElement.contains(currentActiveElement)) {\n closeDialog(true);\n }\n });\n\n const handleAnimationComplete = (definition: AnimationDefinition) => {\n // The animation complete callback is invoked too when closing the dialog.\n // For that we check the animation props like the \"opacity\" to skip focusing\n // on the way out when closing the dialog.\n // @ts-expect-error\n if (definition.opacity === 0) {\n return;\n }\n\n const dialogElement = focusTrapRef;\n const currentActiveElement = document.activeElement;\n\n // Set the focus to the dialog if no element inside has focus already. Otherwise, focused\n // elements like inputs would lose their focus to the dialog.\n // Note that in order to focus the dialog itself, the tabindex has to be set on that element\n // IMPORTANT: make sure the dialog has a tabIndex prop\n if (!dialogElement?.contains(currentActiveElement)) {\n dialogElement?.focus();\n }\n };\n\n const modalClasses = classNames('modal', 'show', className);\n\n const isSmallestDialog = bsSize === 'xs';\n\n const hasChildren = !!children;\n\n const modalDialogClasses = classNames(\n MODAL_DIALOG_CLASS,\n useOverflow && 'modal-overflow',\n bsSize === 'xs' && 'modal-xs',\n bsSize === 'sm' && 'modal-sm',\n bsSize === 'lg' && 'modal-lg',\n bsSize === 'xl' && 'modal-xl',\n bsSize === 'full' && 'modal-full-width',\n bsSize === 'fullwidth' && 'modal-full-width',\n bsSize === 'fullheight' && 'modal-full-height',\n bsSize === 'fullheight-lg' && 'modal-full-height modal-lg',\n bsSize === 'fullheight-xl' && 'modal-full-height modal-xl',\n bsSize === 'fullscreen' && 'modal-fullscreen'\n );\n\n const spring: Transition = {\n type: 'spring',\n damping: 33,\n stiffness: 500,\n };\n\n const springXs: Transition = {\n type: 'spring',\n damping: 25,\n stiffness: 400,\n };\n\n return ReactDOM.createPortal(\n <DialogContextProvider\n value={{ onClose: handleCloseButton, isSmallestDialog, showXsDialogBorders, showCloseButton }}\n >\n <AnimatePresence\n // Disable any initial animations on children that\n // are present when the component is first rendered\n initial={false}\n // Only render one component at a time.\n // The exiting component will finish its exit\n // animation before entering component is rendered\n mode='wait'\n >\n {open && (\n <div\n {...remainingProps}\n className={modalClasses}\n role='dialog'\n aria-label='dialog'\n // Make sure it has a tabIndex to focus the dialog so the close on esc works.\n // biome-ignore lint/a11y/noNoninteractiveTabindex: <explanation>\n tabIndex={0}\n >\n <motion.div\n initial={shouldReduceMotion ? false : { opacity: 0, y: '-50%' }}\n animate={\n shouldReduceMotion\n ? { opacity: 1 }\n : { opacity: 1, y: 0, transition: isSmallestDialog ? springXs : spring }\n }\n exit={shouldReduceMotion ? undefined : { opacity: 0, y: '-150%' }}\n transition={\n shouldReduceMotion\n ? { duration: 0 }\n : {\n opacity: { duration: 0.2 },\n y: { duration: 0.3 },\n }\n }\n onAnimationComplete={handleAnimationComplete}\n ref={setFocusTrapRef}\n className={modalDialogClasses}\n role='document'\n // Focus target for keyboard handling after open.\n // biome-ignore lint/a11y/noNoninteractiveTabindex: focusable container\n tabIndex={-1}\n >\n <div className='modal-content'>\n {hasChildren && children}\n {!hasChildren && (\n <>\n {title && (\n <DialogHeader\n title={title}\n subtitle={subtitle}\n headerButtons={headerButtons}\n />\n )}\n {body && <DialogBody className={bodyClassName}>{body}</DialogBody>}\n {footer && <DialogFooter className={footerClassName}>{footer}</DialogFooter>}\n </>\n )}\n </div>\n </motion.div>\n <motion.div\n initial={shouldReduceMotion ? false : { opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={shouldReduceMotion ? undefined : { opacity: 0 }}\n transition={shouldReduceMotion ? { duration: 0 } : { duration: 0.1 }}\n className='modal-backdrop'\n />\n </div>\n )}\n </AnimatePresence>\n </DialogContextProvider>,\n modalRoot\n );\n};\n\nDialog.Title = DialogHeader;\nDialog.Body = DialogBody;\nDialog.Footer = DialogFooter;\n\nDialog.SIZE_XS = 'xs' as const;\nDialog.SIZE_SM = 'sm' as const;\nDialog.SIZE_MD = 'md' as const; // default\nDialog.SIZE_LG = 'lg' as const;\nDialog.SIZE_XL = 'xl' as const;\nDialog.SIZE_FULL = 'full' as const;\nDialog.SIZE_FULL_WIDTH = 'fullwidth' as const;\nDialog.SIZE_FULL_HEIGHT = 'fullheight' as const;\nDialog.SIZE_FULL_HEIGHT_LG = 'fullheight-lg' as const;\nDialog.SIZE_FULL_HEIGHT_XL = 'fullheight-xl' as const;\nDialog.SIZE_FULL_SCREEN = 'fullscreen' as const;\n\nexport default Dialog;\n"],"names":["MODAL_DIALOG_CLASS","MODAL_OPEN_CLASS","Dialog","props","title","subtitle","body","footer","headerButtons","className","bodyClassName","footerClassName","showXsDialogBorders","showCloseButton","useOverflow","bsSize","show","onCloseCallback","noop","disableEsc","onEsc","onCloseValidation","children","remainingProps","open","setOpen","useState","modalRoot","getOrCreatePortalRoot","shouldReduceMotion","useReducedMotion","focusTrapRef","setFocusTrapRef","useFocusTrap","toggleBodyClass","add","hasOtherDialogs","handleCloseButton","closeDialog","usedEscapeKey","previousShow","setPreviousShow","useEsc","dialogElement","currentActiveElement","handleAnimationComplete","definition","modalClasses","classNames","isSmallestDialog","hasChildren","modalDialogClasses","spring","springXs","ReactDOM","jsx","DialogContextProvider","AnimatePresence","jsxs","motion","Fragment","DialogHeader","DialogBody","DialogFooter"],"mappings":"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"}
1
+ {"version":3,"file":"Dialog.js","sources":["../../../src/components/dialog/Dialog.tsx"],"sourcesContent":["import React, { useState, type PropsWithChildren } from 'react';\nimport ReactDOM from 'react-dom';\nimport { noop } from 'es-toolkit/function';\nimport { AnimatePresence, type AnimationDefinition, motion, type Transition, useReducedMotion } from 'motion/react';\n\nimport classNames from '../../utils/classNames';\nimport { getOrCreatePortalRoot } from '../../utils/portalRoot';\nimport useEsc from '../../hooks/useEsc';\nimport DialogHeader from './DialogHeader';\nimport DialogBody from './DialogBody';\nimport DialogFooter from './DialogFooter';\nimport useFocusTrap from '../../hooks/useFocusTrap';\nimport { DialogContextProvider } from './dialogContext';\n\nconst MODAL_DIALOG_CLASS = 'modal-dialog';\nconst MODAL_OPEN_CLASS = 'modal-open';\n\nexport type DialogSize =\n | 'xs'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | 'full'\n | 'fullwidth'\n | 'fullheight'\n | 'fullheight-lg'\n | 'fullheight-xl'\n | 'fullscreen';\n\nexport type BaseDialogProps = {\n /**\n * Opens the dialog when set to `true`.\n *\n * @default false\n */\n show: boolean;\n\n /**\n * The dialog title (can also be a FormattedMessage component).\n */\n title?: React.ReactNode;\n\n /**\n * The dialog header subtitle content.\n */\n subtitle?: React.ReactNode;\n\n /**\n * Shows a close button when set to `true`.\n *\n * @default true\n */\n showCloseButton?: boolean;\n\n /**\n * A callback function invoked when the dialog closes.\n */\n onClose?: () => void;\n\n /**\n * Defined how large the dialog will be rendered.\n *\n * By default, the dialog has a medium size, and thus it can be omitted.\n *\n * Possible values are:\n *\n * - `'xs'`\n * - `'sm'`\n * - `'lg'`\n * - `'xl'`\n * - `'fullwidth'`\n * - `'fullheight'`\n * - `'fullheight-lg'`\n * - `'fullheight-xl'`\n * - `'fullscreen'`\n *\n * @default 'md'\n */\n bsSize?: DialogSize;\n\n /**\n * Enables or disabled closing the dialog via esc key.\n *\n * @default false\n */\n disableEsc?: boolean;\n\n /**\n * Enables the modal body to overflow and use inline scrolling if needed.\n *\n * @default false\n */\n useOverflow?: boolean;\n\n /**\n * Show Header and Footer Borders for the \"xs\" dialog\n *\n * @default false\n */\n showXsDialogBorders?: boolean;\n\n /**\n * Additional classes for the modal element.\n */\n className?: string;\n};\n\nexport type DialogProps = BaseDialogProps & {\n /**\n * The dialog body content.\n */\n body?: React.ReactNode;\n\n /**\n * The dialog body content.\n */\n footer?: React.ReactNode;\n\n /**\n * Additional classes for the modal-body element.\n */\n bodyClassName?: string;\n\n /**\n * Additional classes for the modal-footer element.\n */\n footerClassName?: string;\n\n /**\n * Allows to add additional buttons to the dialog header.\n */\n headerButtons?: React.ReactNode;\n\n /**\n * A callback fired when esc key is pressed and the dialog is about to close.\n */\n onEsc?: VoidFunction;\n\n /**\n * A callback function to be executed before closing the dialog.\n *\n * If the function returns `false`, the dialog will not be closed\n *\n * @default () => true\n */\n onCloseValidation?: () => boolean;\n};\n\nconst Dialog = (props: PropsWithChildren<DialogProps>) => {\n const {\n title,\n subtitle,\n body,\n footer,\n headerButtons,\n className = '',\n bodyClassName,\n footerClassName,\n showXsDialogBorders = false,\n showCloseButton = true,\n useOverflow = false,\n bsSize,\n show = false,\n onClose: onCloseCallback = noop,\n disableEsc = false,\n onEsc = noop,\n onCloseValidation = () => true,\n children,\n ...remainingProps\n } = props;\n\n const [open, setOpen] = useState(show);\n\n const modalRoot = getOrCreatePortalRoot();\n\n const shouldReduceMotion = useReducedMotion();\n\n // Use a setter function for the focus trap as it would not re-render\n // and fails to set the focus listener\n const [focusTrapRef, setFocusTrapRef] = useState<HTMLDivElement | null>(null);\n useFocusTrap(focusTrapRef);\n\n const toggleBodyClass = (add: boolean) => {\n // We need to set a body class to fix the -webkit-overflow-scrolling on safari and iOS\n\n // Remove \"modal-open\" from body only when there is no other dialog in the DOM\n // in order to support multiple dialogs\n const hasOtherDialogs = modalRoot.getElementsByClassName(MODAL_DIALOG_CLASS).length > 1;\n\n if (add) {\n document.body.classList.add(MODAL_OPEN_CLASS);\n } else if (!add && !hasOtherDialogs) {\n document.body.classList.remove(MODAL_OPEN_CLASS);\n }\n };\n\n const handleCloseButton = () => closeDialog(true);\n\n const closeDialog = (usedEscapeKey: boolean) => {\n if (onCloseValidation()) {\n setOpen(false);\n onCloseCallback();\n\n usedEscapeKey && onEsc();\n }\n };\n\n const [previousShow, setPreviousShow] = useState(show);\n if (show !== previousShow) {\n setOpen(show);\n toggleBodyClass(show);\n setPreviousShow(show);\n }\n\n useEsc(() => {\n if (!focusTrapRef) {\n return;\n }\n\n const dialogElement = focusTrapRef;\n const currentActiveElement = document.activeElement;\n\n // Only allow to close the dialog when the focus is inside the dialog\n if (!disableEsc && dialogElement.contains(currentActiveElement)) {\n closeDialog(true);\n }\n });\n\n const handleAnimationComplete = (definition: AnimationDefinition) => {\n // The animation complete callback is invoked too when closing the dialog.\n // For that we check the animation props like the \"opacity\" to skip focusing\n // on the way out when closing the dialog.\n // @ts-expect-error\n if (definition.opacity === 0) {\n return;\n }\n\n const dialogElement = focusTrapRef;\n const currentActiveElement = document.activeElement;\n\n // Set the focus to the dialog if no element inside has focus already. Otherwise, focused\n // elements like inputs would lose their focus to the dialog.\n // Note that in order to focus the dialog itself, the tabindex has to be set on that element\n // IMPORTANT: make sure the dialog has a tabIndex prop\n if (!dialogElement?.contains(currentActiveElement)) {\n dialogElement?.focus();\n }\n };\n\n const modalClasses = classNames('modal', 'show', className);\n\n const isSmallestDialog = bsSize === 'xs';\n\n const hasChildren = !!children;\n\n const modalDialogClasses = classNames(\n MODAL_DIALOG_CLASS,\n useOverflow && 'modal-overflow',\n bsSize === 'xs' && 'modal-xs',\n bsSize === 'sm' && 'modal-sm',\n bsSize === 'lg' && 'modal-lg',\n bsSize === 'xl' && 'modal-xl',\n bsSize === 'full' && 'modal-full-width',\n bsSize === 'fullwidth' && 'modal-full-width',\n bsSize === 'fullheight' && 'modal-full-height',\n bsSize === 'fullheight-lg' && 'modal-full-height modal-lg',\n bsSize === 'fullheight-xl' && 'modal-full-height modal-xl',\n bsSize === 'fullscreen' && 'modal-fullscreen'\n );\n\n const spring: Transition = {\n type: 'spring',\n damping: 33,\n stiffness: 500,\n };\n\n const springXs: Transition = {\n type: 'spring',\n damping: 25,\n stiffness: 400,\n };\n\n return ReactDOM.createPortal(\n <DialogContextProvider\n value={{ onClose: handleCloseButton, isSmallestDialog, showXsDialogBorders, showCloseButton }}\n >\n <AnimatePresence\n // Disable any initial animations on children that\n // are present when the component is first rendered\n initial={false}\n // Only render one component at a time.\n // The exiting component will finish its exit\n // animation before entering component is rendered\n mode='wait'\n >\n {open && (\n <div\n {...remainingProps}\n className={modalClasses}\n role='dialog'\n aria-label='dialog'\n // Make sure it has a tabIndex to focus the dialog so the close on esc works.\n // biome-ignore lint/a11y/noNoninteractiveTabindex: <explanation>\n tabIndex={0}\n >\n <motion.div\n initial={shouldReduceMotion ? false : { opacity: 0, y: '-50%' }}\n animate={\n shouldReduceMotion\n ? { opacity: 1 }\n : { opacity: 1, y: 0, transition: isSmallestDialog ? springXs : spring }\n }\n exit={shouldReduceMotion ? undefined : { opacity: 0, y: '-150%' }}\n transition={\n shouldReduceMotion\n ? { duration: 0 }\n : {\n opacity: { duration: 0.2 },\n y: { duration: 0.3 },\n }\n }\n onAnimationComplete={handleAnimationComplete}\n ref={setFocusTrapRef}\n className={modalDialogClasses}\n role='document'\n // Focus target for keyboard handling after open.\n tabIndex={-1}\n >\n <div className='modal-content'>\n {hasChildren && children}\n {!hasChildren && (\n <>\n {title && (\n <DialogHeader\n title={title}\n subtitle={subtitle}\n headerButtons={headerButtons}\n />\n )}\n {body && <DialogBody className={bodyClassName}>{body}</DialogBody>}\n {footer && <DialogFooter className={footerClassName}>{footer}</DialogFooter>}\n </>\n )}\n </div>\n </motion.div>\n <motion.div\n initial={shouldReduceMotion ? false : { opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={shouldReduceMotion ? undefined : { opacity: 0 }}\n transition={shouldReduceMotion ? { duration: 0 } : { duration: 0.1 }}\n className='modal-backdrop'\n />\n </div>\n )}\n </AnimatePresence>\n </DialogContextProvider>,\n modalRoot\n );\n};\n\nDialog.Title = DialogHeader;\nDialog.Body = DialogBody;\nDialog.Footer = DialogFooter;\n\nDialog.SIZE_XS = 'xs' as const;\nDialog.SIZE_SM = 'sm' as const;\nDialog.SIZE_MD = 'md' as const; // default\nDialog.SIZE_LG = 'lg' as const;\nDialog.SIZE_XL = 'xl' as const;\nDialog.SIZE_FULL = 'full' as const;\nDialog.SIZE_FULL_WIDTH = 'fullwidth' as const;\nDialog.SIZE_FULL_HEIGHT = 'fullheight' as const;\nDialog.SIZE_FULL_HEIGHT_LG = 'fullheight-lg' as const;\nDialog.SIZE_FULL_HEIGHT_XL = 'fullheight-xl' as const;\nDialog.SIZE_FULL_SCREEN = 'fullscreen' as const;\n\nexport default Dialog;\n"],"names":["MODAL_DIALOG_CLASS","MODAL_OPEN_CLASS","Dialog","props","title","subtitle","body","footer","headerButtons","className","bodyClassName","footerClassName","showXsDialogBorders","showCloseButton","useOverflow","bsSize","show","onCloseCallback","noop","disableEsc","onEsc","onCloseValidation","children","remainingProps","open","setOpen","useState","modalRoot","getOrCreatePortalRoot","shouldReduceMotion","useReducedMotion","focusTrapRef","setFocusTrapRef","useFocusTrap","toggleBodyClass","add","hasOtherDialogs","handleCloseButton","closeDialog","usedEscapeKey","previousShow","setPreviousShow","useEsc","dialogElement","currentActiveElement","handleAnimationComplete","definition","modalClasses","classNames","isSmallestDialog","hasChildren","modalDialogClasses","spring","springXs","ReactDOM","jsx","DialogContextProvider","AnimatePresence","jsxs","motion","Fragment","DialogHeader","DialogBody","DialogFooter"],"mappings":"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"}
@@ -1,40 +1,43 @@
1
- import { jsxs as o, jsx as e } from "react/jsx-runtime";
1
+ import { jsxs as e, jsx as o } from "react/jsx-runtime";
2
2
  import f from "react";
3
3
  import { noop as v } from "es-toolkit/function";
4
- import r from "../../utils/classNames.js";
4
+ import B from "../button/Button.js";
5
+ import d from "../../utils/classNames.js";
5
6
  import { useDialogContext as x } from "./dialogContext.js";
6
- const j = (d) => {
7
- const { title: i, subtitle: t, headerButtons: s, onCloseButtonClick: n = v, ...c } = d, { onClose: m, isSmallestDialog: a, showXsDialogBorders: h, showCloseButton: u } = x(), l = a ? h : !0, b = a ? !1 : u, p = r("modal-header", !l && "border-bottom-none"), g = r(
7
+ const T = (i) => {
8
+ const { title: s, subtitle: t, headerButtons: l, onCloseButtonClick: n = v, ...c } = i, { onClose: m, isSmallestDialog: a, showXsDialogBorders: h, showCloseButton: u } = x(), r = a ? h : !0, g = a ? !1 : u, p = d("modal-header", !r && "border-bottom-none"), b = d(
8
9
  "modal-header-text",
9
- !l && "padding-bottom-0 width-100pct"
10
+ !r && "padding-bottom-0 width-100pct"
10
11
  ), C = (N) => {
11
12
  n(), m(N);
12
13
  };
13
- return /* @__PURE__ */ o("div", { ...c, className: p, "aria-label": "dialog header", children: [
14
- /* @__PURE__ */ o("div", { className: g, children: [
15
- t && /* @__PURE__ */ e("div", { className: "modal-header-subtitle", children: t }),
16
- /* @__PURE__ */ e("div", { className: "modal-header-title", children: i })
14
+ return /* @__PURE__ */ e("div", { ...c, className: p, "aria-label": "dialog header", children: [
15
+ /* @__PURE__ */ e("div", { className: b, children: [
16
+ t && /* @__PURE__ */ o("div", { className: "modal-header-subtitle", children: t }),
17
+ /* @__PURE__ */ o("div", { className: "modal-header-title", children: s })
17
18
  ] }),
18
- /* @__PURE__ */ o("div", { className: "modal-header-buttons", children: [
19
- s && !a && /* @__PURE__ */ o(f.Fragment, { children: [
20
- s,
21
- /* @__PURE__ */ e("div", { className: "modal-header-buttons-spacer" })
19
+ /* @__PURE__ */ e("div", { className: "modal-header-buttons", children: [
20
+ l && !a && /* @__PURE__ */ e(f.Fragment, { children: [
21
+ l,
22
+ /* @__PURE__ */ o("div", { className: "modal-header-buttons-spacer" })
22
23
  ] }),
23
- b && /* @__PURE__ */ e(
24
- "button",
24
+ g && /* @__PURE__ */ o(
25
+ B,
25
26
  {
26
- type: "button",
27
- className: "btn btn-icon-only btn-muted modal-header-close close",
27
+ bsStyle: "muted",
28
+ iconOnly: !0,
29
+ iconName: "rioglyph-remove",
30
+ autoTrackingKey: `dialog::closed::${s}`,
31
+ className: "modal-header-close close",
28
32
  onClick: C,
29
33
  "data-testid": "close",
30
- "aria-label": "dialog close button",
31
- children: /* @__PURE__ */ e("span", { className: "rioglyph rioglyph-remove", "aria-hidden": "true" })
34
+ "aria-label": "dialog close button"
32
35
  }
33
36
  )
34
37
  ] })
35
38
  ] });
36
39
  };
37
40
  export {
38
- j as default
41
+ T as default
39
42
  };
40
43
  //# sourceMappingURL=DialogHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogHeader.js","sources":["../../../src/components/dialog/DialogHeader.tsx"],"sourcesContent":["import React, { type ComponentProps } from 'react';\nimport { noop } from 'es-toolkit/function';\n\nimport classNames from '../../utils/classNames';\nimport { useDialogContext } from './dialogContext';\n\nexport type DialogHeaderProps = Omit<ComponentProps<'div'>, 'title'> & {\n /**\n * The dialog title (can also be a FormattedMessage component).\n */\n title: string | React.ReactNode;\n\n /**\n * The dialog header subtitle content.\n */\n subtitle?: string | React.ReactNode;\n\n /**\n * Allows to add additional buttons to the dialog header.\n */\n headerButtons?: React.ReactNode;\n\n onCloseButtonClick?: () => void;\n};\n\nconst DialogHeader = (props: DialogHeaderProps) => {\n const { title, subtitle, headerButtons, onCloseButtonClick = noop, ...remainingProps } = props;\n\n const { onClose, isSmallestDialog, showXsDialogBorders, showCloseButton } = useDialogContext();\n\n const doShowXsDialogBorders = isSmallestDialog ? showXsDialogBorders : true;\n\n const doShowCloseButton = isSmallestDialog ? false : showCloseButton;\n\n const headerClasses = classNames('modal-header', !doShowXsDialogBorders && 'border-bottom-none');\n const headerTextClasses = classNames(\n 'modal-header-text',\n !doShowXsDialogBorders && 'padding-bottom-0 width-100pct'\n );\n\n const handleClose = (event: React.MouseEvent<HTMLButtonElement>) => {\n onCloseButtonClick();\n onClose(event);\n };\n\n return (\n <div {...remainingProps} className={headerClasses} aria-label='dialog header'>\n <div className={headerTextClasses}>\n {subtitle && <div className='modal-header-subtitle'>{subtitle}</div>}\n <div className='modal-header-title'>{title}</div>\n </div>\n <div className='modal-header-buttons'>\n {headerButtons && !isSmallestDialog && (\n <React.Fragment>\n {headerButtons}\n <div className='modal-header-buttons-spacer' />\n </React.Fragment>\n )}\n {doShowCloseButton && (\n <button\n type='button'\n className='btn btn-icon-only btn-muted modal-header-close close'\n onClick={handleClose}\n data-testid='close'\n aria-label='dialog close button'\n >\n <span className='rioglyph rioglyph-remove' aria-hidden='true' />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default DialogHeader;\n"],"names":["DialogHeader","props","title","subtitle","headerButtons","onCloseButtonClick","noop","remainingProps","onClose","isSmallestDialog","showXsDialogBorders","showCloseButton","useDialogContext","doShowXsDialogBorders","doShowCloseButton","headerClasses","classNames","headerTextClasses","handleClose","event","jsxs","jsx","React"],"mappings":";;;;;AAyBA,MAAMA,IAAe,CAACC,MAA6B;AAC/C,QAAM,EAAE,OAAAC,GAAO,UAAAC,GAAU,eAAAC,GAAe,oBAAAC,IAAqBC,GAAM,GAAGC,MAAmBN,GAEnF,EAAE,SAAAO,GAAS,kBAAAC,GAAkB,qBAAAC,GAAqB,iBAAAC,EAAA,IAAoBC,EAAA,GAEtEC,IAAwBJ,IAAmBC,IAAsB,IAEjEI,IAAoBL,IAAmB,KAAQE,GAE/CI,IAAgBC,EAAW,gBAAgB,CAACH,KAAyB,oBAAoB,GACzFI,IAAoBD;AAAA,IACtB;AAAA,IACA,CAACH,KAAyB;AAAA,EAAA,GAGxBK,IAAc,CAACC,MAA+C;AAChE,IAAAd,EAAA,GACAG,EAAQW,CAAK;AAAA,EACjB;AAEA,2BACK,OAAA,EAAK,GAAGZ,GAAgB,WAAWQ,GAAe,cAAW,iBAC1D,UAAA;AAAA,IAAA,gBAAAK,EAAC,OAAA,EAAI,WAAWH,GACX,UAAA;AAAA,MAAAd,KAAY,gBAAAkB,EAAC,OAAA,EAAI,WAAU,yBAAyB,UAAAlB,GAAS;AAAA,MAC9D,gBAAAkB,EAAC,OAAA,EAAI,WAAU,sBAAsB,UAAAnB,EAAA,CAAM;AAAA,IAAA,GAC/C;AAAA,IACA,gBAAAkB,EAAC,OAAA,EAAI,WAAU,wBACV,UAAA;AAAA,MAAAhB,KAAiB,CAACK,KACf,gBAAAW,EAACE,EAAM,UAAN,EACI,UAAA;AAAA,QAAAlB;AAAA,QACD,gBAAAiB,EAAC,OAAA,EAAI,WAAU,8BAAA,CAA8B;AAAA,MAAA,GACjD;AAAA,MAEHP,KACG,gBAAAO;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAASH;AAAA,UACT,eAAY;AAAA,UACZ,cAAW;AAAA,UAEX,UAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,4BAA2B,eAAY,OAAA,CAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IAClE,EAAA,CAER;AAAA,EAAA,GACJ;AAER;"}
1
+ {"version":3,"file":"DialogHeader.js","sources":["../../../src/components/dialog/DialogHeader.tsx"],"sourcesContent":["import React, { type ComponentProps } from 'react';\nimport { noop } from 'es-toolkit/function';\n\nimport Button from '../button/Button';\nimport classNames from '../../utils/classNames';\nimport { useDialogContext } from './dialogContext';\n\nexport type DialogHeaderProps = Omit<ComponentProps<'div'>, 'title'> & {\n /**\n * The dialog title (can also be a FormattedMessage component).\n */\n title: string | React.ReactNode;\n\n /**\n * The dialog header subtitle content.\n */\n subtitle?: string | React.ReactNode;\n\n /**\n * Allows to add additional buttons to the dialog header.\n */\n headerButtons?: React.ReactNode;\n\n onCloseButtonClick?: () => void;\n};\n\nconst DialogHeader = (props: DialogHeaderProps) => {\n const { title, subtitle, headerButtons, onCloseButtonClick = noop, ...remainingProps } = props;\n\n const { onClose, isSmallestDialog, showXsDialogBorders, showCloseButton } = useDialogContext();\n\n const doShowXsDialogBorders = isSmallestDialog ? showXsDialogBorders : true;\n\n const doShowCloseButton = isSmallestDialog ? false : showCloseButton;\n\n const headerClasses = classNames('modal-header', !doShowXsDialogBorders && 'border-bottom-none');\n const headerTextClasses = classNames(\n 'modal-header-text',\n !doShowXsDialogBorders && 'padding-bottom-0 width-100pct'\n );\n\n const handleClose = (event: React.MouseEvent<HTMLButtonElement>) => {\n onCloseButtonClick();\n onClose(event);\n };\n\n return (\n <div {...remainingProps} className={headerClasses} aria-label='dialog header'>\n <div className={headerTextClasses}>\n {subtitle && <div className='modal-header-subtitle'>{subtitle}</div>}\n <div className='modal-header-title'>{title}</div>\n </div>\n <div className='modal-header-buttons'>\n {headerButtons && !isSmallestDialog && (\n <React.Fragment>\n {headerButtons}\n <div className='modal-header-buttons-spacer' />\n </React.Fragment>\n )}\n {doShowCloseButton && (\n <Button\n bsStyle='muted'\n iconOnly\n iconName='rioglyph-remove'\n autoTrackingKey={`dialog::closed::${title}`}\n className='modal-header-close close'\n onClick={handleClose}\n data-testid='close'\n aria-label='dialog close button'\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default DialogHeader;\n"],"names":["DialogHeader","props","title","subtitle","headerButtons","onCloseButtonClick","noop","remainingProps","onClose","isSmallestDialog","showXsDialogBorders","showCloseButton","useDialogContext","doShowXsDialogBorders","doShowCloseButton","headerClasses","classNames","headerTextClasses","handleClose","event","jsxs","jsx","React","Button"],"mappings":";;;;;;AA0BA,MAAMA,IAAe,CAACC,MAA6B;AAC/C,QAAM,EAAE,OAAAC,GAAO,UAAAC,GAAU,eAAAC,GAAe,oBAAAC,IAAqBC,GAAM,GAAGC,MAAmBN,GAEnF,EAAE,SAAAO,GAAS,kBAAAC,GAAkB,qBAAAC,GAAqB,iBAAAC,EAAA,IAAoBC,EAAA,GAEtEC,IAAwBJ,IAAmBC,IAAsB,IAEjEI,IAAoBL,IAAmB,KAAQE,GAE/CI,IAAgBC,EAAW,gBAAgB,CAACH,KAAyB,oBAAoB,GACzFI,IAAoBD;AAAA,IACtB;AAAA,IACA,CAACH,KAAyB;AAAA,EAAA,GAGxBK,IAAc,CAACC,MAA+C;AAChE,IAAAd,EAAA,GACAG,EAAQW,CAAK;AAAA,EACjB;AAEA,2BACK,OAAA,EAAK,GAAGZ,GAAgB,WAAWQ,GAAe,cAAW,iBAC1D,UAAA;AAAA,IAAA,gBAAAK,EAAC,OAAA,EAAI,WAAWH,GACX,UAAA;AAAA,MAAAd,KAAY,gBAAAkB,EAAC,OAAA,EAAI,WAAU,yBAAyB,UAAAlB,GAAS;AAAA,MAC9D,gBAAAkB,EAAC,OAAA,EAAI,WAAU,sBAAsB,UAAAnB,EAAA,CAAM;AAAA,IAAA,GAC/C;AAAA,IACA,gBAAAkB,EAAC,OAAA,EAAI,WAAU,wBACV,UAAA;AAAA,MAAAhB,KAAiB,CAACK,KACf,gBAAAW,EAACE,EAAM,UAAN,EACI,UAAA;AAAA,QAAAlB;AAAA,QACD,gBAAAiB,EAAC,OAAA,EAAI,WAAU,8BAAA,CAA8B;AAAA,MAAA,GACjD;AAAA,MAEHP,KACG,gBAAAO;AAAA,QAACE;AAAA,QAAA;AAAA,UACG,SAAQ;AAAA,UACR,UAAQ;AAAA,UACR,UAAS;AAAA,UACT,iBAAiB,mBAAmBrB,CAAK;AAAA,UACzC,WAAU;AAAA,UACV,SAASgB;AAAA,UACT,eAAY;AAAA,UACZ,cAAW;AAAA,QAAA;AAAA,MAAA;AAAA,IACf,EAAA,CAER;AAAA,EAAA,GACJ;AAER;"}
@@ -29,7 +29,7 @@ const m = (o) => {
29
29
  }, M = () => /* @__PURE__ */ s("div", { className: "text-center text-size-h3", children: /* @__PURE__ */ s("span", { className: "rioglyph rioglyph-missing text-size-200pct text-color-gray" }) }), S = (e) => {
30
30
  const t = r("img-responsive", e.className && e.className);
31
31
  return (
32
- // @ts-ignore
32
+ // @ts-expect-error
33
33
  /* @__PURE__ */ s(c, { src: e.src, className: t, children: ({ status: u, image: g }) => u === c.STATUS_LOADED ? /* @__PURE__ */ s("img", { className: "ani-fade-in", src: g.src }, g.src) : u === c.STATUS_FAILED ? M() : /* @__PURE__ */ s(j, { isInverse: !1 }) })
34
34
  );
35
35
  }, _ = (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"MediaDialog.js","sources":["../../../src/components/dialog/MediaDialog.tsx"],"sourcesContent":["import type React from 'react';\nimport { useState } from 'react';\nimport classNames from '../../utils/classNames';\nimport { noop } from 'es-toolkit/function';\n\nimport Dialog, { type BaseDialogProps } from './Dialog';\nimport ResponsiveVideo from '../video/ResponsiveVideo';\nimport ImagePreloader from '../preloader/ImagePreloader';\nimport Spinner from '../spinner/Spinner';\n\n// TODO: add keyboard support left/right\n\nexport type MediaDialogMedia = {\n /**\n * Defines the media type that is going to be displayed.\n *\n * Possible values are: `image` and `video`.\n */\n type: 'image' | 'video';\n\n /**\n * The source location for the media data.\n */\n src: string;\n\n /**\n * The name or title of the media used for the dialogs title.\n */\n title: string | React.ReactNode;\n\n /**\n * Additional media information used for the dialogs subtitle.\n */\n subtitle?: string | React.ReactNode;\n\n /**\n * Only relevant for videos where the aspect of the video is defined.\n *\n * Possible values are: `4by3` and `16by9`.\n * @default '16by9'\n */\n aspectRatio?: '4by3' | '16by9';\n\n /**\n * Additional classes for the image element.\n */\n className?: string;\n};\n\nexport type MediaDialogProps = BaseDialogProps & {\n /**\n * List of media objects.\n */\n media: MediaDialogMedia[];\n\n /**\n * The button text for switching to the previous media if there are multiple.\n */\n previousButtonText: string | React.ReactNode;\n\n /**\n * Callback function for when the previous button is clicked.\n * @param newIndex\n * @returns\n */\n previousButtonCallback?: (newIndex: number) => void;\n\n /**\n * The button text for switching to the next media if there are multiple.\n */\n nextButtonText: string | React.ReactNode;\n\n /**\n * Callback function for when the next button is clicked.\n * @param newIndex\n * @returns\n */\n nextButtonCallback?: (newIndex: number) => void;\n};\n\nconst MediaDialog = (props: MediaDialogProps) => {\n const {\n show = false,\n onClose = noop,\n disableEsc = false,\n useOverflow = false,\n bsSize = 'lg',\n media = [],\n previousButtonText = 'Prev',\n previousButtonCallback = noop,\n nextButtonText = 'Next',\n nextButtonCallback = noop,\n className,\n ...remainingProps\n } = props;\n\n const [currentMediaIndex, setCurrentMediaIndex] = useState(0);\n\n const handlePrevious = () => {\n const oldIndex = currentMediaIndex;\n const newIndex = oldIndex === 0 ? props.media.length - 1 : oldIndex - 1;\n setCurrentMediaIndex(newIndex);\n previousButtonCallback(newIndex);\n };\n\n const handleNext = () => {\n const oldIndex = currentMediaIndex;\n const newIndex = oldIndex === props.media.length - 1 ? 0 : oldIndex + 1;\n setCurrentMediaIndex(newIndex);\n nextButtonCallback(newIndex);\n };\n\n const renderFallback = () => {\n return (\n <div className='text-center text-size-h3'>\n <span className='rioglyph rioglyph-missing text-size-200pct text-color-gray' />\n </div>\n );\n };\n\n const renderImage = (mediaData: MediaDialogMedia) => {\n const imageClassNames = classNames('img-responsive', mediaData.className && mediaData.className);\n\n return (\n // @ts-ignore\n <ImagePreloader src={mediaData.src} className={imageClassNames}>\n {({ status, image }: { status: 'PENDING' | 'LOADED' | 'FAILED'; image: { src: string } }) => {\n if (status === ImagePreloader.STATUS_LOADED) {\n // When image has been loaded, render the image tag\n return <img className='ani-fade-in' key={image.src} src={image.src} />;\n }\n\n if (status === ImagePreloader.STATUS_FAILED) {\n return renderFallback();\n }\n\n return <Spinner isInverse={false} />;\n }}\n </ImagePreloader>\n );\n };\n\n const renderVideo = (mediaData: MediaDialogMedia) => {\n const videoClassNames = classNames(mediaData.className && mediaData.className);\n return (\n <div className='flex-1-0'>\n <ResponsiveVideo\n src={mediaData.src}\n aspectRatio={mediaData.aspectRatio ?? '16by9'}\n className={videoClassNames}\n />\n </div>\n );\n };\n\n const renderMediaContent = (mediaData = {} as MediaDialogMedia) => {\n if (mediaData.type === MediaDialog.MEDIA_TYPE_VIDEO) {\n return renderVideo(mediaData);\n }\n\n // image media is default\n return mediaData.src && renderImage(mediaData);\n };\n\n const dialogClassName = classNames('media-dialog', className && className);\n const bodyClassNames = classNames('padding-0');\n const mediaContentClassNames = classNames('media-content', 'content-center');\n\n const mediaTitle = media[currentMediaIndex].title;\n const mediaSubtitle = media[currentMediaIndex].subtitle || null;\n\n return (\n <Dialog\n {...remainingProps}\n show={show}\n title={mediaTitle}\n subtitle={mediaSubtitle}\n body={<div className={mediaContentClassNames}>{renderMediaContent(media[currentMediaIndex])}</div>}\n footer={\n media?.length > 1 && (\n <>\n <button type='button' className='btn btn-primary btn-link pull-left' onClick={handlePrevious}>\n <span className='rioglyph rioglyph-chevron-left' />\n {previousButtonText}\n </button>\n <div>{`${currentMediaIndex + 1} / ${props.media.length}`}</div>\n <button type='button' className='btn btn-primary btn-link btn-icon-right' onClick={handleNext}>\n <span className='rioglyph rioglyph-chevron-right' />\n {nextButtonText}\n </button>\n </>\n )\n }\n onClose={onClose}\n className={dialogClassName}\n bodyClassName={bodyClassNames}\n disableEsc={disableEsc}\n useOverflow={useOverflow}\n bsSize={bsSize}\n />\n );\n};\n\nMediaDialog.MEDIA_TYPE_IMAGE = 'image' as const;\nMediaDialog.MEDIA_TYPE_VIDEO = 'video' as const;\n\nexport default MediaDialog;\n"],"names":["MediaDialog","props","show","onClose","noop","disableEsc","useOverflow","bsSize","media","previousButtonText","previousButtonCallback","nextButtonText","nextButtonCallback","className","remainingProps","currentMediaIndex","setCurrentMediaIndex","useState","handlePrevious","oldIndex","newIndex","handleNext","renderFallback","jsx","renderImage","mediaData","imageClassNames","classNames","ImagePreloader","status","image","Spinner","renderVideo","videoClassNames","ResponsiveVideo","renderMediaContent","dialogClassName","bodyClassNames","mediaContentClassNames","mediaTitle","mediaSubtitle","Dialog","jsxs","Fragment"],"mappings":";;;;;;;;AAgFA,MAAMA,IAAc,CAACC,MAA4B;AAC7C,QAAM;AAAA,IACF,MAAAC,IAAO;AAAA,IACP,SAAAC,IAAUC;AAAA,IACV,YAAAC,IAAa;AAAA,IACb,aAAAC,IAAc;AAAA,IACd,QAAAC,IAAS;AAAA,IACT,OAAAC,IAAQ,CAAA;AAAA,IACR,oBAAAC,IAAqB;AAAA,IACrB,wBAAAC,IAAyBN;AAAA,IACzB,gBAAAO,IAAiB;AAAA,IACjB,oBAAAC,IAAqBR;AAAA,IACrB,WAAAS;AAAA,IACA,GAAGC;AAAA,EAAA,IACHb,GAEE,CAACc,GAAmBC,CAAoB,IAAIC,EAAS,CAAC,GAEtDC,IAAiB,MAAM;AACzB,UAAMC,IAAWJ,GACXK,IAAWD,MAAa,IAAIlB,EAAM,MAAM,SAAS,IAAIkB,IAAW;AACtE,IAAAH,EAAqBI,CAAQ,GAC7BV,EAAuBU,CAAQ;AAAA,EACnC,GAEMC,IAAa,MAAM;AACrB,UAAMF,IAAWJ,GACXK,IAAWD,MAAalB,EAAM,MAAM,SAAS,IAAI,IAAIkB,IAAW;AACtE,IAAAH,EAAqBI,CAAQ,GAC7BR,EAAmBQ,CAAQ;AAAA,EAC/B,GAEME,IAAiB,MAEf,gBAAAC,EAAC,SAAI,WAAU,4BACX,4BAAC,QAAA,EAAK,WAAU,8DAA6D,EAAA,CACjF,GAIFC,IAAc,CAACC,MAAgC;AACjD,UAAMC,IAAkBC,EAAW,kBAAkBF,EAAU,aAAaA,EAAU,SAAS;AAE/F;AAAA;AAAA,MAEI,gBAAAF,EAACK,GAAA,EAAe,KAAKH,EAAU,KAAK,WAAWC,GAC1C,UAAA,CAAC,EAAE,QAAAG,GAAQ,OAAAC,EAAA,MACJD,MAAWD,EAAe,gBAEnB,gBAAAL,EAAC,SAAI,WAAU,eAA8B,KAAKO,EAAM,IAAA,GAAtBA,EAAM,GAAqB,IAGpED,MAAWD,EAAe,gBACnBN,EAAA,IAGJ,gBAAAC,EAACQ,GAAA,EAAQ,WAAW,GAAA,CAAO,EACtC,CACJ;AAAA;AAAA,EAER,GAEMC,IAAc,CAACP,MAAgC;AACjD,UAAMQ,IAAkBN,EAAWF,EAAU,aAAaA,EAAU,SAAS;AAC7E,WACI,gBAAAF,EAAC,OAAA,EAAI,WAAU,YACX,UAAA,gBAAAA;AAAA,MAACW;AAAA,MAAA;AAAA,QACG,KAAKT,EAAU;AAAA,QACf,aAAaA,EAAU,eAAe;AAAA,QACtC,WAAWQ;AAAA,MAAA;AAAA,IAAA,GAEnB;AAAA,EAER,GAEME,IAAqB,CAACV,IAAY,OAChCA,EAAU,SAASzB,EAAY,mBACxBgC,EAAYP,CAAS,IAIzBA,EAAU,OAAOD,EAAYC,CAAS,GAG3CW,IAAkBT,EAAW,gBAAgBd,KAAaA,CAAS,GACnEwB,IAAiBV,EAAW,WAAW,GACvCW,IAAyBX,EAAW,iBAAiB,gBAAgB,GAErEY,IAAa/B,EAAMO,CAAiB,EAAE,OACtCyB,IAAgBhC,EAAMO,CAAiB,EAAE,YAAY;AAE3D,SACI,gBAAAQ;AAAA,IAACkB;AAAA,IAAA;AAAA,MACI,GAAG3B;AAAA,MACJ,MAAAZ;AAAA,MACA,OAAOqC;AAAA,MACP,UAAUC;AAAA,MACV,wBAAO,OAAA,EAAI,WAAWF,GAAyB,UAAAH,EAAmB3B,EAAMO,CAAiB,CAAC,EAAA,CAAE;AAAA,MAC5F,QACIP,GAAO,SAAS,KACZ,gBAAAkC,EAAAC,GAAA,EACI,UAAA;AAAA,QAAA,gBAAAD,EAAC,YAAO,MAAK,UAAS,WAAU,sCAAqC,SAASxB,GAC1E,UAAA;AAAA,UAAA,gBAAAK,EAAC,QAAA,EAAK,WAAU,iCAAA,CAAiC;AAAA,UAChDd;AAAA,QAAA,GACL;AAAA,QACA,gBAAAc,EAAC,SAAK,UAAA,GAAGR,IAAoB,CAAC,MAAMd,EAAM,MAAM,MAAM,GAAA,CAAG;AAAA,0BACxD,UAAA,EAAO,MAAK,UAAS,WAAU,2CAA0C,SAASoB,GAC/E,UAAA;AAAA,UAAA,gBAAAE,EAAC,QAAA,EAAK,WAAU,kCAAA,CAAkC;AAAA,UACjDZ;AAAA,QAAA,EAAA,CACL;AAAA,MAAA,GACJ;AAAA,MAGR,SAAAR;AAAA,MACA,WAAWiC;AAAA,MACX,eAAeC;AAAA,MACf,YAAAhC;AAAA,MACA,aAAAC;AAAA,MACA,QAAAC;AAAA,IAAA;AAAA,EAAA;AAGZ;AAEAP,EAAY,mBAAmB;AAC/BA,EAAY,mBAAmB;"}
1
+ {"version":3,"file":"MediaDialog.js","sources":["../../../src/components/dialog/MediaDialog.tsx"],"sourcesContent":["import type React from 'react';\nimport { useState } from 'react';\nimport classNames from '../../utils/classNames';\nimport { noop } from 'es-toolkit/function';\n\nimport Dialog, { type BaseDialogProps } from './Dialog';\nimport ResponsiveVideo from '../video/ResponsiveVideo';\nimport ImagePreloader from '../preloader/ImagePreloader';\nimport Spinner from '../spinner/Spinner';\n\n// TODO: add keyboard support left/right\n\nexport type MediaDialogMedia = {\n /**\n * Defines the media type that is going to be displayed.\n *\n * Possible values are: `image` and `video`.\n */\n type: 'image' | 'video';\n\n /**\n * The source location for the media data.\n */\n src: string;\n\n /**\n * The name or title of the media used for the dialogs title.\n */\n title: string | React.ReactNode;\n\n /**\n * Additional media information used for the dialogs subtitle.\n */\n subtitle?: string | React.ReactNode;\n\n /**\n * Only relevant for videos where the aspect of the video is defined.\n *\n * Possible values are: `4by3` and `16by9`.\n * @default '16by9'\n */\n aspectRatio?: '4by3' | '16by9';\n\n /**\n * Additional classes for the image element.\n */\n className?: string;\n};\n\nexport type MediaDialogProps = BaseDialogProps & {\n /**\n * List of media objects.\n */\n media: MediaDialogMedia[];\n\n /**\n * The button text for switching to the previous media if there are multiple.\n */\n previousButtonText: string | React.ReactNode;\n\n /**\n * Callback function for when the previous button is clicked.\n * @param newIndex\n * @returns\n */\n previousButtonCallback?: (newIndex: number) => void;\n\n /**\n * The button text for switching to the next media if there are multiple.\n */\n nextButtonText: string | React.ReactNode;\n\n /**\n * Callback function for when the next button is clicked.\n * @param newIndex\n * @returns\n */\n nextButtonCallback?: (newIndex: number) => void;\n};\n\nconst MediaDialog = (props: MediaDialogProps) => {\n const {\n show = false,\n onClose = noop,\n disableEsc = false,\n useOverflow = false,\n bsSize = 'lg',\n media = [],\n previousButtonText = 'Prev',\n previousButtonCallback = noop,\n nextButtonText = 'Next',\n nextButtonCallback = noop,\n className,\n ...remainingProps\n } = props;\n\n const [currentMediaIndex, setCurrentMediaIndex] = useState(0);\n\n const handlePrevious = () => {\n const oldIndex = currentMediaIndex;\n const newIndex = oldIndex === 0 ? props.media.length - 1 : oldIndex - 1;\n setCurrentMediaIndex(newIndex);\n previousButtonCallback(newIndex);\n };\n\n const handleNext = () => {\n const oldIndex = currentMediaIndex;\n const newIndex = oldIndex === props.media.length - 1 ? 0 : oldIndex + 1;\n setCurrentMediaIndex(newIndex);\n nextButtonCallback(newIndex);\n };\n\n const renderFallback = () => (\n <div className='text-center text-size-h3'>\n <span className='rioglyph rioglyph-missing text-size-200pct text-color-gray' />\n </div>\n );\n\n const renderImage = (mediaData: MediaDialogMedia) => {\n const imageClassNames = classNames('img-responsive', mediaData.className && mediaData.className);\n\n return (\n // @ts-expect-error\n <ImagePreloader src={mediaData.src} className={imageClassNames}>\n {({ status, image }: { status: 'PENDING' | 'LOADED' | 'FAILED'; image: { src: string } }) => {\n if (status === ImagePreloader.STATUS_LOADED) {\n // When image has been loaded, render the image tag\n return <img className='ani-fade-in' key={image.src} src={image.src} />;\n }\n\n if (status === ImagePreloader.STATUS_FAILED) {\n return renderFallback();\n }\n\n return <Spinner isInverse={false} />;\n }}\n </ImagePreloader>\n );\n };\n\n const renderVideo = (mediaData: MediaDialogMedia) => {\n const videoClassNames = classNames(mediaData.className && mediaData.className);\n return (\n <div className='flex-1-0'>\n <ResponsiveVideo\n src={mediaData.src}\n aspectRatio={mediaData.aspectRatio ?? '16by9'}\n className={videoClassNames}\n />\n </div>\n );\n };\n\n const renderMediaContent = (mediaData = {} as MediaDialogMedia) => {\n if (mediaData.type === MediaDialog.MEDIA_TYPE_VIDEO) {\n return renderVideo(mediaData);\n }\n\n // image media is default\n return mediaData.src && renderImage(mediaData);\n };\n\n const dialogClassName = classNames('media-dialog', className && className);\n const bodyClassNames = classNames('padding-0');\n const mediaContentClassNames = classNames('media-content', 'content-center');\n\n const mediaTitle = media[currentMediaIndex].title;\n const mediaSubtitle = media[currentMediaIndex].subtitle || null;\n\n return (\n <Dialog\n {...remainingProps}\n show={show}\n title={mediaTitle}\n subtitle={mediaSubtitle}\n body={<div className={mediaContentClassNames}>{renderMediaContent(media[currentMediaIndex])}</div>}\n footer={\n media?.length > 1 && (\n <>\n <button type='button' className='btn btn-primary btn-link pull-left' onClick={handlePrevious}>\n <span className='rioglyph rioglyph-chevron-left' />\n {previousButtonText}\n </button>\n <div>{`${currentMediaIndex + 1} / ${props.media.length}`}</div>\n <button type='button' className='btn btn-primary btn-link btn-icon-right' onClick={handleNext}>\n <span className='rioglyph rioglyph-chevron-right' />\n {nextButtonText}\n </button>\n </>\n )\n }\n onClose={onClose}\n className={dialogClassName}\n bodyClassName={bodyClassNames}\n disableEsc={disableEsc}\n useOverflow={useOverflow}\n bsSize={bsSize}\n />\n );\n};\n\nMediaDialog.MEDIA_TYPE_IMAGE = 'image' as const;\nMediaDialog.MEDIA_TYPE_VIDEO = 'video' as const;\n\nexport default MediaDialog;\n"],"names":["MediaDialog","props","show","onClose","noop","disableEsc","useOverflow","bsSize","media","previousButtonText","previousButtonCallback","nextButtonText","nextButtonCallback","className","remainingProps","currentMediaIndex","setCurrentMediaIndex","useState","handlePrevious","oldIndex","newIndex","handleNext","renderFallback","jsx","renderImage","mediaData","imageClassNames","classNames","ImagePreloader","status","image","Spinner","renderVideo","videoClassNames","ResponsiveVideo","renderMediaContent","dialogClassName","bodyClassNames","mediaContentClassNames","mediaTitle","mediaSubtitle","Dialog","jsxs","Fragment"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { jsxs as t, jsx as r, Fragment as c } from "react/jsx-runtime";
1
+ import { jsxs as t, Fragment as r, jsx as c } from "react/jsx-runtime";
2
2
  import o from "../../utils/classNames.js";
3
3
  const L = (h) => {
4
4
  const {
@@ -12,7 +12,7 @@ const L = (h) => {
12
12
  children: s
13
13
  } = h, N = o("Divider", "position-relative", !i && "width-100pct", x), l = `${m}px`, e = {};
14
14
  i && (e.paddingLeft = l, e.paddingRight = l), i || (e.paddingTop = l, e.paddingBottom = l);
15
- const y = o("divider-line", `bg-${v}`), $ = typeof s == "string", g = /* @__PURE__ */ r(
15
+ const y = o("divider-line", `bg-${v}`), $ = typeof s == "string", g = /* @__PURE__ */ c(
16
16
  "div",
17
17
  {
18
18
  className: y,
@@ -21,20 +21,20 @@ const L = (h) => {
21
21
  height: i ? "100%" : `${p}px`
22
22
  }
23
23
  }
24
- ), d = /* @__PURE__ */ r("div", { className: "flex-1-0", children: g }), a = /* @__PURE__ */ r("div", { className: $ ? "padding-x-10" : "", children: s }), u = o("divider-title", "display-flex", "align-items-center");
24
+ ), d = /* @__PURE__ */ c("div", { className: "flex-1-0", children: g }), a = /* @__PURE__ */ c("div", { className: $ ? "padding-x-10" : "", children: s }), u = o("divider-title", "display-flex", "align-items-center");
25
25
  return /* @__PURE__ */ t("div", { className: N, style: e, children: [
26
26
  !f && !s && g,
27
27
  s && /* @__PURE__ */ t("div", { className: u, children: [
28
- n === "left" && /* @__PURE__ */ t(c, { children: [
28
+ n === "left" && /* @__PURE__ */ t(r, { children: [
29
29
  a,
30
30
  d
31
31
  ] }),
32
- n === "center" && /* @__PURE__ */ t(c, { children: [
32
+ n === "center" && /* @__PURE__ */ t(r, { children: [
33
33
  d,
34
34
  a,
35
35
  d
36
36
  ] }),
37
- n === "right" && /* @__PURE__ */ t(c, { children: [
37
+ n === "right" && /* @__PURE__ */ t(r, { children: [
38
38
  d,
39
39
  a
40
40
  ] })
@@ -65,6 +65,10 @@ export type ButtonDropdownProps<T extends DropdownToggleButtonType = 'button'> =
65
65
  * @default false
66
66
  */
67
67
  iconOnly?: boolean;
68
+ /**
69
+ * Optional rioglyph icon name forwarded to the underlying button toggle.
70
+ */
71
+ iconName?: string;
68
72
  /**
69
73
  * Defines whether the caret is shown or not.
70
74
  *