@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
@@ -8,11 +8,11 @@ import { DOWN as O, scrollItemIntoView as T, UP as g } from "../../utils/scrollI
8
8
  import $ from "../../hooks/useEffectOnce.js";
9
9
  import ee from "../../hooks/useKey.js";
10
10
  import te from "./DropdownHeader.js";
11
- import re from "./NoItemMessage.js";
12
- import se from "../spinner/Spinner.js";
11
+ import se from "./NoItemMessage.js";
12
+ import re from "../spinner/Spinner.js";
13
13
  const B = "data-item-id", ne = 0, H = "focus", L = O, be = (h) => {
14
14
  const {
15
- isOpen: r = !1,
15
+ isOpen: s = !1,
16
16
  isLoading: l = !1,
17
17
  updateDOMValues: u = N,
18
18
  onOpen: i = N,
@@ -27,33 +27,33 @@ const B = "data-item-id", ne = 0, H = "focus", L = O, be = (h) => {
27
27
  keyboardUsed: f,
28
28
  noItemMessage: W,
29
29
  dropdownClassName: X
30
- } = h, [n, k] = y(m || ne), [q, A] = y(f), w = _(L), s = _(null);
30
+ } = h, [n, k] = y(m || ne), [q, A] = y(f), w = _(L), r = _(null);
31
31
  b(() => {
32
- r && s.current && (s.current.scrollTop = 0);
33
- }, [r]), b(() => {
34
- typeof m == "number" && k(m), typeof f == "boolean" && A(f), r || (w.current = L);
35
- }, [m, f, r]), $(() => {
32
+ s && r.current && (r.current.scrollTop = 0);
33
+ }, [s]), b(() => {
34
+ typeof m == "number" && k(m), typeof f == "boolean" && A(f), s || (w.current = L);
35
+ }, [m, f, s]), $(() => {
36
36
  const e = F();
37
37
  u(e);
38
38
  });
39
- const I = Z({ pullRight: G, dropup: K, autoDropDirection: j, dropdownMenuRef: s }, [r]);
39
+ const I = Z({ pullRight: G, dropup: K, autoDropDirection: j, dropdownMenuRef: r }, [s]);
40
40
  Y(() => {
41
- if (s.current) {
42
- const e = s.current.parentElement;
41
+ if (r.current) {
42
+ const e = r.current.parentElement;
43
43
  I.dropup ? e?.classList.add("dropup") : e?.classList.remove("dropup");
44
44
  }
45
- }, [I, s]), b(() => {
46
- s.current && u(F());
47
- }, [s.current]), b(() => {
48
- r && T(
45
+ }, [I, r]), b(() => {
46
+ r.current && u(F());
47
+ }, [r.current]), b(() => {
48
+ s && T(
49
49
  w.current || L,
50
- s.current,
50
+ r.current,
51
51
  D()
52
52
  );
53
- }, [n, r]);
54
- const [v, U] = y(r);
55
- r && !v ? (i(I.dropup), U(r)) : !r && v && (E(), U(r)), ee((e) => {
56
- if (r)
53
+ }, [n, s]);
54
+ const [v, U] = y(s);
55
+ s && !v ? (i(I.dropup), U(s)) : !s && v && (E(), U(s)), ee((e) => {
56
+ if (s)
57
57
  switch (e.key) {
58
58
  case "Escape": {
59
59
  E();
@@ -68,11 +68,11 @@ const B = "data-item-id", ne = 0, H = "focus", L = O, be = (h) => {
68
68
  break;
69
69
  }
70
70
  case "ArrowUp": {
71
- e.preventDefault(), M(g), T(g, s.current, D());
71
+ e.preventDefault(), M(g), T(g, r.current, D());
72
72
  break;
73
73
  }
74
74
  case "ArrowDown": {
75
- e.preventDefault(), M(O), T(O, s.current, D());
75
+ e.preventDefault(), M(O), T(O, r.current, D());
76
76
  break;
77
77
  }
78
78
  }
@@ -92,12 +92,14 @@ const B = "data-item-id", ne = 0, H = "focus", L = O, be = (h) => {
92
92
  w.current = e;
93
93
  const a = e === g ? o.length - 1 : 0;
94
94
  k(t < 0 ? a : t), A(!0);
95
- }, S = () => s.current?.getElementsByTagName("a") || [], F = () => {
96
- if (s.current)
97
- return [...S()].map((t) => ({
98
- id: t.getAttribute(B),
99
- text: t.textContent
100
- }));
95
+ }, S = () => r.current?.getElementsByTagName("a") || [], F = () => {
96
+ if (r.current)
97
+ return [...S()].map(
98
+ (t) => ({
99
+ id: t.getAttribute(B),
100
+ text: t.textContent
101
+ })
102
+ );
101
103
  }, D = () => [...S()].find((t) => t.className.includes(H)), z = (e) => {
102
104
  if (e.preventDefault(), V(o))
103
105
  return;
@@ -111,8 +113,8 @@ const B = "data-item-id", ne = 0, H = "focus", L = O, be = (h) => {
111
113
  const t = e.currentTarget.getElementsByTagName("input")[0].value, a = o.find((d) => d.id === t);
112
114
  p(a);
113
115
  }, R = C("dropdown-menu", I.pullRight && "pull-right", X);
114
- return V(o) ? /* @__PURE__ */ c(re, { noItemMessage: W, className: R }) : /* @__PURE__ */ x("ul", { className: R, ref: s, role: "menu", children: [
115
- l && /* @__PURE__ */ c("div", { className: "display-flex justify-content-center padding-10", children: /* @__PURE__ */ c(se, {}) }),
116
+ return V(o) ? /* @__PURE__ */ c(se, { noItemMessage: W, className: R }) : /* @__PURE__ */ x("ul", { className: R, ref: r, role: "menu", children: [
117
+ l && /* @__PURE__ */ c("div", { className: "display-flex justify-content-center padding-10", children: /* @__PURE__ */ c(re, {}) }),
116
118
  !l && o.map((e, t) => {
117
119
  if (e.header)
118
120
  return /* @__PURE__ */ c(te, { icon: e.icon, label: e.label }, e.id);
@@ -143,8 +145,8 @@ const B = "data-item-id", ne = 0, H = "focus", L = O, be = (h) => {
143
145
  ) }, e.id);
144
146
  })
145
147
  ] });
146
- }, Ne = (h, r, l) => {
147
- const u = h.filter((i) => i.text.toLowerCase().includes(r.toLowerCase()));
148
+ }, Ne = (h, s, l) => {
149
+ const u = h.filter((i) => i.text.toLowerCase().includes(s.toLowerCase()));
148
150
  return l.filter((i) => u.find((p) => p.id === i.id));
149
151
  };
150
152
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"BaseSelectDropdown.js","sources":["../../../src/components/selects/BaseSelectDropdown.tsx"],"sourcesContent":["import type React from 'react';\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { isEmpty } from 'es-toolkit/compat';\nimport { noop } from 'es-toolkit/function';\n\nimport classNames from '../../utils/classNames';\nimport { useDropDirection } from '../../utils/useDropDirection';\nimport { DOWN, scrollItemIntoView, UP } from '../../utils/scrollItemIntoView';\nimport useEffectOnce from '../../hooks/useEffectOnce';\nimport useKey from '../../useKey';\nimport DropdownHeader from './DropdownHeader';\nimport NoItemMessage from './NoItemMessage';\nimport Spinner from '../spinner/Spinner';\n\nconst DATA_ATTRIBUTE_ID = 'data-item-id';\nconst DEFAULT_FOCUSED_ITEM_INDEX = 0;\nconst HIGHLIGHT_CLASS = 'focus';\nconst DEFAULT_SCROLL_DIRECTION = DOWN;\n\nexport type OptionDOMValue = {\n id: string;\n text: string;\n};\n\nexport type SelectOption = {\n /**\n * Used to identify an option.\n */\n id: string;\n\n /**\n * The option item text.\n */\n label: string | React.ReactNode;\n\n /**\n * Icon to be displayed in front of the label.\n */\n icon?: React.ReactNode;\n\n /**\n * Defines whether the menu item is selected.\n *\n * @default false\n */\n selected?: boolean;\n\n /**\n * Setting \"disabled\" to true will disable the respective item.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Will treat the given value as a menu header\n */\n header?: boolean;\n};\n\nexport type BaseSelectDropdownProps<T extends SelectOption> = {\n options?: T[];\n isOpen?: boolean;\n isLoading?: boolean;\n updateDOMValues?: (values: OptionDOMValue[] | undefined) => void;\n onOpen?: (hasDropup: boolean) => void;\n onSelect?: (selectedItem: T | undefined) => void;\n onClose?: () => void;\n placeholder?: string | React.ReactNode;\n dropup?: boolean;\n pullRight?: boolean;\n autoDropDirection?: boolean;\n noItemMessage?: string | React.ReactNode;\n focusedItemIndex?: number;\n dropdownClassName?: string;\n keyboardUsed?: boolean;\n useActiveClass?: boolean;\n};\n\nconst BaseSelectDropdown = <T extends SelectOption>(props: BaseSelectDropdownProps<T>) => {\n const {\n isOpen = false,\n isLoading = false,\n updateDOMValues = noop,\n onOpen = noop,\n onSelect = noop,\n onClose = noop,\n options = [],\n autoDropDirection = true,\n dropup = false,\n pullRight = false,\n useActiveClass = false,\n focusedItemIndex: externalFocusedItemIndex,\n keyboardUsed: externalKeyboardUsed,\n noItemMessage,\n dropdownClassName,\n } = props;\n\n const [focusedItemIndex, setFocusedItemIndex] = useState(externalFocusedItemIndex || DEFAULT_FOCUSED_ITEM_INDEX);\n const [keyboardUsed, setKeyboardUsed] = useState(externalKeyboardUsed);\n const lastScrollDirectionRef = useRef<typeof UP | typeof DOWN>(DEFAULT_SCROLL_DIRECTION);\n\n const dropdownMenuRef = useRef<HTMLUListElement>(null);\n\n // Reset scroll position whenever the menu opens to avoid retaining old scroll offsets\n useEffect(() => {\n if (isOpen && dropdownMenuRef.current) {\n dropdownMenuRef.current.scrollTop = 0;\n }\n }, [isOpen]);\n\n // Keep internal focus state in sync when the dropdown opens/closes or when parent-controlled values change\n useEffect(() => {\n if (typeof externalFocusedItemIndex === 'number') {\n setFocusedItemIndex(externalFocusedItemIndex);\n }\n\n if (typeof externalKeyboardUsed === 'boolean') {\n setKeyboardUsed(externalKeyboardUsed);\n }\n\n if (!isOpen) {\n lastScrollDirectionRef.current = DEFAULT_SCROLL_DIRECTION;\n }\n }, [externalFocusedItemIndex, externalKeyboardUsed, isOpen]);\n\n useEffectOnce(() => {\n // all available items need to be rendered in order to know their DOM value\n // which will be used for filtering in the parent component\n const currentItemDOMValues = updateItemDOMValues();\n updateDOMValues(currentItemDOMValues);\n });\n\n // Overwrite position of dropdown menu in case auto drop is enabled\n const dropDirection = useDropDirection({ pullRight, dropup, autoDropDirection, dropdownMenuRef }, [isOpen]);\n\n // Add or remove the \"dropup\" class from the parent Select/Multiselect component to position\n // the dropdown element accordingly via CSS\n useLayoutEffect(() => {\n if (dropdownMenuRef.current) {\n const parent = dropdownMenuRef.current.parentElement;\n if (dropDirection.dropup) {\n parent?.classList.add('dropup');\n } else {\n parent?.classList.remove('dropup');\n }\n }\n }, [dropDirection, dropdownMenuRef]);\n\n useEffect(() => {\n if (dropdownMenuRef.current) {\n updateDOMValues(updateItemDOMValues());\n }\n }, [dropdownMenuRef.current]);\n\n // Scroll the focused item into view whenever focus changes\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n scrollItemIntoView(\n lastScrollDirectionRef.current || DEFAULT_SCROLL_DIRECTION,\n dropdownMenuRef.current,\n getFocusedOptionNode()\n );\n }, [focusedItemIndex, isOpen]);\n\n // update internal state for isOpen\n const [previousIsOpen, setPreviousIsOpen] = useState(isOpen);\n if (isOpen && !previousIsOpen) {\n onOpen(dropDirection.dropup);\n setPreviousIsOpen(isOpen);\n } else if (!isOpen && previousIsOpen) {\n onClose();\n setPreviousIsOpen(isOpen);\n }\n\n useKey(event => {\n if (isOpen) {\n switch (event.key) {\n case 'Escape': {\n // close dropdown on esc\n onClose();\n break;\n }\n case 'Tab': {\n // close dropdown on tab\n onClose();\n break;\n }\n case 'Enter': {\n // select item on enter\n selectOptionOnEnter(event);\n break;\n }\n case 'ArrowUp': {\n // prevent scrolling the page when dropdown menu is open\n event.preventDefault();\n\n // select item above on arrow up key\n focusOption(UP);\n scrollItemIntoView(UP, dropdownMenuRef.current, getFocusedOptionNode());\n break;\n }\n case 'ArrowDown': {\n // prevent scrolling the page when dropdown menu is open\n event.preventDefault();\n\n // select item below on arrow down key\n focusOption(DOWN);\n scrollItemIntoView(DOWN, dropdownMenuRef.current, getFocusedOptionNode());\n break;\n }\n default:\n break;\n }\n }\n });\n\n const focusOption = (direction: typeof UP | typeof DOWN) => {\n let nextFocusedItem = 0;\n\n switch (direction) {\n case UP: {\n nextFocusedItem = focusedItemIndex <= 0 ? focusedItemIndex : focusedItemIndex - 1;\n break;\n }\n case DOWN: {\n nextFocusedItem = focusedItemIndex === options.length - 1 ? focusedItemIndex : focusedItemIndex + 1;\n break;\n }\n default:\n break;\n }\n\n lastScrollDirectionRef.current = direction;\n\n // In case the next item index is negative, means outside the bounds of the items,\n // reset it depending on the current direction\n const indexLimit = direction === UP ? options.length - 1 : 0;\n\n setFocusedItemIndex(nextFocusedItem < 0 ? indexLimit : nextFocusedItem);\n setKeyboardUsed(true);\n };\n\n const getOptionNodes = () => {\n const node = dropdownMenuRef.current;\n return node?.getElementsByTagName('a') || [];\n };\n\n const updateItemDOMValues = () => {\n if (dropdownMenuRef.current) {\n const optionNodes = getOptionNodes();\n return [...optionNodes].map(item => {\n return {\n id: item.getAttribute(DATA_ATTRIBUTE_ID),\n text: item.textContent,\n } as OptionDOMValue;\n });\n }\n };\n\n const getFocusedOptionNode = () => {\n const optionNodes = getOptionNodes();\n return [...optionNodes].find(item => item.className.includes(HIGHLIGHT_CLASS));\n };\n\n const selectOptionOnEnter = (event: KeyboardEvent) => {\n event.preventDefault();\n\n // When no filter result was found, avoid selecting anything\n if (isEmpty(options)) {\n return;\n }\n\n const match = getFocusedOptionNode();\n\n if (match) {\n const selectedItem = options.find(option => option.id === match.getAttribute(DATA_ATTRIBUTE_ID));\n onSelect(selectedItem);\n }\n };\n\n const handleOptionChange = (event: React.MouseEvent<HTMLAnchorElement>) => {\n event.preventDefault();\n\n const optionId = event.currentTarget.getElementsByTagName('input')[0].value;\n const selectedItem = options.find(option => option.id === optionId);\n\n onSelect(selectedItem);\n };\n\n const dropdownMenuClasses = classNames('dropdown-menu', dropDirection.pullRight && 'pull-right', dropdownClassName);\n\n // Don't show the dropdown, when no match are found when filtering unless there is a not found message\n if (isEmpty(options)) {\n return <NoItemMessage noItemMessage={noItemMessage} className={dropdownMenuClasses} />;\n }\n\n return (\n <ul className={dropdownMenuClasses} ref={dropdownMenuRef} role='menu'>\n {isLoading && (\n <div className='display-flex justify-content-center padding-10'>\n <Spinner />\n </div>\n )}\n {!isLoading &&\n options.map((option, index) => {\n if (option.header) {\n return <DropdownHeader key={option.id} icon={option.icon} label={option.label} />;\n }\n\n // Show focused style only when keyboard is in use\n const anchorClassNames = classNames(\n keyboardUsed && focusedItemIndex === index ? HIGHLIGHT_CLASS : '',\n option.disabled && 'pointer-events-none',\n 'display-flex align-items-center gap-3'\n );\n\n const wrapperClassNames = classNames(\n option.disabled && 'disabled',\n useActiveClass && option.selected && 'active'\n );\n\n return (\n <li key={option.id} className={wrapperClassNames} role='listitem'>\n <a\n role='menuitem'\n className={anchorClassNames}\n data-item-id={option.id}\n data-item-index={index}\n // Note, we need to assign the click callback only when it's not disabled\n // otherwise the functions is still triggered\n onClick={option.disabled ? undefined : handleOptionChange}\n >\n <span className='selected-option-dropdown-item'>\n {option.icon && <>{option.icon}</>}\n {option.label}\n </span>\n <input type='hidden' value={option.id} />\n </a>\n </li>\n );\n })}\n </ul>\n );\n};\n\nexport const filterOptions = <T extends SelectOption>(\n itemDOMValues: OptionDOMValue[],\n filterValue: string,\n options: T[]\n) => {\n const filteredDOMValues = itemDOMValues.filter(item => item.text.toLowerCase().includes(filterValue.toLowerCase()));\n\n // Filter the options according to the filtered DOM values and map the IDs since the filter cannot be done\n // on the options itself as they might contain arbitrary components\n return options.filter(option => {\n return filteredDOMValues.find(domValue => domValue.id === option.id);\n });\n};\n\nexport default BaseSelectDropdown;\n"],"names":["DATA_ATTRIBUTE_ID","DEFAULT_FOCUSED_ITEM_INDEX","HIGHLIGHT_CLASS","DEFAULT_SCROLL_DIRECTION","DOWN","BaseSelectDropdown","props","isOpen","isLoading","updateDOMValues","noop","onOpen","onSelect","onClose","options","autoDropDirection","dropup","pullRight","useActiveClass","externalFocusedItemIndex","externalKeyboardUsed","noItemMessage","dropdownClassName","focusedItemIndex","setFocusedItemIndex","useState","keyboardUsed","setKeyboardUsed","lastScrollDirectionRef","useRef","dropdownMenuRef","useEffect","useEffectOnce","currentItemDOMValues","updateItemDOMValues","dropDirection","useDropDirection","useLayoutEffect","parent","scrollItemIntoView","getFocusedOptionNode","previousIsOpen","setPreviousIsOpen","useKey","event","selectOptionOnEnter","focusOption","UP","direction","nextFocusedItem","indexLimit","getOptionNodes","item","isEmpty","match","selectedItem","option","handleOptionChange","optionId","dropdownMenuClasses","classNames","jsx","NoItemMessage","Spinner","index","DropdownHeader","anchorClassNames","wrapperClassNames","jsxs","Fragment","filterOptions","itemDOMValues","filterValue","filteredDOMValues","domValue"],"mappings":"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"}
1
+ {"version":3,"file":"BaseSelectDropdown.js","sources":["../../../src/components/selects/BaseSelectDropdown.tsx"],"sourcesContent":["import type React from 'react';\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { isEmpty } from 'es-toolkit/compat';\nimport { noop } from 'es-toolkit/function';\n\nimport classNames from '../../utils/classNames';\nimport { useDropDirection } from '../../utils/useDropDirection';\nimport { DOWN, scrollItemIntoView, UP } from '../../utils/scrollItemIntoView';\nimport useEffectOnce from '../../hooks/useEffectOnce';\nimport useKey from '../../useKey';\nimport DropdownHeader from './DropdownHeader';\nimport NoItemMessage from './NoItemMessage';\nimport Spinner from '../spinner/Spinner';\n\nconst DATA_ATTRIBUTE_ID = 'data-item-id';\nconst DEFAULT_FOCUSED_ITEM_INDEX = 0;\nconst HIGHLIGHT_CLASS = 'focus';\nconst DEFAULT_SCROLL_DIRECTION = DOWN;\n\nexport type OptionDOMValue = {\n id: string;\n text: string;\n};\n\nexport type SelectOption = {\n /**\n * Used to identify an option.\n */\n id: string;\n\n /**\n * The option item text.\n */\n label: string | React.ReactNode;\n\n /**\n * Icon to be displayed in front of the label.\n */\n icon?: React.ReactNode;\n\n /**\n * Defines whether the menu item is selected.\n *\n * @default false\n */\n selected?: boolean;\n\n /**\n * Setting \"disabled\" to true will disable the respective item.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Will treat the given value as a menu header\n */\n header?: boolean;\n};\n\nexport type BaseSelectDropdownProps<T extends SelectOption> = {\n options?: T[];\n isOpen?: boolean;\n isLoading?: boolean;\n updateDOMValues?: (values: OptionDOMValue[] | undefined) => void;\n onOpen?: (hasDropup: boolean) => void;\n onSelect?: (selectedItem: T | undefined) => void;\n onClose?: () => void;\n placeholder?: string | React.ReactNode;\n dropup?: boolean;\n pullRight?: boolean;\n autoDropDirection?: boolean;\n noItemMessage?: string | React.ReactNode;\n focusedItemIndex?: number;\n dropdownClassName?: string;\n keyboardUsed?: boolean;\n useActiveClass?: boolean;\n};\n\nconst BaseSelectDropdown = <T extends SelectOption>(props: BaseSelectDropdownProps<T>) => {\n const {\n isOpen = false,\n isLoading = false,\n updateDOMValues = noop,\n onOpen = noop,\n onSelect = noop,\n onClose = noop,\n options = [],\n autoDropDirection = true,\n dropup = false,\n pullRight = false,\n useActiveClass = false,\n focusedItemIndex: externalFocusedItemIndex,\n keyboardUsed: externalKeyboardUsed,\n noItemMessage,\n dropdownClassName,\n } = props;\n\n const [focusedItemIndex, setFocusedItemIndex] = useState(externalFocusedItemIndex || DEFAULT_FOCUSED_ITEM_INDEX);\n const [keyboardUsed, setKeyboardUsed] = useState(externalKeyboardUsed);\n const lastScrollDirectionRef = useRef<typeof UP | typeof DOWN>(DEFAULT_SCROLL_DIRECTION);\n\n const dropdownMenuRef = useRef<HTMLUListElement>(null);\n\n // Reset scroll position whenever the menu opens to avoid retaining old scroll offsets\n useEffect(() => {\n if (isOpen && dropdownMenuRef.current) {\n dropdownMenuRef.current.scrollTop = 0;\n }\n }, [isOpen]);\n\n // Keep internal focus state in sync when the dropdown opens/closes or when parent-controlled values change\n useEffect(() => {\n if (typeof externalFocusedItemIndex === 'number') {\n setFocusedItemIndex(externalFocusedItemIndex);\n }\n\n if (typeof externalKeyboardUsed === 'boolean') {\n setKeyboardUsed(externalKeyboardUsed);\n }\n\n if (!isOpen) {\n lastScrollDirectionRef.current = DEFAULT_SCROLL_DIRECTION;\n }\n }, [externalFocusedItemIndex, externalKeyboardUsed, isOpen]);\n\n useEffectOnce(() => {\n // all available items need to be rendered in order to know their DOM value\n // which will be used for filtering in the parent component\n const currentItemDOMValues = updateItemDOMValues();\n updateDOMValues(currentItemDOMValues);\n });\n\n // Overwrite position of dropdown menu in case auto drop is enabled\n const dropDirection = useDropDirection({ pullRight, dropup, autoDropDirection, dropdownMenuRef }, [isOpen]);\n\n // Add or remove the \"dropup\" class from the parent Select/Multiselect component to position\n // the dropdown element accordingly via CSS\n useLayoutEffect(() => {\n if (dropdownMenuRef.current) {\n const parent = dropdownMenuRef.current.parentElement;\n if (dropDirection.dropup) {\n parent?.classList.add('dropup');\n } else {\n parent?.classList.remove('dropup');\n }\n }\n }, [dropDirection, dropdownMenuRef]);\n\n useEffect(() => {\n if (dropdownMenuRef.current) {\n updateDOMValues(updateItemDOMValues());\n }\n }, [dropdownMenuRef.current]);\n\n // Scroll the focused item into view whenever focus changes\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n scrollItemIntoView(\n lastScrollDirectionRef.current || DEFAULT_SCROLL_DIRECTION,\n dropdownMenuRef.current,\n getFocusedOptionNode()\n );\n }, [focusedItemIndex, isOpen]);\n\n // update internal state for isOpen\n const [previousIsOpen, setPreviousIsOpen] = useState(isOpen);\n if (isOpen && !previousIsOpen) {\n onOpen(dropDirection.dropup);\n setPreviousIsOpen(isOpen);\n } else if (!isOpen && previousIsOpen) {\n onClose();\n setPreviousIsOpen(isOpen);\n }\n\n useKey(event => {\n if (isOpen) {\n switch (event.key) {\n case 'Escape': {\n // close dropdown on esc\n onClose();\n break;\n }\n case 'Tab': {\n // close dropdown on tab\n onClose();\n break;\n }\n case 'Enter': {\n // select item on enter\n selectOptionOnEnter(event);\n break;\n }\n case 'ArrowUp': {\n // prevent scrolling the page when dropdown menu is open\n event.preventDefault();\n\n // select item above on arrow up key\n focusOption(UP);\n scrollItemIntoView(UP, dropdownMenuRef.current, getFocusedOptionNode());\n break;\n }\n case 'ArrowDown': {\n // prevent scrolling the page when dropdown menu is open\n event.preventDefault();\n\n // select item below on arrow down key\n focusOption(DOWN);\n scrollItemIntoView(DOWN, dropdownMenuRef.current, getFocusedOptionNode());\n break;\n }\n default:\n break;\n }\n }\n });\n\n const focusOption = (direction: typeof UP | typeof DOWN) => {\n let nextFocusedItem = 0;\n\n switch (direction) {\n case UP: {\n nextFocusedItem = focusedItemIndex <= 0 ? focusedItemIndex : focusedItemIndex - 1;\n break;\n }\n case DOWN: {\n nextFocusedItem = focusedItemIndex === options.length - 1 ? focusedItemIndex : focusedItemIndex + 1;\n break;\n }\n default:\n break;\n }\n\n lastScrollDirectionRef.current = direction;\n\n // In case the next item index is negative, means outside the bounds of the items,\n // reset it depending on the current direction\n const indexLimit = direction === UP ? options.length - 1 : 0;\n\n setFocusedItemIndex(nextFocusedItem < 0 ? indexLimit : nextFocusedItem);\n setKeyboardUsed(true);\n };\n\n const getOptionNodes = () => {\n const node = dropdownMenuRef.current;\n return node?.getElementsByTagName('a') || [];\n };\n\n const updateItemDOMValues = () => {\n if (dropdownMenuRef.current) {\n const optionNodes = getOptionNodes();\n return [...optionNodes].map(\n item =>\n ({\n id: item.getAttribute(DATA_ATTRIBUTE_ID),\n text: item.textContent,\n }) as OptionDOMValue\n );\n }\n };\n\n const getFocusedOptionNode = () => {\n const optionNodes = getOptionNodes();\n return [...optionNodes].find(item => item.className.includes(HIGHLIGHT_CLASS));\n };\n\n const selectOptionOnEnter = (event: KeyboardEvent) => {\n event.preventDefault();\n\n // When no filter result was found, avoid selecting anything\n if (isEmpty(options)) {\n return;\n }\n\n const match = getFocusedOptionNode();\n\n if (match) {\n const selectedItem = options.find(option => option.id === match.getAttribute(DATA_ATTRIBUTE_ID));\n onSelect(selectedItem);\n }\n };\n\n const handleOptionChange = (event: React.MouseEvent<HTMLAnchorElement>) => {\n event.preventDefault();\n\n const optionId = event.currentTarget.getElementsByTagName('input')[0].value;\n const selectedItem = options.find(option => option.id === optionId);\n\n onSelect(selectedItem);\n };\n\n const dropdownMenuClasses = classNames('dropdown-menu', dropDirection.pullRight && 'pull-right', dropdownClassName);\n\n // Don't show the dropdown, when no match are found when filtering unless there is a not found message\n if (isEmpty(options)) {\n return <NoItemMessage noItemMessage={noItemMessage} className={dropdownMenuClasses} />;\n }\n\n return (\n <ul className={dropdownMenuClasses} ref={dropdownMenuRef} role='menu'>\n {isLoading && (\n <div className='display-flex justify-content-center padding-10'>\n <Spinner />\n </div>\n )}\n {!isLoading &&\n options.map((option, index) => {\n if (option.header) {\n return <DropdownHeader key={option.id} icon={option.icon} label={option.label} />;\n }\n\n // Show focused style only when keyboard is in use\n const anchorClassNames = classNames(\n keyboardUsed && focusedItemIndex === index ? HIGHLIGHT_CLASS : '',\n option.disabled && 'pointer-events-none',\n 'display-flex align-items-center gap-3'\n );\n\n const wrapperClassNames = classNames(\n option.disabled && 'disabled',\n useActiveClass && option.selected && 'active'\n );\n\n return (\n <li key={option.id} className={wrapperClassNames} role='listitem'>\n <a\n role='menuitem'\n className={anchorClassNames}\n data-item-id={option.id}\n data-item-index={index}\n // Note, we need to assign the click callback only when it's not disabled\n // otherwise the functions is still triggered\n onClick={option.disabled ? undefined : handleOptionChange}\n >\n <span className='selected-option-dropdown-item'>\n {option.icon && <>{option.icon}</>}\n {option.label}\n </span>\n <input type='hidden' value={option.id} />\n </a>\n </li>\n );\n })}\n </ul>\n );\n};\n\nexport const filterOptions = <T extends SelectOption>(\n itemDOMValues: OptionDOMValue[],\n filterValue: string,\n options: T[]\n) => {\n const filteredDOMValues = itemDOMValues.filter(item => item.text.toLowerCase().includes(filterValue.toLowerCase()));\n\n // Filter the options according to the filtered DOM values and map the IDs since the filter cannot be done\n // on the options itself as they might contain arbitrary components\n return options.filter(option => filteredDOMValues.find(domValue => domValue.id === option.id));\n};\n\nexport default BaseSelectDropdown;\n"],"names":["DATA_ATTRIBUTE_ID","DEFAULT_FOCUSED_ITEM_INDEX","HIGHLIGHT_CLASS","DEFAULT_SCROLL_DIRECTION","DOWN","BaseSelectDropdown","props","isOpen","isLoading","updateDOMValues","noop","onOpen","onSelect","onClose","options","autoDropDirection","dropup","pullRight","useActiveClass","externalFocusedItemIndex","externalKeyboardUsed","noItemMessage","dropdownClassName","focusedItemIndex","setFocusedItemIndex","useState","keyboardUsed","setKeyboardUsed","lastScrollDirectionRef","useRef","dropdownMenuRef","useEffect","useEffectOnce","currentItemDOMValues","updateItemDOMValues","dropDirection","useDropDirection","useLayoutEffect","parent","scrollItemIntoView","getFocusedOptionNode","previousIsOpen","setPreviousIsOpen","useKey","event","selectOptionOnEnter","focusOption","UP","direction","nextFocusedItem","indexLimit","getOptionNodes","item","isEmpty","match","selectedItem","option","handleOptionChange","optionId","dropdownMenuClasses","classNames","jsx","NoItemMessage","Spinner","index","DropdownHeader","anchorClassNames","wrapperClassNames","jsxs","Fragment","filterOptions","itemDOMValues","filterValue","filteredDOMValues","domValue"],"mappings":"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"}
@@ -114,6 +114,12 @@ export type MultiselectProps<T extends MultiselectOption> = Omit<WithFeedbackAnd
114
114
  * @default false
115
115
  */
116
116
  useFilter?: boolean;
117
+ /**
118
+ * Set to show a clear button.
119
+ *
120
+ * @default false
121
+ */
122
+ useClear?: boolean;
117
123
  /**
118
124
  * Text that shall be shown when not match was found when filtering.
119
125
  */
@@ -1,207 +1,221 @@
1
- import { jsxs as C, jsx as c, Fragment as xe } from "react/jsx-runtime";
2
- import { useState as n, useRef as x } from "react";
3
- import { isEqual as L } from "es-toolkit/predicate";
4
- import { isEmpty as ve } from "es-toolkit/compat";
5
- import { noop as Ae } from "es-toolkit/function";
6
- import q from "../../utils/classNames.js";
7
- import Te, { filterOptions as ye } from "./BaseSelectDropdown.js";
8
- import Ne from "./MultiselectToggleCounter.js";
9
- import Re from "./MultiselectToggleSelection.js";
10
- import Ee from "./MultiselectToggleFilter.js";
11
- import Ve from "./MultiselectTogglePlaceholder.js";
12
- import ke from "../../hooks/useClickOutside.js";
13
- import Pe from "../../hooks/useMergeRefs.js";
14
- import Ue from "./WithFeedbackAndAddon.js";
15
- const z = -1, Ze = (X) => {
1
+ import { jsxs as h, Fragment as Ne, jsx as a } from "react/jsx-runtime";
2
+ import { useState as n, useRef as A } from "react";
3
+ import { isEqual as z } from "es-toolkit/predicate";
4
+ import { isEmpty as Te } from "es-toolkit/compat";
5
+ import { noop as ye } from "es-toolkit/function";
6
+ import X from "../../utils/classNames.js";
7
+ import Re, { filterOptions as Ee } from "./BaseSelectDropdown.js";
8
+ import Ve from "./ClearButton.js";
9
+ import _e from "./MultiselectToggleCounter.js";
10
+ import ke from "./MultiselectToggleSelection.js";
11
+ import Pe from "./MultiselectToggleFilter.js";
12
+ import Ue from "./MultiselectTogglePlaceholder.js";
13
+ import Be from "../../hooks/useClickOutside.js";
14
+ import Ke from "../../hooks/useMergeRefs.js";
15
+ import We from "./WithFeedbackAndAddon.js";
16
+ const N = -1, ot = (G) => {
16
17
  const {
17
- name: v,
18
- id: G = v,
18
+ name: T,
19
+ id: H = T,
19
20
  options: o = [],
20
- value: a,
21
- onChange: A = Ae,
22
- placeholder: H,
23
- isLoading: J = !1,
24
- dropup: Q = !1,
25
- pullRight: Y = !1,
26
- autoDropDirection: Z = !0,
27
- bsSize: p = "md",
28
- disabled: T = !1,
29
- tabIndex: $ = 0,
30
- hasError: ee = !1,
31
- useFilter: y = !1,
32
- multiline: d = !1,
33
- noItemMessage: te,
34
- counterMessage: m,
35
- renderCounterMessage: g,
36
- showSelectedItemIcon: se = !1,
37
- showUnselectedItemIcons: N = !1,
38
- className: R,
39
- inputAddon: h,
40
- errorMessage: E,
41
- warningMessage: V,
42
- messageWhiteSpace: oe = "normal",
43
- btnClassName: k,
44
- dropdownClassName: ne,
45
- ...re
46
- } = X, [r, I] = n(!1), [l, u] = n(a || []), [P, w] = n(!1), [U, F] = n(""), [le, f] = n(o), [ie, ae] = n([]), [ce, K] = n(z), [de, S] = n(!1), B = x(null), M = x(null), ue = ke((e) => {
47
- M.current && !M.current.contains(e.target) && j();
48
- }), fe = Pe(M, ue), O = (e, t) => {
21
+ value: i,
22
+ onChange: I = ye,
23
+ placeholder: J,
24
+ isLoading: Q = !1,
25
+ dropup: Y = !1,
26
+ pullRight: Z = !1,
27
+ autoDropDirection: $ = !0,
28
+ bsSize: w = "md",
29
+ disabled: y = !1,
30
+ tabIndex: ee = 0,
31
+ hasError: te = !1,
32
+ useFilter: R = !1,
33
+ useClear: se = !1,
34
+ multiline: f = !1,
35
+ noItemMessage: oe,
36
+ counterMessage: C,
37
+ renderCounterMessage: F,
38
+ showSelectedItemIcon: ne = !1,
39
+ showUnselectedItemIcons: E = !1,
40
+ className: V,
41
+ inputAddon: S,
42
+ errorMessage: _,
43
+ warningMessage: k,
44
+ messageWhiteSpace: re = "normal",
45
+ btnClassName: P,
46
+ dropdownClassName: le,
47
+ ...ae
48
+ } = G, [l, M] = n(!1), [r, d] = n(i || []), [U, m] = n(!1), [B, p] = n(""), [ie, u] = n(o), [ce, de] = n([]), [ue, O] = n(N), [fe, g] = n(!1), K = A(null), b = A(null), me = Be((e) => {
49
+ b.current && !b.current.contains(e.target) && L();
50
+ }), pe = Ke(b, me), D = (e, t) => {
49
51
  if (t)
50
- u(t);
52
+ d(t);
51
53
  else if (e) {
52
- const s = e.filter((i) => i.selected);
53
- u(s.map((i) => i.id));
54
+ const s = e.filter((c) => c.selected);
55
+ d(s.map((c) => c.id));
54
56
  }
55
- }, W = x(!0);
56
- W.current && (O(o, a), W.current = !1);
57
- const [pe, me] = n(a);
58
- L(a, pe) || (O(o, a), me(a));
59
- const [ge, he] = n(o);
60
- L(o, ge) || (O(o, a), f(o), he(o));
61
- const Ie = (e = []) => {
62
- ae(e);
63
- }, D = () => /* @__PURE__ */ c(
64
- Ee,
57
+ }, W = A(!0);
58
+ W.current && (D(o, i), W.current = !1);
59
+ const [ge, he] = n(i);
60
+ z(i, ge) || (D(o, i), he(i));
61
+ const [Ie, we] = n(o);
62
+ z(o, Ie) || (D(o, i), u(o), we(o));
63
+ const Ce = (e = []) => {
64
+ de(e);
65
+ }, x = () => /* @__PURE__ */ a(
66
+ Pe,
65
67
  {
66
- isActive: P || !!U,
67
- selectedItemIds: l,
68
- filterValue: U,
69
- onFilterChange: Me
68
+ isActive: U || !!B,
69
+ selectedItemIds: r,
70
+ filterValue: B,
71
+ onFilterChange: Oe
70
72
  }
71
- ), we = () => m || g ? /* @__PURE__ */ c(
72
- Ne,
73
+ ), Fe = () => C || F ? /* @__PURE__ */ a(
74
+ _e,
73
75
  {
74
- selectedAmount: l.length,
75
- counterMessage: m,
76
- customRenderer: g
76
+ selectedAmount: r.length,
77
+ counterMessage: C,
78
+ customRenderer: F
77
79
  }
78
- ) : /* @__PURE__ */ c(
79
- Re,
80
+ ) : /* @__PURE__ */ a(
81
+ ke,
80
82
  {
81
83
  options: o,
82
- selectedItemIds: l,
83
- showSelectedItemIcon: se,
84
- showUnselectedItemIcons: N,
84
+ selectedItemIds: r,
85
+ showSelectedItemIcon: ne,
86
+ showUnselectedItemIcons: E,
85
87
  onRemoveItem: De,
86
- multiline: d,
87
- hasInputAddon: !!h,
88
- hasFilter: y,
89
- children: d && D()
88
+ multiline: f,
89
+ hasInputAddon: !!S,
90
+ hasFilter: R,
91
+ children: f && x()
90
92
  }
91
- ), Fe = () => {
92
- const e = q(
93
+ ), Se = () => {
94
+ const e = X(
93
95
  "dropdown-toggle",
94
96
  "form-control",
95
97
  "text-left",
96
- k && k,
97
- p === "sm" && "input-sm",
98
- p === "lg" && "input-lg",
99
- d && "height-auto",
100
- T && "disabled"
101
- ), t = ve(l) && !N, s = y && r && !m && !g, i = /* @__PURE__ */ C(
98
+ P && P,
99
+ w === "sm" && "input-sm",
100
+ w === "lg" && "input-lg",
101
+ f && "height-auto",
102
+ y && "disabled"
103
+ ), t = Te(r) && !E, s = R && l && !C && !F, c = r.length > 0 ? { id: "__multiselect-clear__", label: "" } : null, q = /* @__PURE__ */ h(
102
104
  "button",
103
105
  {
104
106
  type: "button",
105
- id: G,
106
- name: v,
107
+ id: H,
108
+ name: T,
107
109
  className: e,
108
110
  "data-toggle": "dropdown",
109
- tabIndex: $,
111
+ tabIndex: ee,
110
112
  "aria-haspopup": "true",
111
- "aria-expanded": r,
112
- onClick: b,
113
- onKeyDown: be,
114
- ref: B,
113
+ "aria-expanded": l,
114
+ onClick: v,
115
+ onKeyDown: ve,
116
+ ref: K,
115
117
  children: [
116
- t ? /* @__PURE__ */ C(xe, { children: [
117
- /* @__PURE__ */ c(Ve, { placeholder: H }),
118
- s && D()
119
- ] }) : we(),
120
- s && !d && D(),
121
- /* @__PURE__ */ c("span", { className: "caret" })
118
+ t ? /* @__PURE__ */ h(Ne, { children: [
119
+ /* @__PURE__ */ a(Ue, { placeholder: J }),
120
+ s && x()
121
+ ] }) : Fe(),
122
+ s && !f && x(),
123
+ /* @__PURE__ */ h("span", { className: "select-toggle-actions", children: [
124
+ /* @__PURE__ */ a(
125
+ Ve,
126
+ {
127
+ showClear: se,
128
+ selectedItem: c,
129
+ onClear: xe
130
+ }
131
+ ),
132
+ /* @__PURE__ */ a("span", { className: "caret" })
133
+ ] })
122
134
  ]
123
135
  }
124
136
  );
125
- return !h && !E && !V ? i : /* @__PURE__ */ c(
126
- Ue,
137
+ return !S && !_ && !k ? q : /* @__PURE__ */ a(
138
+ We,
127
139
  {
128
- bsSize: p,
129
- inputAddon: h,
130
- errorMessage: E,
131
- warningMessage: V,
132
- messageWhiteSpace: oe,
133
- children: i
140
+ bsSize: w,
141
+ inputAddon: S,
142
+ errorMessage: _,
143
+ warningMessage: k,
144
+ messageWhiteSpace: re,
145
+ children: q
134
146
  }
135
147
  );
136
- }, Se = () => {
137
- const e = le.map((t) => (t.selected = l.indexOf(t.id) !== -1, t));
138
- return /* @__PURE__ */ c(
139
- Te,
148
+ }, Me = () => {
149
+ const e = ie.map((t) => (t.selected = r.indexOf(t.id) !== -1, t));
150
+ return /* @__PURE__ */ a(
151
+ Re,
140
152
  {
141
- isOpen: r,
142
- isLoading: J,
153
+ isOpen: l,
154
+ isLoading: Q,
143
155
  options: e,
144
- focusedItemIndex: ce,
145
- keyboardUsed: de,
146
- updateDOMValues: Ie,
147
- onSelect: Oe,
148
- onClose: j,
149
- noItemMessage: te,
150
- pullRight: Y,
156
+ focusedItemIndex: ue,
157
+ keyboardUsed: fe,
158
+ updateDOMValues: Ce,
159
+ onSelect: be,
160
+ onClose: L,
161
+ noItemMessage: oe,
162
+ pullRight: Z,
151
163
  useActiveClass: !0,
152
- dropup: Q,
153
- autoDropDirection: Z,
154
- dropdownClassName: ne
164
+ dropup: Y,
165
+ autoDropDirection: $,
166
+ dropdownClassName: le
155
167
  }
156
168
  );
157
- }, Me = (e) => {
158
- e.preventDefault();
159
- const t = e.currentTarget.value, s = ye(ie, t, o);
160
- r || I(!0);
161
- const i = s.length > 0 ? 0 : -1;
162
- w(!0), F(t), f(s), s.length > 0 && S(!0), K(i);
163
169
  }, Oe = (e) => {
170
+ e.preventDefault();
171
+ const t = e.currentTarget.value, s = Ee(ce, t, o);
172
+ l || M(!0);
173
+ const c = s.length > 0 ? 0 : -1;
174
+ m(!0), p(t), u(s), s.length > 0 && g(!0), O(c);
175
+ }, be = (e) => {
164
176
  if (e?.disabled)
165
177
  return;
166
- const t = e ? _(e.id) : l;
167
- u(t), w(!1), F(""), f(o), A(t);
168
- }, _ = (e) => {
169
- const t = [...l], s = l.indexOf(e);
178
+ const t = e ? j(e.id) : r;
179
+ d(t), m(!1), p(""), u(o), I(t);
180
+ }, j = (e) => {
181
+ const t = [...r], s = r.indexOf(e);
170
182
  return s !== -1 ? t.splice(s, 1) : t.push(e), t;
171
183
  }, De = (e, t) => {
172
184
  e.stopPropagation();
173
- const s = _(t);
174
- u(s), A(s);
175
- }, be = (e) => {
185
+ const s = j(t);
186
+ d(s), I(s);
187
+ }, xe = () => {
188
+ d([]), m(!1), p(""), u(o), g(!1), O(N), I([]);
189
+ }, ve = (e) => {
176
190
  switch (e.key) {
177
191
  case "Space":
178
- r || (e.preventDefault(), b(e));
192
+ l || (e.preventDefault(), v(e));
179
193
  break;
180
194
  case "Enter":
181
- r || (e.preventDefault(), b(e));
195
+ l || (e.preventDefault(), v(e));
182
196
  break;
183
197
  }
184
- }, b = (e) => {
185
- if (T || P)
198
+ }, v = (e) => {
199
+ if (y || U)
186
200
  return;
187
201
  const t = e.detail === 0;
188
- I((s) => !s), S(t);
189
- }, j = () => {
190
- r && (I(!1), w(!1), F(""), f(o), K(z), S(!1), B?.current?.focus());
191
- }, Ce = q(
202
+ M((s) => !s), g(t);
203
+ }, L = () => {
204
+ l && (M(!1), m(!1), p(""), u(o), O(N), g(!1), K?.current?.focus());
205
+ }, Ae = X(
192
206
  "select",
193
207
  "multiselect",
194
208
  "dropdown",
195
- r && "open",
196
- ee && "has-error",
197
- R && R
209
+ l && "open",
210
+ te && "has-error",
211
+ V && V
198
212
  );
199
- return /* @__PURE__ */ C("div", { ...re, className: Ce, ref: fe, children: [
200
- Fe(),
201
- Se()
213
+ return /* @__PURE__ */ h("div", { ...ae, className: Ae, ref: pe, children: [
214
+ Se(),
215
+ Me()
202
216
  ] });
203
217
  };
204
218
  export {
205
- Ze as default
219
+ ot as default
206
220
  };
207
221
  //# sourceMappingURL=Multiselect.js.map