@rio-cloud/rio-uikit 2.1.0 → 2.2.1
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.
- package/CircularProgress.d.ts +2 -0
- package/CircularProgress.js +5 -0
- package/CircularProgress.js.map +1 -0
- package/RadioCardGroup.d.ts +2 -0
- package/RadioCardGroup.js +7 -0
- package/RadioCardGroup.js.map +1 -0
- package/SearchHighlightText.d.ts +2 -0
- package/SearchHighlightText.js +5 -0
- package/SearchHighlightText.js.map +1 -0
- package/TextTruncateMiddle.d.ts +2 -0
- package/TextTruncateMiddle.js +5 -0
- package/TextTruncateMiddle.js.map +1 -0
- package/Tracker.d.ts +2 -0
- package/Tracker.js +5 -0
- package/Tracker.js.map +1 -0
- package/classNames.d.ts +2 -0
- package/classNames.js +5 -0
- package/classNames.js.map +1 -0
- package/components/accentBar/AccentBar.js +1 -1
- package/components/accentBar/AccentBar.js.map +1 -1
- package/components/actionBarItem/ActionBarItem.js +7 -7
- package/components/actionBarItem/ActionBarItem.js.map +1 -1
- package/components/actionBarItem/ActionBarItemIcon.js +1 -1
- package/components/actionBarItem/ActionBarItemIcon.js.map +1 -1
- package/components/actionBarItem/ActionBarItemList.js +1 -1
- package/components/actionBarItem/ActionBarItemList.js.map +1 -1
- package/components/actionBarItem/ActionBarItemListItem.js +1 -1
- package/components/actionBarItem/ActionBarItemListItem.js.map +1 -1
- package/components/actionBarItem/ActionBarItemListSeparator.js +1 -1
- package/components/actionBarItem/ActionBarItemListSeparator.js.map +1 -1
- package/components/actionBarItem/ActionBarItemPopoverContent.js +3 -3
- package/components/actionBarItem/ActionBarItemPopoverContent.js.map +1 -1
- package/components/actionBarItem/ActionBarOverlay.js +1 -1
- package/components/actionBarItem/ActionBarOverlay.js.map +1 -1
- package/components/activity/Activity.js +1 -1
- package/components/activity/Activity.js.map +1 -1
- package/components/animatedTextReveal/AnimatedTextReveal.js +1 -1
- package/components/animatedTextReveal/AnimatedTextReveal.js.map +1 -1
- package/components/applicationHeader/AppMenu.js +2 -2
- package/components/applicationHeader/AppMenu.js.map +1 -1
- package/components/applicationHeader/AppMenuDropdown.js +13 -11
- package/components/applicationHeader/AppMenuDropdown.js.map +1 -1
- package/components/applicationHeader/ApplicationHeader.js +1 -1
- package/components/applicationHeader/ApplicationHeader.js.map +1 -1
- package/components/applicationHeader/MobileHeaderModal.js +8 -8
- package/components/applicationHeader/MobileHeaderModal.js.map +1 -1
- package/components/applicationHeader/MobileSubmoduleNavigation.js +1 -1
- package/components/applicationHeader/MobileSubmoduleNavigation.js.map +1 -1
- package/components/applicationHeader/NavItems.js +4 -4
- package/components/applicationHeader/NavItems.js.map +1 -1
- package/components/applicationLayout/ApplicationLayout.js +10 -10
- package/components/applicationLayout/ApplicationLayout.js.map +1 -1
- package/components/applicationLayout/ApplicationLayoutBody.js +2 -2
- package/components/applicationLayout/ApplicationLayoutBody.js.map +1 -1
- package/components/applicationLayout/ApplicationLayoutBodyBanner.js +1 -1
- package/components/applicationLayout/ApplicationLayoutBodyBanner.js.map +1 -1
- package/components/applicationLayout/ApplicationLayoutBodyBottomBar.js +1 -1
- package/components/applicationLayout/ApplicationLayoutBodyBottomBar.js.map +1 -1
- package/components/applicationLayout/ApplicationLayoutBodyNavigation.js +1 -1
- package/components/applicationLayout/ApplicationLayoutBodyNavigation.js.map +1 -1
- package/components/applicationLayout/ApplicationLayoutHeader.js +1 -1
- package/components/applicationLayout/ApplicationLayoutHeader.js.map +1 -1
- package/components/applicationLayout/ApplicationLayoutSidebar.js +1 -1
- package/components/applicationLayout/ApplicationLayoutSidebar.js.map +1 -1
- package/components/applicationLayout/SubNavigation.js +1 -1
- package/components/applicationLayout/SubNavigation.js.map +1 -1
- package/components/assetTree/AssetTree.js +1 -1
- package/components/assetTree/AssetTree.js.map +1 -1
- package/components/assetTree/Tree.js +1 -1
- package/components/assetTree/Tree.js.map +1 -1
- package/components/assetTree/TreeIcon.js +3 -3
- package/components/assetTree/TreeIcon.js.map +1 -1
- package/components/assetTree/TreeLeaf.js +4 -4
- package/components/assetTree/TreeLeaf.js.map +1 -1
- package/components/assetTree/TreeNode.js +1 -1
- package/components/assetTree/TreeNode.js.map +1 -1
- package/components/assetTree/TreeNodeContainer.js +1 -1
- package/components/assetTree/TreeNodeContainer.js.map +1 -1
- package/components/assetTree/TreeOption.js +3 -3
- package/components/assetTree/TreeOption.js.map +1 -1
- package/components/assetTree/TreeOptions.js +4 -4
- package/components/assetTree/TreeOptions.js.map +1 -1
- package/components/assetTree/TreeRoot.js +3 -3
- package/components/assetTree/TreeRoot.js.map +1 -1
- package/components/assetTree/TreeSearch.js +3 -3
- package/components/assetTree/TreeSearch.js.map +1 -1
- package/components/assetTree/TreeSidebar.js +1 -1
- package/components/assetTree/TreeSidebar.js.map +1 -1
- package/components/assetTree/TreeSidebarCategories.js +4 -4
- package/components/assetTree/TreeSidebarCategories.js.map +1 -1
- package/components/assetTree/TreeSummary.js +1 -1
- package/components/assetTree/TreeSummary.js.map +1 -1
- package/components/assetTree/TypeCounter.js +1 -1
- package/components/assetTree/TypeCounter.js.map +1 -1
- package/components/autosuggest/AutoSuggest.js +1 -1
- package/components/autosuggest/AutoSuggest.js.map +1 -1
- package/components/avatar/Avatar.js +1 -1
- package/components/avatar/Avatar.js.map +1 -1
- package/components/banner/Banner.js +1 -1
- package/components/banner/Banner.js.map +1 -1
- package/components/banner/BannerContent.js +1 -1
- package/components/banner/BannerContent.js.map +1 -1
- package/components/barList/BarList.js +1 -1
- package/components/barList/BarList.js.map +1 -1
- package/components/bottomSheet/BottomSheet.js +1 -1
- package/components/bottomSheet/BottomSheet.js.map +1 -1
- package/components/button/Button.d.ts +53 -7
- package/components/button/Button.js +87 -64
- package/components/button/Button.js.map +1 -1
- package/components/button/ButtonToolbar.js +1 -1
- package/components/button/ButtonToolbar.js.map +1 -1
- package/components/button/ToggleButton.d.ts +4 -1
- package/components/button/ToggleButton.js.map +1 -1
- package/components/calendarStripe/CalendarStripe.js +16 -16
- package/components/calendarStripe/CalendarStripe.js.map +1 -1
- package/components/card/Card.js +1 -1
- package/components/card/Card.js.map +1 -1
- package/components/charts/RadialBarChart.js +106 -103
- package/components/charts/RadialBarChart.js.map +1 -1
- package/components/checkbox/Checkbox.js +6 -6
- package/components/checkbox/Checkbox.js.map +1 -1
- package/components/circularProgress/CircularProgress.d.ts +139 -0
- package/components/circularProgress/CircularProgress.js +197 -0
- package/components/circularProgress/CircularProgress.js.map +1 -0
- package/components/clearableInput/ClearableInput.js +9 -9
- package/components/clearableInput/ClearableInput.js.map +1 -1
- package/components/dataTabs/DataTabHeader.js +1 -1
- package/components/dataTabs/DataTabHeader.js.map +1 -1
- package/components/dataTabs/DataTabs.js +4 -4
- package/components/dataTabs/DataTabs.js.map +1 -1
- package/components/datepicker/DatePicker.js +6 -6
- package/components/datepicker/DatePicker.js.map +1 -1
- package/components/datepicker/DateRangePicker.js +1 -1
- package/components/datepicker/DateRangePicker.js.map +1 -1
- package/components/datepicker/DayPicker.js +1 -1
- package/components/datepicker/DayPicker.js.map +1 -1
- package/components/dialog/Dialog.js +55 -55
- package/components/dialog/Dialog.js.map +1 -1
- package/components/dialog/DialogBody.js +1 -1
- package/components/dialog/DialogBody.js.map +1 -1
- package/components/dialog/DialogFooter.js +1 -1
- package/components/dialog/DialogFooter.js.map +1 -1
- package/components/dialog/DialogHeader.js +1 -1
- package/components/dialog/DialogHeader.js.map +1 -1
- package/components/dialog/MediaDialog.js +1 -1
- package/components/dialog/MediaDialog.js.map +1 -1
- package/components/dialog/SplitDialog.js +1 -1
- package/components/dialog/SplitDialog.js.map +1 -1
- package/components/divider/Divider.js +1 -1
- package/components/divider/Divider.js.map +1 -1
- package/components/dropdown/ButtonDropdown.js +1 -1
- package/components/dropdown/ButtonDropdown.js.map +1 -1
- package/components/dropdown/DropdownSubmenu.js +3 -3
- package/components/dropdown/DropdownSubmenu.js.map +1 -1
- package/components/dropdown/DropdownToggleButton.d.ts +1 -1
- package/components/dropdown/DropdownToggleButton.js +4 -3
- package/components/dropdown/DropdownToggleButton.js.map +1 -1
- package/components/dropdown/SplitCaretButton.js +6 -6
- package/components/dropdown/SplitCaretButton.js.map +1 -1
- package/components/editableContent/EditableContent.js +1 -1
- package/components/editableContent/EditableContent.js.map +1 -1
- package/components/ellipsis/TextTruncateMiddle.d.ts +23 -0
- package/components/ellipsis/TextTruncateMiddle.js +21 -0
- package/components/ellipsis/TextTruncateMiddle.js.map +1 -0
- package/components/expander/ExpanderList.js +5 -5
- package/components/expander/ExpanderList.js.map +1 -1
- package/components/expander/ExpanderPanel.js +1 -1
- package/components/expander/ExpanderPanel.js.map +1 -1
- package/components/feedback/FeedbackRating.js +1 -1
- package/components/feedback/FeedbackRating.js.map +1 -1
- package/components/feedback/FeedbackReactions.js +1 -1
- package/components/feedback/FeedbackReactions.js.map +1 -1
- package/components/formLabel/FormLabel.js +6 -9
- package/components/formLabel/FormLabel.js.map +1 -1
- package/components/formLabel/LabeledElement.js +1 -1
- package/components/formLabel/LabeledElement.js.map +1 -1
- package/components/listMenu/ListMenu.js +2 -5
- package/components/listMenu/ListMenu.js.map +1 -1
- package/components/listMenu/ListMenuGroup.js +2 -2
- package/components/listMenu/ListMenuGroup.js.map +1 -1
- package/components/loadMore/LoadMoreButton.js +1 -1
- package/components/loadMore/LoadMoreButton.js.map +1 -1
- package/components/loadMore/LoadMoreProgress.js +1 -1
- package/components/loadMore/LoadMoreProgress.js.map +1 -1
- package/components/map/components/features/MapSettings.js +4 -4
- package/components/map/components/features/MapSettings.js.map +1 -1
- package/components/map/components/features/settings/MapSettingsItem.js +1 -1
- package/components/map/components/features/settings/MapSettingsItem.js.map +1 -1
- package/components/map/components/features/settings/MapSettingsPanel.js +6 -20
- package/components/map/components/features/settings/MapSettingsPanel.js.map +1 -1
- package/components/map/components/features/settings/MapSettingsTile.js +87 -61
- package/components/map/components/features/settings/MapSettingsTile.js.map +1 -1
- package/components/map/components/features/settings/ZoomButtons.js +1 -1
- package/components/map/components/features/settings/ZoomButtons.js.map +1 -1
- package/components/map/components/features/settings/builtinSettings/MapTypeSettings.d.ts +38 -1
- package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +128 -92
- package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js.map +1 -1
- package/components/map/utils/eventHandling.js +9 -9
- package/components/map/utils/eventHandling.js.map +1 -1
- package/components/map/utils/mapUtils.d.ts +6 -6
- package/components/map/utils/mapUtils.js +14 -19
- package/components/map/utils/mapUtils.js.map +1 -1
- package/components/mapMarker/ClusterMapMarker.js +1 -1
- package/components/mapMarker/ClusterMapMarker.js.map +1 -1
- package/components/mapMarker/SingleMapMarker.js +1 -1
- package/components/mapMarker/SingleMapMarker.js.map +1 -1
- package/components/menuItems/MenuItem.js +1 -1
- package/components/menuItems/MenuItem.js.map +1 -1
- package/components/menuItems/MenuItemList.js +1 -1
- package/components/menuItems/MenuItemList.js.map +1 -1
- package/components/navigation/AppNavigationBar.js +4 -4
- package/components/navigation/AppNavigationBar.js.map +1 -1
- package/components/noData/NoData.js +1 -1
- package/components/noData/NoData.js.map +1 -1
- package/components/numberControl/NumberControl.js +4 -4
- package/components/numberControl/NumberControl.js.map +1 -1
- package/components/numberInput/NumberInput.js +1 -1
- package/components/numberInput/NumberInput.js.map +1 -1
- package/components/onboarding/OnboardingTip.js +4 -4
- package/components/onboarding/OnboardingTip.js.map +1 -1
- package/components/page/Page.js +1 -1
- package/components/page/Page.js.map +1 -1
- package/components/pager/Pager.js +1 -1
- package/components/pager/Pager.js.map +1 -1
- package/components/radiobutton/RadioButton.d.ts +1 -1
- package/components/radiobutton/RadioButton.js +5 -5
- package/components/radiobutton/RadioButton.js.map +1 -1
- package/components/radiobutton/RadioCardGroup.d.ts +86 -0
- package/components/radiobutton/RadioCardGroup.js +110 -0
- package/components/radiobutton/RadioCardGroup.js.map +1 -0
- package/components/resizer/Resizer.js +1 -1
- package/components/resizer/Resizer.js.map +1 -1
- package/components/responsiveColumnStripe/ResponsiveColumnStripe.js +1 -1
- package/components/responsiveColumnStripe/ResponsiveColumnStripe.js.map +1 -1
- package/components/rioglyph/Rioglyph.js +1 -1
- package/components/rioglyph/Rioglyph.js.map +1 -1
- package/components/rioglyph/RioglyphIconType.d.ts +1 -1
- package/components/rules/RuleConnector.js +1 -1
- package/components/rules/RuleConnector.js.map +1 -1
- package/components/rules/RuleContainer.js +27 -27
- package/components/rules/RuleContainer.js.map +1 -1
- package/components/saveableInput/SaveableDateInput.js +1 -1
- package/components/saveableInput/SaveableDateInput.js.map +1 -1
- package/components/saveableInput/SaveableInput.js +49 -49
- package/components/saveableInput/SaveableInput.js.map +1 -1
- package/components/searchHighlight/SearchHighlightText.d.ts +28 -0
- package/components/searchHighlight/SearchHighlightText.js +15 -0
- package/components/searchHighlight/SearchHighlightText.js.map +1 -0
- package/components/selects/BaseSelectDropdown.js +1 -1
- package/components/selects/BaseSelectDropdown.js.map +1 -1
- package/components/selects/ClearButton.js +4 -4
- package/components/selects/ClearButton.js.map +1 -1
- package/components/selects/Multiselect.js +6 -6
- package/components/selects/Multiselect.js.map +1 -1
- package/components/selects/MultiselectToggleFilter.js +4 -4
- package/components/selects/MultiselectToggleFilter.js.map +1 -1
- package/components/selects/MultiselectToggleSelection.js +1 -1
- package/components/selects/MultiselectToggleSelection.js.map +1 -1
- package/components/selects/Select.js +6 -6
- package/components/selects/Select.js.map +1 -1
- package/components/selects/SelectFilter.js +1 -1
- package/components/selects/SelectFilter.js.map +1 -1
- package/components/selects/WithFeedbackAndAddon.js +1 -1
- package/components/selects/WithFeedbackAndAddon.js.map +1 -1
- package/components/sidebars/Sidebar.js +54 -54
- package/components/sidebars/Sidebar.js.map +1 -1
- package/components/sidebars/SidebarBackdrop.js +4 -4
- package/components/sidebars/SidebarBackdrop.js.map +1 -1
- package/components/sidebars/SidebarFooter.js +1 -1
- package/components/sidebars/SidebarFooter.js.map +1 -1
- package/components/sidebars/SidebarFullscreenToggle.js +4 -4
- package/components/sidebars/SidebarFullscreenToggle.js.map +1 -1
- package/components/slider/RangeSlider.js +1 -1
- package/components/slider/RangeSlider.js.map +1 -1
- package/components/slider/Slider.js +1 -1
- package/components/slider/Slider.js.map +1 -1
- package/components/smoothScrollbars/SmoothScrollbars.js +1 -1
- package/components/smoothScrollbars/SmoothScrollbars.js.map +1 -1
- package/components/spinner/Spinner.js +5 -4
- package/components/spinner/Spinner.js.map +1 -1
- package/components/states/CustomState.d.ts +69 -1
- package/components/states/CustomState.js +1 -1
- package/components/states/CustomState.js.map +1 -1
- package/components/states/EmptyState.d.ts +1 -1
- package/components/states/EmptyState.js.map +1 -1
- package/components/states/ErrorState.d.ts +1 -1
- package/components/states/ErrorState.js.map +1 -1
- package/components/states/ForbiddenState.d.ts +1 -1
- package/components/states/ForbiddenState.js.map +1 -1
- package/components/states/MaintenanceState.d.ts +1 -1
- package/components/states/MaintenanceState.js.map +1 -1
- package/components/states/NotBookedState.d.ts +1 -1
- package/components/states/NotBookedState.js.map +1 -1
- package/components/states/NotFoundState.d.ts +1 -1
- package/components/states/NotFoundState.js.map +1 -1
- package/components/states/StateButton.js +1 -1
- package/components/states/StateButton.js.map +1 -1
- package/components/statsWidget/StatsWidget.js +1 -1
- package/components/statsWidget/StatsWidget.js.map +1 -1
- package/components/statsWidget/StatsWidgetBody.js +1 -1
- package/components/statsWidget/StatsWidgetBody.js.map +1 -1
- package/components/statsWidget/StatsWidgetFooter.js +1 -1
- package/components/statsWidget/StatsWidgetFooter.js.map +1 -1
- package/components/statsWidget/StatsWidgetHeader.js +1 -1
- package/components/statsWidget/StatsWidgetHeader.js.map +1 -1
- package/components/statsWidget/StatsWidgetNumber.js +2 -2
- package/components/statsWidget/StatsWidgetNumber.js.map +1 -1
- package/components/statsWidget/StatsWidgetSpacer.js +1 -1
- package/components/statsWidget/StatsWidgetSpacer.js.map +1 -1
- package/components/statsWidget/StatsWidgets.js +1 -1
- package/components/statsWidget/StatsWidgets.js.map +1 -1
- package/components/statusBar/StatusBar.d.ts +126 -2
- package/components/statusBar/StatusBar.js +24 -17
- package/components/statusBar/StatusBar.js.map +1 -1
- package/components/statusBar/StatusBarIcon.d.ts +1 -1
- package/components/statusBar/StatusBarIcon.js +4 -4
- package/components/statusBar/StatusBarIcon.js.map +1 -1
- package/components/statusBar/StatusBarLabel.d.ts +1 -1
- package/components/statusBar/StatusBarLabel.js +5 -7
- package/components/statusBar/StatusBarLabel.js.map +1 -1
- package/components/statusBar/StatusBarProgressBar.d.ts +1 -1
- package/components/statusBar/StatusBarProgressBar.js +1 -1
- package/components/statusBar/StatusBarProgressBar.js.map +1 -1
- package/components/steppedProgressBar/SteppedProgressBar.js +1 -1
- package/components/steppedProgressBar/SteppedProgressBar.js.map +1 -1
- package/components/switch/Switch.d.ts +16 -1
- package/components/switch/Switch.js +77 -35
- package/components/switch/Switch.js.map +1 -1
- package/components/table/TableCardsSorting.js +4 -4
- package/components/table/TableCardsSorting.js.map +1 -1
- package/components/table/TableHead.js +1 -1
- package/components/table/TableHead.js.map +1 -1
- package/components/table/TableSearch.js +1 -1
- package/components/table/TableSearch.js.map +1 -1
- package/components/table/TableSettingsColumnButtons.d.ts +1 -1
- package/components/table/TableSettingsColumnButtons.js +1 -1
- package/components/table/TableSettingsColumnButtons.js.map +1 -1
- package/components/table/TableSettingsColumnDetails.d.ts +1 -1
- package/components/table/TableSettingsColumnDetails.js +1 -1
- package/components/table/TableSettingsColumnDetails.js.map +1 -1
- package/components/table/TableSettingsDialog.d.ts +51 -1
- package/components/table/TableSettingsDialog.js +170 -154
- package/components/table/TableSettingsDialog.js.map +1 -1
- package/components/table/TableSettingsDialogFooter.js +1 -1
- package/components/table/TableSettingsDialogFooter.js.map +1 -1
- package/components/table/TableSettingsListContainer.d.ts +1 -1
- package/components/table/TableSettingsListContainer.js +8 -8
- package/components/table/TableSettingsListContainer.js.map +1 -1
- package/components/table/TableSettingsListItem.d.ts +1 -1
- package/components/table/TableSettingsListItem.js +26 -26
- package/components/table/TableSettingsListItem.js.map +1 -1
- package/components/table/TableToolbar.js +1 -1
- package/components/table/TableToolbar.js.map +1 -1
- package/components/table/TableViewToggles.js +1 -1
- package/components/table/TableViewToggles.js.map +1 -1
- package/components/tag/Tag.js +1 -1
- package/components/tag/Tag.js.map +1 -1
- package/components/tag/TagList.js +1 -1
- package/components/tag/TagList.js.map +1 -1
- package/components/tagManager/CustomSuggestionItem.js +1 -1
- package/components/tagManager/CustomSuggestionItem.js.map +1 -1
- package/components/tagManager/TagManager.d.ts +14 -2
- package/components/tagManager/TagManager.js +6 -6
- package/components/tagManager/TagManager.js.map +1 -1
- package/components/tagManager/TagManagerItemList.d.ts +1 -1
- package/components/tagManager/TagManagerItemList.js +1 -1
- package/components/tagManager/TagManagerItemList.js.map +1 -1
- package/components/teaser/Teaser.js +1 -1
- package/components/teaser/Teaser.js.map +1 -1
- package/components/teaser/TeaserContainer.js +1 -1
- package/components/teaser/TeaserContainer.js.map +1 -1
- package/components/timepicker/TimePicker.d.ts +20 -0
- package/components/timepicker/TimePicker.js +153 -99
- package/components/timepicker/TimePicker.js.map +1 -1
- package/components/tooltip/Tooltip.js +1 -1
- package/components/tooltip/Tooltip.js.map +1 -1
- package/components/tracker/Tracker.d.ts +85 -0
- package/components/tracker/Tracker.js +54 -0
- package/components/tracker/Tracker.js.map +1 -0
- package/components/tracker/TrackerBlock.d.ts +11 -0
- package/components/tracker/TrackerBlock.js +34 -0
- package/components/tracker/TrackerBlock.js.map +1 -0
- package/components/video/ResponsiveVideo.js +1 -1
- package/components/video/ResponsiveVideo.js.map +1 -1
- package/hooks/useCookies.d.ts +79 -0
- package/hooks/useCookies.js +33 -0
- package/hooks/useCookies.js.map +1 -0
- package/hooks/useInterval.js +5 -5
- package/hooks/useInterval.js.map +1 -1
- package/hooks/useIsFocusWithin.js +3 -3
- package/hooks/useIsFocusWithin.js.map +1 -1
- package/hooks/useLatest.d.ts +16 -0
- package/hooks/useLatest.js +11 -0
- package/hooks/useLatest.js.map +1 -0
- package/hooks/usePostMessage.d.ts +2 -1
- package/hooks/usePostMessage.js.map +1 -1
- package/hooks/useRioCookieConsent.d.ts +49 -0
- package/hooks/useRioCookieConsent.js +44 -0
- package/hooks/useRioCookieConsent.js.map +1 -0
- package/hooks/useSearch.d.ts +1 -1
- package/hooks/useSearch.js +28 -17
- package/hooks/useSearch.js.map +1 -1
- package/hooks/useSearchHighlight.d.ts +60 -0
- package/hooks/useSearchHighlight.js +54 -0
- package/hooks/useSearchHighlight.js.map +1 -0
- package/hooks/useTimeout.js +11 -11
- package/hooks/useTimeout.js.map +1 -1
- package/hooks/useUrlState.d.ts +62 -0
- package/hooks/useUrlState.js +137 -0
- package/hooks/useUrlState.js.map +1 -0
- package/mergeClassNameOverrides.d.ts +1 -0
- package/mergeClassNameOverrides.js +5 -0
- package/mergeClassNameOverrides.js.map +1 -0
- package/package.json +17 -18
- package/routeUtils.js +11 -5
- package/routeUtils.js.map +1 -1
- package/themes/Volkswagen/components/applicationHeader/VolkswagenApplicationHeader.js +1 -1
- package/themes/Volkswagen/components/applicationHeader/VolkswagenApplicationHeader.js.map +1 -1
- package/useCookies.d.ts +2 -0
- package/useCookies.js +5 -0
- package/useCookies.js.map +1 -0
- package/useRioCookieConsent.d.ts +2 -0
- package/useRioCookieConsent.js +5 -0
- package/useRioCookieConsent.js.map +1 -0
- package/useSearchHighlight.d.ts +2 -0
- package/useSearchHighlight.js +6 -0
- package/useSearchHighlight.js.map +1 -0
- package/useUrlState.d.ts +2 -0
- package/useUrlState.js +5 -0
- package/useUrlState.js.map +1 -0
- package/utils/classNames.d.ts +3 -0
- package/utils/classNames.js +5 -0
- package/utils/classNames.js.map +1 -0
- package/utils/mergeClassNameOverrides.d.ts +1 -0
- package/utils/mergeClassNameOverrides.js +55 -0
- package/utils/mergeClassNameOverrides.js.map +1 -0
- package/utils/routeUtils.d.ts +122 -13
- package/utils/routeUtils.js +89 -31
- package/utils/routeUtils.js.map +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
- package/components/states/BaseStateProps.d.ts +0 -70
- package/components/statusBar/StatusBarProps.d.ts +0 -127
- package/components/table/TableSettingsDialog.types.d.ts +0 -39
- package/components/tagManager/TagManagerTag.d.ts +0 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUrlState.js","sources":["../../src/hooks/useUrlState.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { isEqual, isNil } from 'es-toolkit';\n\nimport { deserializeValue, serializeValue, toQueryString, type UrlConfigItem } from '../utils/routeUtils';\nimport useAfterMount from './useAfterMount';\nimport useLatest from './useLatest';\n\ntype QueryString = string;\n\n/**\n * Configuration contract for `useUrlState`.\n *\n * Use this hook when your application uses **store/redux as source of truth**\n * and you want a centralized URL synchronizer:\n * - URL -> store: parse incoming search params and dispatch updates\n * - store -> URL: serialize current store values and navigate with push/replace\n *\n * Recommended setup:\n * - Mount one top-level synchronizer component near the router\n * - Pass only URL-managed store values via `storeValues`\n * - Keep URL writing centralized through this hook\n *\n * Not intended for \"URL-only state\" screens where you directly read/write\n * params via router APIs (for example `useSearchParams`) without store sync.\n */\ntype UseUrlStateProps<TState> = {\n /**\n * URL sync configuration.\n * Each entry maps one query param key to a store selector and update action.\n */\n config: readonly UrlConfigItem<TState, any>[];\n\n /**\n * Current URL search string (for example `location.search`).\n * Expected shape: `'?q=test&sort=-name'` or `''`.\n */\n searchString: QueryString;\n\n /**\n * Current store values used by the configured selectors. This could be values from a redux store.\n * Keys should match the `config` keys, values are compared against URL/defaults.\n */\n storeValues: Record<string, unknown>;\n\n /**\n * Optional localStorage key for sticky URL state restore on initial load\n * when managed URL params are missing.\n */\n localStorageKey?: string;\n\n /**\n * Router navigation type (typically from React Router `useNavigationType`).\n * `POP` indicates browser back/forward navigation.\n */\n navigationType?: 'POP' | 'PUSH' | 'REPLACE' | string;\n\n /**\n * Store update callback invoked when URL -> store sync detects a change.\n * Usually wraps `dispatch(...)`.\n */\n onUpdateStore: (action: any) => void;\n\n /**\n * Navigation callback used for store -> URL sync writes.\n * `historyMode` controls whether to `push` or `replace` the history entry.\n */\n onNavigate: (search: string, historyMode: 'push' | 'replace') => void;\n};\n\n// Helper for URL for Comparison:\n// Browsers/Routers might decode parts of the string automatically.\n// We force everything to a standard encoded format for reliable diffing.\nconst normalizeSearch = (search: string) => {\n const clean = search.replace(/^\\?/, '');\n return new URLSearchParams(clean).toString();\n};\n\nconst parseConfigValue = (item: UrlConfigItem<any, any>, urlRawValue: string | null) =>\n item.customDeserialize ? item.customDeserialize(urlRawValue) : deserializeValue(urlRawValue, item.type ?? 'string');\n\nconst getValueToApply = (parsedValue: unknown, defaultValue: unknown) => parsedValue ?? defaultValue;\n\nconst shouldDispatchParsedValue = (params: {\n valueToApply: unknown;\n currentStoreValue: unknown;\n urlRawValue: string | null;\n defaultValue: unknown;\n}) => {\n const { valueToApply, currentStoreValue, urlRawValue, defaultValue } = params;\n\n if (typeof valueToApply === 'undefined' || isEqual(valueToApply, currentStoreValue)) {\n return false;\n }\n\n const isUrlMissing = isNil(urlRawValue);\n const isStoreDefault = isEqual(currentStoreValue, defaultValue);\n return !(isUrlMissing && isStoreDefault);\n};\n\nconst serializeConfigValue = (\n item: UrlConfigItem<any, any>,\n storeValue: unknown,\n isDefault: boolean\n): string | null => {\n if (isDefault) {\n return null;\n }\n if (item.customSerialize) {\n return item.customSerialize(storeValue as never);\n }\n return serializeValue(storeValue as never, item.type ?? 'string');\n};\n\nconst applySearchParamUpdate = (params: {\n nextParams: URLSearchParams;\n key: string;\n serializedValue: string | null;\n}) => {\n const { nextParams, key, serializedValue } = params;\n\n if (isNil(serializedValue)) {\n if (!nextParams.has(key)) {\n return false;\n }\n nextParams.delete(key);\n return true;\n }\n\n nextParams.set(key, serializedValue);\n return true;\n};\n\nconst isUrlValueDefault = (item: UrlConfigItem<any, any>, urlRawValue: string | null) => {\n if (isNil(urlRawValue)) {\n return true;\n }\n const parsedValue = parseConfigValue(item, urlRawValue);\n const valueFromUrl = getValueToApply(parsedValue, item.defaultValue);\n return isEqual(valueFromUrl, item.defaultValue);\n};\n\n/**\n * ----------------------------------------------------------------------------\n * 1. URL -> Redux\n * ----------------------------------------------------------------------------\n * Responsibilities:\n * - Listen to searchString changes.\n * - Check against the \"Loop Lock\" (ignore if we just wrote this URL).\n * - Parse and Dispatch actions.\n */\ntype UseSyncUrlToStoreProps = {\n config: readonly UrlConfigItem<any, any>[];\n searchString: string;\n storeValues: Record<string, unknown>;\n navigationType?: string;\n onUpdateStore: (a: any) => void;\n lastWrittenNormalizedSearchRef: React.MutableRefObject<string | null>;\n isRestoringRef: React.MutableRefObject<boolean>;\n hasCheckedStorageRef: React.MutableRefObject<boolean>;\n};\n\nconst useSyncUrlToStore = ({\n config,\n searchString,\n storeValues,\n navigationType,\n onUpdateStore,\n lastWrittenNormalizedSearchRef,\n isRestoringRef,\n hasCheckedStorageRef,\n}: UseSyncUrlToStoreProps) => {\n // Keep latest values stable for URL-driven effect without adding them to deps.\n const latestConfigRef = useLatest(config);\n const latestStoreValuesRef = useLatest(storeValues);\n const latestOnUpdateStoreRef = useLatest(onUpdateStore);\n\n useEffect(() => {\n // SAFETY: Wait for Storage Check (Sticky State)\n if (!hasCheckedStorageRef.current) {\n return;\n }\n\n // 1. Check Loop Lock (Did we just write this URL?)\n const currentStandard = normalizeSearch(searchString);\n if (lastWrittenNormalizedSearchRef.current === currentStandard) {\n // Match found. Release marker and continue parsing.\n // This avoids skipping browser POP navigation when search equals\n // a previously written URL.\n lastWrittenNormalizedSearchRef.current = null;\n }\n\n // 2. Check Restoration Block\n if (isRestoringRef.current) {\n return;\n }\n\n // 3. Parse & Diff\n const currentParams = new URLSearchParams(searchString);\n\n latestConfigRef.current.forEach(item => {\n const urlRawValue = currentParams.get(item.key);\n const parsedValue = parseConfigValue(item, urlRawValue);\n const valueToApply = getValueToApply(parsedValue, item.defaultValue);\n const currentStoreValue = latestStoreValuesRef.current[item.key];\n\n if (\n shouldDispatchParsedValue({\n valueToApply,\n currentStoreValue,\n urlRawValue,\n defaultValue: item.defaultValue,\n })\n ) {\n // Missing URL params should not reset store on regular in-app navigations.\n // We only apply \"missing => default\" during POP (back/forward) transitions.\n if (isNil(urlRawValue) && navigationType !== 'POP') {\n return;\n }\n latestOnUpdateStoreRef.current(item.action(valueToApply));\n }\n });\n\n // CRITICAL: This dependency array MUST NOT include 'onUpdateStore' or 'storeValues'.\n // It should ONLY run when the URL string physically changes.\n }, [searchString, lastWrittenNormalizedSearchRef, isRestoringRef, hasCheckedStorageRef]);\n};\n\n/**\n * ----------------------------------------------------------------------------\n * 2. Redux -> URL\n * ----------------------------------------------------------------------------\n * Responsibilities:\n * - Listen to Redux changes.\n * - Calculate Ideal URL.\n * - Diff against Current URL.\n * - Handle Navigation Type ('POP' prevention).\n * - Set \"Loop Lock\" and Navigate.\n */\ntype UseSyncStoreToUrlProps = {\n config: readonly UrlConfigItem<any, any>[];\n searchString: string;\n storeValues: Record<string, unknown>;\n onNavigate: (s: string, m: 'push' | 'replace') => void;\n lastWrittenNormalizedSearchRef: React.MutableRefObject<string | null>;\n localStorageKey?: string;\n navigationType?: string;\n};\n\nconst useSyncStoreToUrl = (props: UseSyncStoreToUrlProps) => {\n const {\n config,\n searchString,\n storeValues,\n onNavigate,\n lastWrittenNormalizedSearchRef,\n localStorageKey,\n navigationType,\n } = props;\n\n // Keep navigate callback stable inside effect.\n const latestOnNavigateRef = useLatest(onNavigate);\n const previousSearchRef = useRef<string | null>(normalizeSearch(searchString));\n\n // Skip initial render (Reader handles hydration)\n useAfterMount(() => {\n const currentStandardSearch = normalizeSearch(searchString);\n const hasSearchChanged = previousSearchRef.current !== currentStandardSearch;\n previousSearchRef.current = currentStandardSearch;\n\n // POP navigation should be URL -> store only for the transition step.\n // If we write here, we can overwrite the forward stack.\n // This prevents the writer from immediately rewriting URL during back/forward\n // transitions (which can overwrite forward history).\n const isPopNavigationSync = navigationType === 'POP' && hasSearchChanged;\n if (isPopNavigationSync) {\n return;\n }\n\n const currentParams = new URLSearchParams(searchString);\n const nextParams = new URLSearchParams(searchString);\n\n let hasChanges = false;\n let hasPushChange = false;\n let isAllDefaults = true;\n\n config.forEach(item => {\n const storeVal = storeValues[item.key];\n const currentUrlVal = currentParams.get(item.key);\n const isDefault = isEqual(storeVal, item.defaultValue);\n\n if (!isDefault) isAllDefaults = false;\n\n const serializedVal = serializeConfigValue(item, storeVal, isDefault);\n\n if (serializedVal !== currentUrlVal) {\n hasChanges =\n applySearchParamUpdate({ nextParams, key: item.key, serializedValue: serializedVal }) || hasChanges;\n\n // Determine history mode preference for changed fields.\n // Global rule:\n // - 'push' items always push when changed.\n // - 'replace' items push once on default -> non-default, then replace thereafter.\n const historyMode = item.history ?? 'push';\n if (historyMode === 'push') {\n hasPushChange = true;\n } else if (!isDefault && isUrlValueDefault(item, currentUrlVal)) {\n hasPushChange = true;\n }\n }\n });\n\n if (hasChanges) {\n // 1. Generate URLs\n const prettyString = toQueryString(nextParams, config);\n const strictString = nextParams.toString();\n\n // 2. Set loop lock (Crucial: Use strict string for comparison)\n lastWrittenNormalizedSearchRef.current = strictString;\n\n // 3. Persist to Storage (if key provided)\n if (localStorageKey) {\n if (isAllDefaults && prettyString === '') {\n localStorage.removeItem(localStorageKey);\n } else {\n localStorage.setItem(localStorageKey, prettyString);\n }\n }\n\n // 4. Calculate Mode\n const mode = hasPushChange ? 'push' : 'replace';\n\n latestOnNavigateRef.current(prettyString, mode);\n }\n }, [storeValues, searchString, config, localStorageKey, navigationType]);\n // ^ onNavigate excluded from deps (used via ref) to be safe,\n // though storeValues changing is the main trigger.\n};\n\n/**\n * ----------------------------------------------------------------------------\n * 3. RESTORER HOOK (LocalStorage -> Redux)\n * ----------------------------------------------------------------------------\n * Responsibilities:\n * - Run once on mount.\n * - If URL is empty & Storage exists -> Force Redux update & URL Replace.\n */\n\ntype UseInitialRestoreFromStorageProps = {\n config: readonly UrlConfigItem<any, any>[];\n searchString: string;\n localStorageKey?: string;\n onUpdateStore: (a: any) => void;\n onNavigate: (s: string, m: 'push' | 'replace') => void;\n isRestoringRef: React.MutableRefObject<boolean>;\n lastWrittenNormalizedSearchRef: React.MutableRefObject<string | null>;\n hasCheckedStorageRef: React.MutableRefObject<boolean>;\n};\n\nconst useInitialRestoreFromStorage = (props: UseInitialRestoreFromStorageProps) => {\n const {\n config,\n searchString,\n localStorageKey,\n onUpdateStore,\n onNavigate,\n isRestoringRef,\n lastWrittenNormalizedSearchRef,\n hasCheckedStorageRef,\n } = props;\n\n useEffect(() => {\n if (!localStorageKey) {\n hasCheckedStorageRef.current = true;\n return;\n }\n\n const currentParams = new URLSearchParams(searchString);\n const hasManagedParams = config.some(item => currentParams.has(item.key));\n\n // Only restore if URL is \"empty\" regarding our config\n if (!hasManagedParams) {\n const savedString = localStorage.getItem(localStorageKey);\n\n if (savedString) {\n // Block the Reader from interfering\n isRestoringRef.current = true;\n\n // 1. Hydrate Redux (conceptually similar to Reader logic but forced)\n const savedParams = new URLSearchParams(savedString);\n config.forEach(item => {\n const val = savedParams.get(item.key);\n const deserialized = parseConfigValue(item, val);\n\n if (deserialized !== null && typeof deserialized !== 'undefined') {\n onUpdateStore(item.action(deserialized));\n }\n });\n\n // 2. Hydrate URL (Visual)\n const cleanSaved = savedString.replace(/^\\?/, '');\n const cleanCurrent = searchString.replace(/^\\?/, '');\n\n if (cleanSaved !== cleanCurrent) {\n // Set Lock so Reader doesn't freak out\n lastWrittenNormalizedSearchRef.current = new URLSearchParams(savedString).toString();\n onNavigate(savedString, 'replace');\n }\n\n // Unlock after tick\n setTimeout(() => {\n isRestoringRef.current = false;\n }, 0);\n }\n }\n\n hasCheckedStorageRef.current = true;\n }, [localStorageKey]); // Run once\n};\n\n/**\n * ----------------------------------------------------------------------------\n * MAIN EXPORT\n * ----------------------------------------------------------------------------\n */\nconst useUrlState = <TState>(props: UseUrlStateProps<TState>) => {\n // Shared communication channel between hooks\n\n // Stores the last URL search string written by this hook (normalized encoding).\n const lastWrittenNormalizedSearchRef = useRef<string | null>(null);\n\n // Shared flag for Restoration phase\n const isRestoringRef = useRef(false);\n const hasCheckedStorageRef = useRef(!props.localStorageKey);\n\n // 1. Sticky State (Restorer)\n useInitialRestoreFromStorage({\n ...props,\n lastWrittenNormalizedSearchRef,\n isRestoringRef,\n hasCheckedStorageRef,\n });\n\n // 2. Read from URL (URL -> Redux)\n useSyncUrlToStore({\n ...props,\n lastWrittenNormalizedSearchRef,\n isRestoringRef,\n hasCheckedStorageRef,\n });\n\n // 3. Write to URL (Redux -> URL)\n useSyncStoreToUrl({\n ...props,\n lastWrittenNormalizedSearchRef,\n });\n};\n\nexport default useUrlState;\n"],"names":["normalizeSearch","search","clean","parseConfigValue","item","urlRawValue","deserializeValue","getValueToApply","parsedValue","defaultValue","shouldDispatchParsedValue","params","valueToApply","currentStoreValue","isEqual","isUrlMissing","isNil","isStoreDefault","serializeConfigValue","storeValue","isDefault","serializeValue","applySearchParamUpdate","nextParams","key","serializedValue","isUrlValueDefault","valueFromUrl","useSyncUrlToStore","config","searchString","storeValues","navigationType","onUpdateStore","lastWrittenNormalizedSearchRef","isRestoringRef","hasCheckedStorageRef","latestConfigRef","useLatest","latestStoreValuesRef","latestOnUpdateStoreRef","useEffect","currentStandard","currentParams","useSyncStoreToUrl","props","onNavigate","localStorageKey","latestOnNavigateRef","previousSearchRef","useRef","useAfterMount","currentStandardSearch","hasSearchChanged","hasChanges","hasPushChange","isAllDefaults","storeVal","currentUrlVal","serializedVal","prettyString","toQueryString","strictString","mode","useInitialRestoreFromStorage","savedString","savedParams","val","deserialized","cleanSaved","cleanCurrent","useUrlState"],"mappings":";;;;;AAwEA,MAAMA,IAAkB,CAACC,MAAmB;AACxC,QAAMC,IAAQD,EAAO,QAAQ,OAAO,EAAE;AACtC,SAAO,IAAI,gBAAgBC,CAAK,EAAE,SAAA;AACtC,GAEMC,IAAmB,CAACC,GAA+BC,MACrDD,EAAK,oBAAoBA,EAAK,kBAAkBC,CAAW,IAAIC,EAAiBD,GAAaD,EAAK,QAAQ,QAAQ,GAEhHG,IAAkB,CAACC,GAAsBC,MAA0BD,KAAeC,GAElFC,IAA4B,CAACC,MAK7B;AACF,QAAM,EAAE,cAAAC,GAAc,mBAAAC,GAAmB,aAAAR,GAAa,cAAAI,MAAiBE;AAEvE,MAAI,OAAOC,IAAiB,OAAeE,EAAQF,GAAcC,CAAiB;AAC9E,WAAO;AAGX,QAAME,IAAeC,EAAMX,CAAW,GAChCY,IAAiBH,EAAQD,GAAmBJ,CAAY;AAC9D,SAAO,EAAEM,KAAgBE;AAC7B,GAEMC,IAAuB,CACzBd,GACAe,GACAC,MAEIA,IACO,OAEPhB,EAAK,kBACEA,EAAK,gBAAgBe,CAAmB,IAE5CE,EAAeF,GAAqBf,EAAK,QAAQ,QAAQ,GAG9DkB,IAAyB,CAACX,MAI1B;AACF,QAAM,EAAE,YAAAY,GAAY,KAAAC,GAAK,iBAAAC,EAAA,IAAoBd;AAE7C,SAAIK,EAAMS,CAAe,IAChBF,EAAW,IAAIC,CAAG,KAGvBD,EAAW,OAAOC,CAAG,GACd,MAHI,MAMfD,EAAW,IAAIC,GAAKC,CAAe,GAC5B;AACX,GAEMC,IAAoB,CAACtB,GAA+BC,MAA+B;AACrF,MAAIW,EAAMX,CAAW;AACjB,WAAO;AAEX,QAAMG,IAAcL,EAAiBC,GAAMC,CAAW,GAChDsB,IAAepB,EAAgBC,GAAaJ,EAAK,YAAY;AACnE,SAAOU,EAAQa,GAAcvB,EAAK,YAAY;AAClD,GAsBMwB,IAAoB,CAAC;AAAA,EACvB,QAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gCAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,sBAAAC;AACJ,MAA8B;AAE1B,QAAMC,IAAkBC,EAAUT,CAAM,GAClCU,IAAuBD,EAAUP,CAAW,GAC5CS,IAAyBF,EAAUL,CAAa;AAEtD,EAAAQ,EAAU,MAAM;AAEZ,QAAI,CAACL,EAAqB;AACtB;AAIJ,UAAMM,IAAkB1C,EAAgB8B,CAAY;AASpD,QARII,EAA+B,YAAYQ,MAI3CR,EAA+B,UAAU,OAIzCC,EAAe;AACf;AAIJ,UAAMQ,IAAgB,IAAI,gBAAgBb,CAAY;AAEtD,IAAAO,EAAgB,QAAQ,QAAQ,CAAAjC,MAAQ;AACpC,YAAMC,IAAcsC,EAAc,IAAIvC,EAAK,GAAG,GACxCI,IAAcL,EAAiBC,GAAMC,CAAW,GAChDO,IAAeL,EAAgBC,GAAaJ,EAAK,YAAY,GAC7DS,IAAoB0B,EAAqB,QAAQnC,EAAK,GAAG;AAE/D,UACIM,EAA0B;AAAA,QACtB,cAAAE;AAAA,QACA,mBAAAC;AAAA,QACA,aAAAR;AAAA,QACA,cAAcD,EAAK;AAAA,MAAA,CACtB,GACH;AAGE,YAAIY,EAAMX,CAAW,KAAK2B,MAAmB;AACzC;AAEJ,QAAAQ,EAAuB,QAAQpC,EAAK,OAAOQ,CAAY,CAAC;AAAA,MAC5D;AAAA,IACJ,CAAC;AAAA,EAIL,GAAG,CAACkB,GAAcI,GAAgCC,GAAgBC,CAAoB,CAAC;AAC3F,GAuBMQ,IAAoB,CAACC,MAAkC;AACzD,QAAM;AAAA,IACF,QAAAhB;AAAA,IACA,cAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAe;AAAA,IACA,gCAAAZ;AAAA,IACA,iBAAAa;AAAA,IACA,gBAAAf;AAAA,EAAA,IACAa,GAGEG,IAAsBV,EAAUQ,CAAU,GAC1CG,IAAoBC,EAAsBlD,EAAgB8B,CAAY,CAAC;AAG7E,EAAAqB,EAAc,MAAM;AAChB,UAAMC,IAAwBpD,EAAgB8B,CAAY,GACpDuB,IAAmBJ,EAAkB,YAAYG;AAQvD,QAPAH,EAAkB,UAAUG,GAMApB,MAAmB,SAASqB;AAEpD;AAGJ,UAAMV,IAAgB,IAAI,gBAAgBb,CAAY,GAChDP,IAAa,IAAI,gBAAgBO,CAAY;AAEnD,QAAIwB,IAAa,IACbC,IAAgB,IAChBC,IAAgB;AA4BpB,QA1BA3B,EAAO,QAAQ,CAAAzB,MAAQ;AACnB,YAAMqD,IAAW1B,EAAY3B,EAAK,GAAG,GAC/BsD,IAAgBf,EAAc,IAAIvC,EAAK,GAAG,GAC1CgB,IAAYN,EAAQ2C,GAAUrD,EAAK,YAAY;AAErD,MAAKgB,MAAWoC,IAAgB;AAEhC,YAAMG,IAAgBzC,EAAqBd,GAAMqD,GAAUrC,CAAS;AAEpE,MAAIuC,MAAkBD,MAClBJ,IACIhC,EAAuB,EAAE,YAAAC,GAAY,KAAKnB,EAAK,KAAK,iBAAiBuD,EAAA,CAAe,KAAKL,KAMzElD,EAAK,WAAW,YAChB,UAET,CAACgB,KAAaM,EAAkBtB,GAAMsD,CAAa,OAC1DH,IAAgB;AAAA,IAG5B,CAAC,GAEGD,GAAY;AAEZ,YAAMM,IAAeC,EAActC,GAAYM,CAAM,GAC/CiC,IAAevC,EAAW,SAAA;AAGhC,MAAAW,EAA+B,UAAU4B,GAGrCf,MACIS,KAAiBI,MAAiB,KAClC,aAAa,WAAWb,CAAe,IAEvC,aAAa,QAAQA,GAAiBa,CAAY;AAK1D,YAAMG,IAAOR,IAAgB,SAAS;AAEtC,MAAAP,EAAoB,QAAQY,GAAcG,CAAI;AAAA,IAClD;AAAA,EACJ,GAAG,CAAChC,GAAaD,GAAcD,GAAQkB,GAAiBf,CAAc,CAAC;AAG3E,GAsBMgC,IAA+B,CAACnB,MAA6C;AAC/E,QAAM;AAAA,IACF,QAAAhB;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAiB;AAAA,IACA,eAAAd;AAAA,IACA,YAAAa;AAAA,IACA,gBAAAX;AAAA,IACA,gCAAAD;AAAA,IACA,sBAAAE;AAAA,EAAA,IACAS;AAEJ,EAAAJ,EAAU,MAAM;AACZ,QAAI,CAACM,GAAiB;AAClB,MAAAX,EAAqB,UAAU;AAC/B;AAAA,IACJ;AAEA,UAAMO,IAAgB,IAAI,gBAAgBb,CAAY;AAItD,QAAI,CAHqBD,EAAO,KAAK,CAAAzB,MAAQuC,EAAc,IAAIvC,EAAK,GAAG,CAAC,GAGjD;AACnB,YAAM6D,IAAc,aAAa,QAAQlB,CAAe;AAExD,UAAIkB,GAAa;AAEb,QAAA9B,EAAe,UAAU;AAGzB,cAAM+B,IAAc,IAAI,gBAAgBD,CAAW;AACnD,QAAApC,EAAO,QAAQ,CAAAzB,MAAQ;AACnB,gBAAM+D,IAAMD,EAAY,IAAI9D,EAAK,GAAG,GAC9BgE,IAAejE,EAAiBC,GAAM+D,CAAG;AAE/C,UAAIC,MAAiB,QAAQ,OAAOA,IAAiB,OACjDnC,EAAc7B,EAAK,OAAOgE,CAAY,CAAC;AAAA,QAE/C,CAAC;AAGD,cAAMC,IAAaJ,EAAY,QAAQ,OAAO,EAAE,GAC1CK,IAAexC,EAAa,QAAQ,OAAO,EAAE;AAEnD,QAAIuC,MAAeC,MAEfpC,EAA+B,UAAU,IAAI,gBAAgB+B,CAAW,EAAE,SAAA,GAC1EnB,EAAWmB,GAAa,SAAS,IAIrC,WAAW,MAAM;AACb,UAAA9B,EAAe,UAAU;AAAA,QAC7B,GAAG,CAAC;AAAA,MACR;AAAA,IACJ;AAEA,IAAAC,EAAqB,UAAU;AAAA,EACnC,GAAG,CAACW,CAAe,CAAC;AACxB,GAOMwB,IAAc,CAAS1B,MAAoC;AAI7D,QAAMX,IAAiCgB,EAAsB,IAAI,GAG3Df,IAAiBe,EAAO,EAAK,GAC7Bd,IAAuBc,EAAO,CAACL,EAAM,eAAe;AAG1D,EAAAmB,EAA6B;AAAA,IACzB,GAAGnB;AAAA,IACH,gCAAAX;AAAA,IACA,gBAAAC;AAAA,IACA,sBAAAC;AAAA,EAAA,CACH,GAGDR,EAAkB;AAAA,IACd,GAAGiB;AAAA,IACH,gCAAAX;AAAA,IACA,gBAAAC;AAAA,IACA,sBAAAC;AAAA,EAAA,CACH,GAGDQ,EAAkB;AAAA,IACd,GAAGC;AAAA,IACH,gCAAAX;AAAA,EAAA,CACH;AACL;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './utils/mergeClassNameOverrides';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeClassNameOverrides.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rio-cloud/rio-uikit",
|
|
3
|
-
"version": "2.1
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"description": "The RIO UIKIT component library",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -46,12 +46,12 @@
|
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@biomejs/biome": "2.
|
|
49
|
+
"@biomejs/biome": "2.4.2",
|
|
50
50
|
"@rio-cloud/biome-config": "1.1.0",
|
|
51
|
-
"@rio-cloud/vite-plugin-frontend-license-check": "1.
|
|
51
|
+
"@rio-cloud/vite-plugin-frontend-license-check": "1.2.0",
|
|
52
52
|
"@testing-library/dom": "10.4.1",
|
|
53
53
|
"@testing-library/jest-dom": "6.9.1",
|
|
54
|
-
"@testing-library/react": "16.3.
|
|
54
|
+
"@testing-library/react": "16.3.2",
|
|
55
55
|
"@testing-library/user-event": "14.6.1",
|
|
56
56
|
"@types/heremaps": "3.1.14",
|
|
57
57
|
"@types/node": "24.10.1",
|
|
@@ -59,14 +59,14 @@
|
|
|
59
59
|
"@types/react-dom": "18.3.5",
|
|
60
60
|
"@types/react-redux": "7.1.34",
|
|
61
61
|
"@types/resize-observer-browser": "0.1.11",
|
|
62
|
-
"@vitejs/plugin-react": "5.1.
|
|
62
|
+
"@vitejs/plugin-react": "5.1.4",
|
|
63
63
|
"@vitest/coverage-c8": "0.33.0",
|
|
64
|
-
"autoprefixer": "10.4.
|
|
64
|
+
"autoprefixer": "10.4.24",
|
|
65
65
|
"backstopjs": "6.3.25",
|
|
66
66
|
"copyfiles": "2.4.1",
|
|
67
|
-
"dotenv": "17.
|
|
68
|
-
"glob": "13.0.
|
|
69
|
-
"happy-dom": "20.
|
|
67
|
+
"dotenv": "17.3.1",
|
|
68
|
+
"glob": "13.0.5",
|
|
69
|
+
"happy-dom": "20.6.3",
|
|
70
70
|
"jsdom": "27.4.0",
|
|
71
71
|
"jsdom-global": "3.0.2",
|
|
72
72
|
"postcss": "8.5.6",
|
|
@@ -77,11 +77,11 @@
|
|
|
77
77
|
"react-dom": "18.0.0",
|
|
78
78
|
"react-intl": "7.1.14",
|
|
79
79
|
"rollup-plugin-copy": "3.5.0",
|
|
80
|
-
"sass": "1.97.
|
|
80
|
+
"sass": "1.97.3",
|
|
81
81
|
"strip-ansi": "7.1.2",
|
|
82
82
|
"svgo": "4.0.0",
|
|
83
83
|
"typescript": "5.9.3",
|
|
84
|
-
"vite": "7.3.
|
|
84
|
+
"vite": "7.3.1",
|
|
85
85
|
"vite-plugin-dts": "4.5.4",
|
|
86
86
|
"vite-plugin-zip-pack": "1.2.4",
|
|
87
87
|
"vitest": "3.2.4",
|
|
@@ -98,30 +98,29 @@
|
|
|
98
98
|
"@dnd-kit/utilities": "3.2.2",
|
|
99
99
|
"@formkit/auto-animate": "0.9.0",
|
|
100
100
|
"@popperjs/core": "2.11.8",
|
|
101
|
-
"@tanstack/react-virtual": "3.13.
|
|
102
|
-
"classnames": "2.5.1",
|
|
101
|
+
"@tanstack/react-virtual": "3.13.18",
|
|
103
102
|
"date-fns": "4.1.0",
|
|
104
103
|
"driver.js": "1.4.0",
|
|
105
|
-
"es-toolkit": "1.
|
|
104
|
+
"es-toolkit": "1.44.0",
|
|
106
105
|
"events": "3.3.0",
|
|
107
106
|
"iframe-resizer-react": "1.1.0",
|
|
108
107
|
"moment": "2.30.1",
|
|
109
|
-
"motion": "12.
|
|
108
|
+
"motion": "12.34.2",
|
|
110
109
|
"natural-orderby": "5.0.0",
|
|
111
110
|
"process": "0.11.10",
|
|
112
111
|
"prop-types": "15.8.1",
|
|
113
112
|
"react-bootstrap": "1.6.4",
|
|
114
|
-
"react-content-loader": "7.1.
|
|
113
|
+
"react-content-loader": "7.1.2",
|
|
115
114
|
"react-custom-scrollbars-4": "4.5.1",
|
|
116
115
|
"react-datetime": "github:rio-cloud/react-datetime#v3.1.1-1-merged",
|
|
117
|
-
"react-day-picker": "9.13.
|
|
116
|
+
"react-day-picker": "9.13.2",
|
|
118
117
|
"react-dropzone": "14.3.8",
|
|
119
118
|
"react-imask": "7.6.1",
|
|
120
119
|
"react-notifications": "1.7.4",
|
|
121
120
|
"react-onclickoutside": "6.13.2",
|
|
122
121
|
"react-popper": "2.3.0",
|
|
123
122
|
"react-toastify": "11.0.5",
|
|
124
|
-
"recharts": "3.
|
|
123
|
+
"recharts": "3.7.0",
|
|
125
124
|
"tiny-invariant": "1.3.3",
|
|
126
125
|
"tslib": "2.8.1"
|
|
127
126
|
},
|
package/routeUtils.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import { getSortDirShort as
|
|
1
|
+
import { deserializeValue as i, getSortDirShort as t, mapColumnsSettingsToStrings as o, parseColumnsSettingsStrings as s, parseSorting as a, serializeSorting as n, serializeValue as S, toQueryString as g } from "./utils/routeUtils.js";
|
|
2
|
+
import { isEqual as u } from "es-toolkit";
|
|
2
3
|
export {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
i as deserializeValue,
|
|
5
|
+
t as getSortDirShort,
|
|
6
|
+
u as isEqual,
|
|
7
|
+
o as mapColumnsSettingsToStrings,
|
|
8
|
+
s as parseColumnsSettingsStrings,
|
|
9
|
+
a as parseSorting,
|
|
10
|
+
n as serializeSorting,
|
|
11
|
+
S as serializeValue,
|
|
12
|
+
g as toQueryString
|
|
7
13
|
};
|
|
8
14
|
//# sourceMappingURL=routeUtils.js.map
|
package/routeUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeUtils.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routeUtils.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as a, jsxs as p } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as d } from "react";
|
|
3
3
|
import { isEmpty as i } from "es-toolkit/compat";
|
|
4
|
-
import u from "
|
|
4
|
+
import u from "../../../../utils/classNames.js";
|
|
5
5
|
import N from "../../../../components/applicationHeader/ApplicationActionBar.js";
|
|
6
6
|
const H = d(
|
|
7
7
|
(r, n) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VolkswagenApplicationHeader.js","sources":["../../../../../src/themes/Volkswagen/components/applicationHeader/VolkswagenApplicationHeader.tsx"],"sourcesContent":["import React, { forwardRef, type ForwardedRef } from 'react';\nimport { isEmpty } from 'es-toolkit/compat';\nimport classNames from '
|
|
1
|
+
{"version":3,"file":"VolkswagenApplicationHeader.js","sources":["../../../../../src/themes/Volkswagen/components/applicationHeader/VolkswagenApplicationHeader.tsx"],"sourcesContent":["import React, { forwardRef, type ForwardedRef } from 'react';\nimport { isEmpty } from 'es-toolkit/compat';\n\nimport classNames from '../../../../utils/classNames';\nimport ApplicationActionBar from '../../../../components/applicationHeader/ApplicationActionBar';\nimport type { ApplicationHeaderProps } from '../../../../ApplicationHeader';\n\nexport type ModuleProps = {\n key: string;\n route: React.ReactNode;\n};\n\nexport type VolkswagenApplicationHeaderProps = ApplicationHeaderProps & {\n homeRoute?: React.ReactNode;\n appMenuItems?: ModuleProps[];\n appNavigator?: React.ReactNode;\n appNavigatorClassName?: string;\n navItems?: ModuleProps[];\n actionBarItems?: React.ReactNode[];\n onMount?: VoidFunction;\n onUnmount?: VoidFunction;\n className?: string;\n};\n\nexport const VolkswagenApplicationHeader = forwardRef(\n (props: VolkswagenApplicationHeaderProps, ref: ForwardedRef<HTMLElement>) => {\n const {\n homeRoute = '',\n appNavigator,\n appNavigatorClassName,\n appMenuItems,\n navItems = [],\n actionBarItems = [],\n onMount = () => {},\n onUnmount = () => {},\n className = '',\n ...remainingProps\n } = props;\n\n const wrapperClassNames = classNames(\n 'ApplicationHeader VolkswagenApplicationHeader',\n 'user-select-none',\n className && className\n );\n\n return (\n <nav {...remainingProps} className={wrapperClassNames} ref={ref}>\n <div className='width-100pct'>\n <div className='brand'>\n <div className='logo'>{homeRoute}</div>\n </div>\n {isEmpty(navItems) && <ul className='SubmoduleNavigation nav' />}\n {!isEmpty(navItems) && (\n <ul className='SubmoduleNavigation nav'>\n {navItems.map(navItem => (\n <li key={navItem.key} className='submodule' data-nav-item-key={navItem.key}>\n {navItem.route}\n </li>\n ))}\n </ul>\n )}\n <ApplicationActionBar items={actionBarItems} />\n </div>\n </nav>\n );\n }\n);\n\nexport default VolkswagenApplicationHeader;\n"],"names":["VolkswagenApplicationHeader","forwardRef","props","ref","homeRoute","appNavigator","appNavigatorClassName","appMenuItems","navItems","actionBarItems","onMount","onUnmount","className","remainingProps","wrapperClassNames","classNames","jsx","jsxs","isEmpty","navItem","ApplicationActionBar"],"mappings":";;;;;AAwBO,MAAMA,IAA8BC;AAAA,EACvC,CAACC,GAAyCC,MAAmC;AACzE,UAAM;AAAA,MACF,WAAAC,IAAY;AAAA,MACZ,cAAAC;AAAA,MACA,uBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,UAAAC,IAAW,CAAA;AAAA,MACX,gBAAAC,IAAiB,CAAA;AAAA,MACjB,SAAAC,IAAU,MAAM;AAAA,MAAC;AAAA,MACjB,WAAAC,IAAY,MAAM;AAAA,MAAC;AAAA,MACnB,WAAAC,IAAY;AAAA,MACZ,GAAGC;AAAA,IAAA,IACHX,GAEEY,IAAoBC;AAAA,MACtB;AAAA,MACA;AAAA,MACAH,KAAaA;AAAA,IAAA;AAGjB,WACI,gBAAAI,EAAC,OAAA,EAAK,GAAGH,GAAgB,WAAWC,GAAmB,KAAAX,GACnD,UAAA,gBAAAc,EAAC,OAAA,EAAI,WAAU,gBACX,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,SACX,UAAA,gBAAAA,EAAC,SAAI,WAAU,QAAQ,aAAU,EAAA,CACrC;AAAA,MACCE,EAAQV,CAAQ,KAAK,gBAAAQ,EAAC,MAAA,EAAG,WAAU,2BAA0B;AAAA,MAC7D,CAACE,EAAQV,CAAQ,uBACb,MAAA,EAAG,WAAU,2BACT,UAAAA,EAAS,IAAI,CAAAW,wBACT,MAAA,EAAqB,WAAU,aAAY,qBAAmBA,EAAQ,KAClE,YAAQ,MAAA,GADJA,EAAQ,GAEjB,CACH,EAAA,CACL;AAAA,MAEJ,gBAAAH,EAACI,GAAA,EAAqB,OAAOX,EAAA,CAAgB;AAAA,IAAA,EAAA,CACjD,EAAA,CACJ;AAAA,EAER;AACJ;"}
|
package/useCookies.d.ts
ADDED
package/useCookies.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCookies.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRioCookieConsent.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSearchHighlight.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
package/useUrlState.d.ts
ADDED
package/useUrlState.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUrlState.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classNames.js","sources":["../../src/utils/classNames.ts"],"sourcesContent":["export type ClassNamePart = string | undefined | null | false | 0 | '';\n\nconst classNames = (...parts: ClassNamePart[]) => parts.filter(Boolean).join(' ');\n\nexport default classNames;\n"],"names":["classNames","parts"],"mappings":"AAEA,MAAMA,IAAa,IAAIC,MAA2BA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const mergeClassNameOverrides: (defaultClasses: string, overrides?: string) => string;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const g = (t) => t.split(" ").map((n) => n.trim()).filter(Boolean), a = (t, n, e) => ({
|
|
2
|
+
kind: t,
|
|
3
|
+
axis: n,
|
|
4
|
+
value: e
|
|
5
|
+
}), h = (t) => {
|
|
6
|
+
const n = t.match(/^(margin|padding)(?:-(x|y|top|right|bottom|left))?-(.+)$/);
|
|
7
|
+
if (!n)
|
|
8
|
+
return null;
|
|
9
|
+
const e = n[1], f = n[2] ?? "all", u = n[3];
|
|
10
|
+
return { kind: e, axis: f, value: u };
|
|
11
|
+
}, $ = ({ kind: t, axis: n, value: e }) => n === "all" ? `${t}-${e}` : `${t}-${n}-${e}`, y = (t, n) => n === "all" || t === "all" || t === n || t === "x" && (n === "left" || n === "right") || t === "y" && (n === "top" || n === "bottom") || n === "x" && (t === "left" || t === "right") || n === "y" && (t === "top" || t === "bottom"), m = (t) => {
|
|
12
|
+
if (t.startsWith("margin-")) {
|
|
13
|
+
const [n, e] = t.split("-");
|
|
14
|
+
return e === "x" || e === "y" || e === "top" || e === "right" || e === "bottom" || e === "left" ? `${n}-${e}` : n;
|
|
15
|
+
}
|
|
16
|
+
if (t.startsWith("padding-")) {
|
|
17
|
+
const [n, e] = t.split("-");
|
|
18
|
+
return e === "x" || e === "y" || e === "top" || e === "right" || e === "bottom" || e === "left" ? `${n}-${e}` : n;
|
|
19
|
+
}
|
|
20
|
+
return t.startsWith("text-size-") ? "text-size" : t.startsWith("text-color-") ? "text-color" : t.startsWith("bg-") ? "bg" : t === "rounded" || t.startsWith("rounded-") ? "rounded" : t === "border" || t.startsWith("border-") ? "border" : t;
|
|
21
|
+
}, k = (t, n) => {
|
|
22
|
+
if (!n || n.trim() === "")
|
|
23
|
+
return t;
|
|
24
|
+
const e = g(n), f = new Set(e.map((r) => m(r))), u = e.map(h).filter(Boolean), c = {
|
|
25
|
+
margin: u.filter((r) => r.kind === "margin").map((r) => r.axis),
|
|
26
|
+
padding: u.filter((r) => r.kind === "padding").map((r) => r.axis)
|
|
27
|
+
}, b = g(t), l = [], p = b.filter((r) => {
|
|
28
|
+
const i = h(r);
|
|
29
|
+
return i ? c[i.kind].some((S) => y(i.axis, S)) ? (l.push(i), !1) : !0 : !f.has(m(r));
|
|
30
|
+
}), x = l.filter((r) => r.axis === "x" || r.axis === "y").flatMap((r) => {
|
|
31
|
+
const i = c[r.kind];
|
|
32
|
+
if (i.includes("all") || i.includes(r.axis))
|
|
33
|
+
return [];
|
|
34
|
+
if (r.axis === "x") {
|
|
35
|
+
const o = i.includes("left"), s = i.includes("right");
|
|
36
|
+
if (o && !s)
|
|
37
|
+
return [a(r.kind, "right", r.value)];
|
|
38
|
+
if (s && !o)
|
|
39
|
+
return [a(r.kind, "left", r.value)];
|
|
40
|
+
}
|
|
41
|
+
if (r.axis === "y") {
|
|
42
|
+
const o = i.includes("top"), s = i.includes("bottom");
|
|
43
|
+
if (o && !s)
|
|
44
|
+
return [a(r.kind, "bottom", r.value)];
|
|
45
|
+
if (s && !o)
|
|
46
|
+
return [a(r.kind, "top", r.value)];
|
|
47
|
+
}
|
|
48
|
+
return [];
|
|
49
|
+
}).map($), d = /* @__PURE__ */ new Set([...p, ...e]), T = x.filter((r) => d.has(r) ? !1 : (d.add(r), !0));
|
|
50
|
+
return [...p, ...T, ...e].join(" ");
|
|
51
|
+
};
|
|
52
|
+
export {
|
|
53
|
+
k as mergeClassNameOverrides
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=mergeClassNameOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeClassNameOverrides.js","sources":["../../src/utils/mergeClassNameOverrides.ts"],"sourcesContent":["const splitClasses = (value: string): string[] =>\n value\n .split(' ')\n .map(className => className.trim())\n .filter(Boolean);\n\ntype SpacingKind = 'margin' | 'padding';\ntype SpacingAxis = 'all' | 'x' | 'y' | 'top' | 'right' | 'bottom' | 'left';\n\ntype SpacingToken = {\n kind: SpacingKind;\n axis: SpacingAxis;\n value: string;\n};\n\nconst createSpacingToken = (kind: SpacingKind, axis: SpacingAxis, value: string): SpacingToken => ({\n kind,\n axis,\n value,\n});\n\nconst parseSpacingToken = (className: string): SpacingToken | null => {\n const matches = className.match(/^(margin|padding)(?:-(x|y|top|right|bottom|left))?-(.+)$/);\n if (!matches) {\n return null;\n }\n\n const kind = matches[1] as SpacingKind;\n const axis = (matches[2] as Exclude<SpacingAxis, 'all'> | undefined) ?? 'all';\n const value = matches[3];\n\n return { kind, axis, value };\n};\n\nconst spacingTokenToClassName = ({ kind, axis, value }: SpacingToken): string =>\n axis === 'all' ? `${kind}-${value}` : `${kind}-${axis}-${value}`;\n\nconst overrideAffectsSpacingAxis = (defaultAxis: SpacingAxis, overrideAxis: SpacingAxis): boolean => {\n if (overrideAxis === 'all') {\n return true;\n }\n\n if (defaultAxis === 'all') {\n return true;\n }\n\n if (defaultAxis === overrideAxis) {\n return true;\n }\n\n if (defaultAxis === 'x' && (overrideAxis === 'left' || overrideAxis === 'right')) {\n return true;\n }\n\n if (defaultAxis === 'y' && (overrideAxis === 'top' || overrideAxis === 'bottom')) {\n return true;\n }\n\n if (overrideAxis === 'x' && (defaultAxis === 'left' || defaultAxis === 'right')) {\n return true;\n }\n\n if (overrideAxis === 'y' && (defaultAxis === 'top' || defaultAxis === 'bottom')) {\n return true;\n }\n\n return false;\n};\n\nconst getUtilityClassBase = (className: string): string => {\n if (className.startsWith('margin-')) {\n const [prefix, axis] = className.split('-');\n if (\n axis === 'x' ||\n axis === 'y' ||\n axis === 'top' ||\n axis === 'right' ||\n axis === 'bottom' ||\n axis === 'left'\n ) {\n return `${prefix}-${axis}`;\n }\n return prefix;\n }\n\n if (className.startsWith('padding-')) {\n const [prefix, axis] = className.split('-');\n if (\n axis === 'x' ||\n axis === 'y' ||\n axis === 'top' ||\n axis === 'right' ||\n axis === 'bottom' ||\n axis === 'left'\n ) {\n return `${prefix}-${axis}`;\n }\n return prefix;\n }\n\n if (className.startsWith('text-size-')) {\n return 'text-size';\n }\n\n if (className.startsWith('text-color-')) {\n return 'text-color';\n }\n\n if (className.startsWith('bg-')) {\n return 'bg';\n }\n\n if (className === 'rounded' || className.startsWith('rounded-')) {\n return 'rounded';\n }\n\n if (className === 'border' || className.startsWith('border-')) {\n return 'border';\n }\n\n return className;\n};\n\nexport const mergeClassNameOverrides = (defaultClasses: string, overrides?: string): string => {\n if (!overrides || overrides.trim() === '') {\n return defaultClasses;\n }\n\n const overrideTokens = splitClasses(overrides);\n const overrideBases = new Set(overrideTokens.map(token => getUtilityClassBase(token)));\n const overrideSpacingTokens = overrideTokens.map(parseSpacingToken).filter(Boolean) as SpacingToken[];\n const overrideSpacingByKind = {\n margin: overrideSpacingTokens.filter(token => token.kind === 'margin').map(token => token.axis),\n padding: overrideSpacingTokens.filter(token => token.kind === 'padding').map(token => token.axis),\n } as const;\n\n const defaultTokens = splitClasses(defaultClasses);\n const removedDefaultSpacingTokens: SpacingToken[] = [];\n const filteredDefaults = defaultTokens.filter(token => {\n const defaultSpacingToken = parseSpacingToken(token);\n if (defaultSpacingToken) {\n const overrideAxes = overrideSpacingByKind[defaultSpacingToken.kind];\n const isOverridden = overrideAxes.some(axis => overrideAffectsSpacingAxis(defaultSpacingToken.axis, axis));\n if (isOverridden) {\n removedDefaultSpacingTokens.push(defaultSpacingToken);\n return false;\n }\n return true;\n }\n\n return !overrideBases.has(getUtilityClassBase(token));\n });\n\n const fallbackSpacingTokens = removedDefaultSpacingTokens\n .filter(token => token.axis === 'x' || token.axis === 'y')\n .flatMap<SpacingToken>(token => {\n const overrideAxes = overrideSpacingByKind[token.kind];\n if (overrideAxes.includes('all') || overrideAxes.includes(token.axis)) {\n return [];\n }\n\n if (token.axis === 'x') {\n const hasLeft = overrideAxes.includes('left');\n const hasRight = overrideAxes.includes('right');\n\n if (hasLeft && !hasRight) {\n return [createSpacingToken(token.kind, 'right', token.value)];\n }\n\n if (hasRight && !hasLeft) {\n return [createSpacingToken(token.kind, 'left', token.value)];\n }\n }\n\n if (token.axis === 'y') {\n const hasTop = overrideAxes.includes('top');\n const hasBottom = overrideAxes.includes('bottom');\n\n if (hasTop && !hasBottom) {\n return [createSpacingToken(token.kind, 'bottom', token.value)];\n }\n\n if (hasBottom && !hasTop) {\n return [createSpacingToken(token.kind, 'top', token.value)];\n }\n }\n\n return [];\n })\n .map(spacingTokenToClassName);\n\n const seenTokens = new Set([...filteredDefaults, ...overrideTokens]);\n const uniqueFallbackSpacingTokens = fallbackSpacingTokens.filter(token => {\n if (seenTokens.has(token)) {\n return false;\n }\n seenTokens.add(token);\n return true;\n });\n\n return [...filteredDefaults, ...uniqueFallbackSpacingTokens, ...overrideTokens].join(' ');\n};\n"],"names":["splitClasses","value","className","createSpacingToken","kind","axis","parseSpacingToken","matches","spacingTokenToClassName","overrideAffectsSpacingAxis","defaultAxis","overrideAxis","getUtilityClassBase","prefix","mergeClassNameOverrides","defaultClasses","overrides","overrideTokens","overrideBases","token","overrideSpacingTokens","overrideSpacingByKind","defaultTokens","removedDefaultSpacingTokens","filteredDefaults","defaultSpacingToken","fallbackSpacingTokens","overrideAxes","hasLeft","hasRight","hasTop","hasBottom","seenTokens","uniqueFallbackSpacingTokens"],"mappings":"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"}
|
package/utils/routeUtils.d.ts
CHANGED
|
@@ -1,15 +1,124 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { isEqual } from 'es-toolkit';
|
|
2
|
+
import { SortDirectionType } from './SortUtils';
|
|
3
|
+
import { TableColumnDetailsMap, TableColumnsSettings } from '../components/table/TableSettingsDialog';
|
|
4
|
+
export { isEqual };
|
|
5
|
+
export type ColumnsSettings = TableColumnsSettings;
|
|
6
|
+
/**
|
|
7
|
+
* Returns a compact sort direction prefix for use in URL params.
|
|
8
|
+
* Serialize: Ascending = "", Descending = "-"
|
|
9
|
+
*
|
|
10
|
+
* Useful for concise sort state like `sort=-name` or `sort=name`.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* getSortDirShort(SortDirection.DESCENDING) // '-'
|
|
14
|
+
*/
|
|
15
|
+
export declare const getSortDirShort: (sortDir: string) => "" | "-";
|
|
16
|
+
/**
|
|
17
|
+
* Returns a serialized string of the sort order and sort direction.
|
|
18
|
+
*
|
|
19
|
+
* @param sortInfo { sortDir: SortDirectionType; sortBy: string }
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
export declare const serializeSorting: (sortInfo: {
|
|
23
|
+
sortDir: SortDirectionType;
|
|
11
24
|
sortBy: string;
|
|
12
|
-
|
|
13
|
-
|
|
25
|
+
}) => string | null;
|
|
26
|
+
/**
|
|
27
|
+
* Parses a compact sort param (e.g. `name` or `-name`) into sort fields.
|
|
28
|
+
* Useful when reading URL params into table state.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* parseSorting('-createdAt') // { sortBy: 'createdAt', sortDir: 'DESCENDING' }
|
|
32
|
+
*/
|
|
33
|
+
export declare const parseSorting: (sortValueShort: string | null | undefined) => {
|
|
34
|
+
sortBy: string;
|
|
35
|
+
sortDir: string;
|
|
36
|
+
} | null;
|
|
37
|
+
/**
|
|
38
|
+
* Serializes column settings into compact strings for a URL param.
|
|
39
|
+
* Useful to keep table configuration URLs short and readable.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* mapColumnsSettingsToStrings({ columnOrder: ['name'], hiddenColumns: [], columnsDetails: { name: { width: 120 } } })
|
|
43
|
+
* // ['name:120']
|
|
44
|
+
*/
|
|
14
45
|
export declare const mapColumnsSettingsToStrings: ({ columnOrder, hiddenColumns, columnsDetails, }: ColumnsSettings) => string[];
|
|
15
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Parses compact column strings into column settings using defaults.
|
|
48
|
+
* Useful to restore table settings from URL state.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* parseColumnsSettingsStrings(['-name:200'], { name: { width: 120, defaultWidth: 120 } })
|
|
52
|
+
*/
|
|
53
|
+
export declare const parseColumnsSettingsStrings: (settings: string[], defaultColumnsDetails: TableColumnDetailsMap) => TableColumnsSettings;
|
|
54
|
+
export type UrlTypeMap = {
|
|
55
|
+
string: string;
|
|
56
|
+
number: number;
|
|
57
|
+
boolean: boolean;
|
|
58
|
+
array: string[];
|
|
59
|
+
'array-number': number[];
|
|
60
|
+
object: Record<string, unknown>;
|
|
61
|
+
};
|
|
62
|
+
export type UrlValueType = keyof UrlTypeMap;
|
|
63
|
+
export type UrlConfigItem<TState = unknown, TValue = unknown> = {
|
|
64
|
+
/**
|
|
65
|
+
* The query param key in the URL (e.g., 'q', 'sort')
|
|
66
|
+
*/
|
|
67
|
+
key: string;
|
|
68
|
+
/**
|
|
69
|
+
* Selector to retrieve the current value from Redux.
|
|
70
|
+
*/
|
|
71
|
+
selector: (state: TState) => TValue;
|
|
72
|
+
/**
|
|
73
|
+
* Action creator to dispatch the new value to Redux.
|
|
74
|
+
*/
|
|
75
|
+
action: (value: TValue) => unknown;
|
|
76
|
+
/**
|
|
77
|
+
* The generic type for auto-parsing/serialization
|
|
78
|
+
*/
|
|
79
|
+
type?: UrlValueType;
|
|
80
|
+
/**
|
|
81
|
+
* Default value for the given key. Must be explicitly provided and
|
|
82
|
+
* must not be `undefined`.
|
|
83
|
+
*
|
|
84
|
+
* 1. If URL is missing the key, this value is applied to Redux.
|
|
85
|
+
* 2. If Redux matches this value, the key is removed from URL.
|
|
86
|
+
*/
|
|
87
|
+
defaultValue: Exclude<TValue, undefined>;
|
|
88
|
+
/**
|
|
89
|
+
* Navigation behavior when this specific value changes
|
|
90
|
+
*
|
|
91
|
+
* Behavior in `useUrlState`:
|
|
92
|
+
* - `'push'`: every change creates a new history entry.
|
|
93
|
+
* - `'replace'`: changes replace the current entry, except the first
|
|
94
|
+
* transition from default -> non-default, which is pushed once.
|
|
95
|
+
*
|
|
96
|
+
* @default 'push'
|
|
97
|
+
*/
|
|
98
|
+
history?: 'push' | 'replace';
|
|
99
|
+
/**
|
|
100
|
+
* Optional: Custom function to convert Redux Object -> URL String
|
|
101
|
+
*/
|
|
102
|
+
customSerialize?: (reduxValue: TValue) => string | null;
|
|
103
|
+
/**
|
|
104
|
+
* Optional: Custom function to convert URL String -> Redux Object
|
|
105
|
+
*/
|
|
106
|
+
customDeserialize?: (urlValue: string | null) => TValue | null;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Generates a URL query string that mimics 'qs' library behavior
|
|
110
|
+
* by keeping commas and plus signs unencoded for readability.
|
|
111
|
+
*/
|
|
112
|
+
export declare const toQueryString: (params: URLSearchParams, config: readonly UrlConfigItem[]) => string;
|
|
113
|
+
/**
|
|
114
|
+
* Converts a JS value into a string suitable for URLSearchParams.
|
|
115
|
+
* Returns null if the value is empty/invalid.
|
|
116
|
+
*/
|
|
117
|
+
export declare const serializeValue: <K extends UrlValueType>(value: UrlTypeMap[K] | null | undefined, type: K) => string | null;
|
|
118
|
+
/**
|
|
119
|
+
* Generic deserialize function. Converts a URL string value back into a JS Primitive/Object.
|
|
120
|
+
*
|
|
121
|
+
* <TUrlValueType extends UrlValueType>: Capture the specific string literal passed in (e.g. 'number').
|
|
122
|
+
* Returns: UrlTypeMap[TUrlValueType] | null (e.g. number | null).
|
|
123
|
+
*/
|
|
124
|
+
export declare const deserializeValue: <TUrlValueType extends UrlValueType>(value: string | null, type: TUrlValueType) => UrlTypeMap[TUrlValueType] | null;
|