@dnanpm/styleguide 3.1.0 → 3.2.0
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/README.md +86 -86
- package/build/cjs/assets/{bundle-8de31ca3.css → bundle-f9dcdcfa.css} +129 -129
- package/build/cjs/components/Accordion/Accordion.d.ts +2 -1
- package/build/cjs/components/Accordion/Accordion.js +4 -4
- package/build/cjs/components/AccordionItem/AccordionItem.d.ts +4 -3
- package/build/cjs/components/AccordionItem/AccordionItem.js +2 -2
- package/build/cjs/components/Box/Box.d.ts +2 -1
- package/build/cjs/components/Box/Box.js +1 -1
- package/build/cjs/components/Button/Button.d.ts +4 -3
- package/build/cjs/components/Button/ButtonArrow.d.ts +2 -1
- package/build/cjs/components/Button/ButtonArrow.js +1 -3
- package/build/cjs/components/Checkbox/Checkbox.js +1 -1
- package/build/cjs/components/Chip/Chip.d.ts +3 -2
- package/build/cjs/components/DateTimePicker/DateTimePicker.d.ts +102 -0
- package/build/cjs/components/DateTimePicker/DateTimePicker.js +282 -0
- package/build/cjs/components/Divider/Divider.d.ts +2 -1
- package/build/cjs/components/DnaLogo/DnaLogo.d.ts +2 -1
- package/build/cjs/components/Drawer/Drawer.d.ts +2 -1
- package/build/cjs/components/EmptyState/EmptyState.d.ts +2 -1
- package/build/cjs/components/Floater/Floater.d.ts +2 -1
- package/build/cjs/components/Footer/Components/FooterComponents.d.ts +2 -67
- package/build/cjs/components/Footer/Components/FooterComponents.js +17 -67
- package/build/cjs/components/Footer/Footer.d.ts +4 -13
- package/build/cjs/components/Footer/Footer.js +2 -5
- package/build/cjs/components/Footer/context/FooterContext.d.ts +5 -4
- package/build/cjs/components/Footer/context/FooterContext.js +1 -5
- package/build/cjs/components/Icon/Icon.d.ts +3 -2
- package/build/cjs/components/Icons/hlLink.d.ts +4 -0
- package/build/cjs/components/Icons/hlLink.js +19 -0
- package/build/cjs/components/Icons/index.d.ts +1 -0
- package/build/cjs/components/Icons/index.js +2 -0
- package/build/cjs/components/Input/Input.d.ts +28 -11
- package/build/cjs/components/Input/Input.js +56 -29
- package/build/cjs/components/Label/Label.d.ts +2 -1
- package/build/cjs/components/LabelText/LabelText.d.ts +2 -1
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/BusinessMenu.d.ts +6 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +70 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/DesktopMenu.d.ts +3 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +207 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/LanguageSelector.d.ts +4 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +40 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/LinkModifier.d.ts +10 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +44 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/LoginTooltip.d.ts +7 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +24 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.d.ts +193 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +120 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.d.ts +169 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +68 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.d.ts +7 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +27 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MobileMenu.d.ts +3 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +196 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/PageSearch.d.ts +6 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/PageSearch.js +24 -0
- package/build/cjs/components/MainHeaderNavigation/MainHeaderNavigation.d.ts +36 -0
- package/build/cjs/components/MainHeaderNavigation/MainHeaderNavigation.js +322 -0
- package/build/cjs/components/MainHeaderNavigation/context/MobileMenuContext.d.ts +6 -0
- package/build/cjs/components/MainHeaderNavigation/context/MobileMenuContext.js +11 -0
- package/build/cjs/components/MainHeaderNavigation/context/NavContext.d.ts +29 -0
- package/build/cjs/components/MainHeaderNavigation/context/NavContext.js +56 -0
- package/build/cjs/components/MainHeaderNavigation/globalNavStyles.d.ts +1482 -0
- package/build/cjs/components/MainHeaderNavigation/globalNavStyles.js +189 -0
- package/build/cjs/components/MainNavigation/ChildComponents/DesktopMenu.d.ts +2 -2
- package/build/cjs/components/MainNavigation/ChildComponents/DesktopMenu.js +33 -33
- package/build/cjs/components/MainNavigation/ChildComponents/HeaderNavigationElements.d.ts +2 -2
- package/build/cjs/components/MainNavigation/ChildComponents/HeaderNavigationElements.js +1 -1
- package/build/cjs/components/MainNavigation/ChildComponents/LanguageSelector.d.ts +1 -1
- package/build/cjs/components/MainNavigation/ChildComponents/LanguageSelector.js +11 -14
- package/build/cjs/components/MainNavigation/ChildComponents/LinkModifier.d.ts +1 -1
- package/build/cjs/components/MainNavigation/ChildComponents/LinkModifier.js +9 -9
- package/build/cjs/components/MainNavigation/ChildComponents/LoginTooltip.js +3 -5
- package/build/cjs/components/MainNavigation/ChildComponents/MainNavTooltipMenu.d.ts +5 -4
- package/build/cjs/components/MainNavigation/ChildComponents/MainNavTooltipMenu.js +10 -10
- package/build/cjs/components/MainNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.d.ts +4 -2
- package/build/cjs/components/MainNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +2 -2
- package/build/cjs/components/MainNavigation/ChildComponents/MinicartTooltip.js +4 -6
- package/build/cjs/components/MainNavigation/ChildComponents/MobileMenu.d.ts +1 -1
- package/build/cjs/components/MainNavigation/ChildComponents/MobileMenu.js +21 -17
- package/build/cjs/components/MainNavigation/ChildComponents/PageSearch.js +3 -5
- package/build/cjs/components/MainNavigation/ChildComponents/Ribbon.d.ts +2 -2
- package/build/cjs/components/MainNavigation/MainNavigation.d.ts +5 -5
- package/build/cjs/components/MainNavigation/MainNavigation.js +100 -74
- package/build/cjs/components/MainNavigation/context/MobileMenuContext.d.ts +3 -3
- package/build/cjs/components/MainNavigation/context/MobileMenuContext.js +1 -5
- package/build/cjs/components/MainNavigation/context/NavContext.d.ts +14 -15
- package/build/cjs/components/MainNavigation/context/NavContext.js +6 -5
- package/build/cjs/components/MainNavigation/globalNavStyles.d.ts +4 -4
- package/build/cjs/components/Modal/Modal.d.ts +2 -1
- package/build/cjs/components/Notification/Notification.d.ts +3 -2
- package/build/cjs/components/NotificationBadge/NotificationBadge.d.ts +2 -1
- package/build/cjs/components/Pill/Pill.d.ts +3 -2
- package/build/cjs/components/ProgressIndicator/ProgressIndicator.d.ts +2 -1
- package/build/cjs/components/RadioButton/RadioButton.d.ts +2 -1
- package/build/cjs/components/ReadMore/ReadMore.d.ts +4 -4
- package/build/cjs/components/Search/Search.d.ts +7 -6
- package/build/cjs/components/Search/Search.js +1 -1
- package/build/cjs/components/SecondaryNavigation/SecondaryNavigation.d.ts +19 -2
- package/build/cjs/components/SecondaryNavigation/SecondaryNavigation.js +23 -29
- package/build/cjs/components/Selectbox/Selectbox.js +2 -2
- package/build/cjs/components/Selectbox/__tests__/Selectbox.spec.d.ts +1 -0
- package/build/cjs/components/Tabs/Tab.d.ts +5 -3
- package/build/cjs/components/Tabs/Tab.js +1 -1
- package/build/cjs/components/Tabs/Tabs.d.ts +18 -19
- package/build/cjs/components/Tabs/Tabs.js +3 -3
- package/build/cjs/components/Textarea/Textarea.d.ts +6 -5
- package/build/cjs/components/Toaster/Toaster.d.ts +3 -2
- package/build/cjs/components/Tooltip/Tooltip.d.ts +2 -1
- package/build/cjs/components/Tooltip/Tooltip.js +1 -1
- package/build/cjs/components/TooltipMenu/ChildComponents/TooltipMenuExportedStyles.d.ts +2 -2
- package/build/cjs/components/TooltipMenu/TooltipMenu.d.ts +2 -1
- package/build/cjs/components/index.d.ts +3 -1
- package/build/cjs/hooks/useCloseOutsideOrElementClicked.js +3 -2
- package/build/cjs/hooks/useDebounce.d.ts +2 -0
- package/build/cjs/hooks/useDebounce.js +23 -0
- package/build/cjs/hooks/useDocHeight.d.ts +2 -1
- package/build/cjs/hooks/useDocHeight.js +5 -25
- package/build/cjs/hooks/useResizeObserver.d.ts +6 -0
- package/build/cjs/hooks/{useElementDimensions.js → useResizeObserver.js} +5 -5
- package/build/cjs/hooks/useScrollPosition.d.ts +2 -3
- package/build/cjs/hooks/useScrollPosition.js +8 -14
- package/build/cjs/index.js +6 -0
- package/build/cjs/themes/globalStyles.d.ts +3 -3
- package/build/cjs/themes/styled.d.ts +7 -7
- package/build/cjs/themes/theme.d.ts +1 -1
- package/build/cjs/themes/themeComponents/navigation.d.ts +7 -0
- package/build/cjs/themes/themeComponents/navigation.js +13 -1
- package/build/cjs/utils/common.d.ts +2 -1
- package/build/cjs/utils/common.js +1 -1
- package/build/cjs/utils/createStyled.d.ts +163 -2
- package/build/cjs/utils/createStyled.js +2 -2
- package/build/cjs/utils/styledUtils.d.ts +1 -1
- package/build/es/assets/{bundle-8de31ca3.css → bundle-f9dcdcfa.css} +129 -129
- package/build/es/components/Accordion/Accordion.d.ts +2 -1
- package/build/es/components/Accordion/Accordion.js +5 -5
- package/build/es/components/AccordionItem/AccordionItem.d.ts +4 -3
- package/build/es/components/AccordionItem/AccordionItem.js +1 -1
- package/build/es/components/Box/Box.d.ts +2 -1
- package/build/es/components/Box/Box.js +1 -1
- package/build/es/components/Button/Button.d.ts +4 -3
- package/build/es/components/Button/ButtonArrow.d.ts +2 -1
- package/build/es/components/Button/ButtonArrow.js +2 -4
- package/build/es/components/Checkbox/Checkbox.js +1 -1
- package/build/es/components/Chip/Chip.d.ts +3 -2
- package/build/es/components/DateTimePicker/DateTimePicker.d.ts +102 -0
- package/build/es/components/DateTimePicker/DateTimePicker.js +272 -0
- package/build/es/components/Divider/Divider.d.ts +2 -1
- package/build/es/components/DnaLogo/DnaLogo.d.ts +2 -1
- package/build/es/components/Drawer/Drawer.d.ts +2 -1
- package/build/es/components/EmptyState/EmptyState.d.ts +2 -1
- package/build/es/components/Floater/Floater.d.ts +2 -1
- package/build/es/components/Footer/Components/FooterComponents.d.ts +2 -67
- package/build/es/components/Footer/Components/FooterComponents.js +18 -68
- package/build/es/components/Footer/Footer.d.ts +4 -13
- package/build/es/components/Footer/Footer.js +3 -6
- package/build/es/components/Footer/context/FooterContext.d.ts +5 -4
- package/build/es/components/Footer/context/FooterContext.js +2 -2
- package/build/es/components/Icon/Icon.d.ts +3 -2
- package/build/es/components/Icons/hlLink.d.ts +4 -0
- package/build/es/components/Icons/hlLink.js +11 -0
- package/build/es/components/Icons/index.d.ts +1 -0
- package/build/es/components/Icons/index.js +1 -0
- package/build/es/components/Input/Input.d.ts +28 -11
- package/build/es/components/Input/Input.js +56 -29
- package/build/es/components/Label/Label.d.ts +2 -1
- package/build/es/components/LabelText/LabelText.d.ts +2 -1
- package/build/es/components/MainHeaderNavigation/ChildComponents/BusinessMenu.d.ts +6 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +62 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/DesktopMenu.d.ts +3 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +199 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/LanguageSelector.d.ts +4 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +32 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/LinkModifier.d.ts +10 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +35 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/LoginTooltip.d.ts +7 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +16 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.d.ts +193 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +111 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.d.ts +169 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +63 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.d.ts +7 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +19 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/MobileMenu.d.ts +3 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +188 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/PageSearch.d.ts +6 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/PageSearch.js +16 -0
- package/build/es/components/MainHeaderNavigation/MainHeaderNavigation.d.ts +36 -0
- package/build/es/components/MainHeaderNavigation/MainHeaderNavigation.js +314 -0
- package/build/es/components/MainHeaderNavigation/context/MobileMenuContext.d.ts +6 -0
- package/build/es/components/MainHeaderNavigation/context/MobileMenuContext.js +7 -0
- package/build/es/components/MainHeaderNavigation/context/NavContext.d.ts +29 -0
- package/build/es/components/MainHeaderNavigation/context/NavContext.js +52 -0
- package/build/es/components/MainHeaderNavigation/globalNavStyles.d.ts +1482 -0
- package/build/es/components/MainHeaderNavigation/globalNavStyles.js +177 -0
- package/build/es/components/MainNavigation/ChildComponents/DesktopMenu.d.ts +2 -2
- package/build/es/components/MainNavigation/ChildComponents/DesktopMenu.js +33 -33
- package/build/es/components/MainNavigation/ChildComponents/HeaderNavigationElements.d.ts +2 -2
- package/build/es/components/MainNavigation/ChildComponents/HeaderNavigationElements.js +1 -1
- package/build/es/components/MainNavigation/ChildComponents/LanguageSelector.d.ts +1 -1
- package/build/es/components/MainNavigation/ChildComponents/LanguageSelector.js +12 -15
- package/build/es/components/MainNavigation/ChildComponents/LinkModifier.d.ts +1 -1
- package/build/es/components/MainNavigation/ChildComponents/LinkModifier.js +9 -9
- package/build/es/components/MainNavigation/ChildComponents/LoginTooltip.js +4 -6
- package/build/es/components/MainNavigation/ChildComponents/MainNavTooltipMenu.d.ts +5 -4
- package/build/es/components/MainNavigation/ChildComponents/MainNavTooltipMenu.js +11 -11
- package/build/es/components/MainNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.d.ts +4 -2
- package/build/es/components/MainNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +2 -3
- package/build/es/components/MainNavigation/ChildComponents/MinicartTooltip.js +5 -7
- package/build/es/components/MainNavigation/ChildComponents/MobileMenu.d.ts +1 -1
- package/build/es/components/MainNavigation/ChildComponents/MobileMenu.js +22 -18
- package/build/es/components/MainNavigation/ChildComponents/PageSearch.js +4 -6
- package/build/es/components/MainNavigation/ChildComponents/Ribbon.d.ts +2 -2
- package/build/es/components/MainNavigation/MainNavigation.d.ts +5 -5
- package/build/es/components/MainNavigation/MainNavigation.js +101 -75
- package/build/es/components/MainNavigation/context/MobileMenuContext.d.ts +3 -3
- package/build/es/components/MainNavigation/context/MobileMenuContext.js +2 -2
- package/build/es/components/MainNavigation/context/NavContext.d.ts +14 -15
- package/build/es/components/MainNavigation/context/NavContext.js +7 -2
- package/build/es/components/MainNavigation/globalNavStyles.d.ts +4 -4
- package/build/es/components/Modal/Modal.d.ts +2 -1
- package/build/es/components/Notification/Notification.d.ts +3 -2
- package/build/es/components/NotificationBadge/NotificationBadge.d.ts +2 -1
- package/build/es/components/Pill/Pill.d.ts +3 -2
- package/build/es/components/ProgressIndicator/ProgressIndicator.d.ts +2 -1
- package/build/es/components/RadioButton/RadioButton.d.ts +2 -1
- package/build/es/components/ReadMore/ReadMore.d.ts +4 -4
- package/build/es/components/Search/Search.d.ts +7 -6
- package/build/es/components/Search/Search.js +2 -2
- package/build/es/components/SecondaryNavigation/SecondaryNavigation.d.ts +19 -2
- package/build/es/components/SecondaryNavigation/SecondaryNavigation.js +23 -29
- package/build/es/components/Selectbox/Selectbox.js +2 -2
- package/build/es/components/Selectbox/__tests__/Selectbox.spec.d.ts +1 -0
- package/build/es/components/Tabs/Tab.d.ts +5 -3
- package/build/es/components/Tabs/Tab.js +2 -2
- package/build/es/components/Tabs/Tabs.d.ts +18 -19
- package/build/es/components/Tabs/Tabs.js +4 -4
- package/build/es/components/Textarea/Textarea.d.ts +6 -5
- package/build/es/components/Toaster/Toaster.d.ts +3 -2
- package/build/es/components/Tooltip/Tooltip.d.ts +2 -1
- package/build/es/components/Tooltip/Tooltip.js +1 -1
- package/build/es/components/TooltipMenu/ChildComponents/TooltipMenuExportedStyles.d.ts +2 -2
- package/build/es/components/TooltipMenu/TooltipMenu.d.ts +2 -1
- package/build/es/components/index.d.ts +3 -1
- package/build/es/hooks/useCloseOutsideOrElementClicked.js +3 -2
- package/build/es/hooks/useDebounce.d.ts +2 -0
- package/build/es/hooks/useDebounce.js +19 -0
- package/build/es/hooks/useDocHeight.d.ts +2 -1
- package/build/es/hooks/useDocHeight.js +6 -6
- package/build/es/hooks/useResizeObserver.d.ts +6 -0
- package/build/es/hooks/{useElementDimensions.js → useResizeObserver.js} +5 -5
- package/build/es/hooks/useScrollPosition.d.ts +2 -3
- package/build/es/hooks/useScrollPosition.js +9 -11
- package/build/es/index.js +3 -0
- package/build/es/themes/globalStyles.d.ts +3 -3
- package/build/es/themes/styled.d.ts +7 -7
- package/build/es/themes/theme.d.ts +1 -1
- package/build/es/themes/themeComponents/navigation.d.ts +7 -0
- package/build/es/themes/themeComponents/navigation.js +9 -2
- package/build/es/utils/common.d.ts +2 -1
- package/build/es/utils/common.js +1 -1
- package/build/es/utils/createStyled.d.ts +163 -2
- package/build/es/utils/createStyled.js +2 -2
- package/build/es/utils/styledUtils.d.ts +1 -1
- package/package.json +22 -11
- package/build/cjs/hooks/modifyBodyClass.d.ts +0 -1
- package/build/cjs/hooks/modifyBodyClass.js +0 -20
- package/build/cjs/hooks/useDebounceFunc.d.ts +0 -1
- package/build/cjs/hooks/useDebounceFunc.js +0 -39
- package/build/cjs/hooks/useElementDimensions.d.ts +0 -5
- package/build/es/hooks/modifyBodyClass.d.ts +0 -1
- package/build/es/hooks/modifyBodyClass.js +0 -16
- package/build/es/hooks/useDebounceFunc.d.ts +0 -1
- package/build/es/hooks/useDebounceFunc.js +0 -15
- package/build/es/hooks/useElementDimensions.d.ts +0 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default, { useContext } from 'react';
|
|
1
|
+
import React__default, { useContext, useRef, useMemo } from 'react';
|
|
2
2
|
import { useSpring, animated } from 'react-spring';
|
|
3
3
|
import styled from '../../../themes/styled.js';
|
|
4
4
|
import theme from '../../../themes/theme.js';
|
|
@@ -14,7 +14,6 @@ import { MenuLink, MenuList, MenuItem, MenuLinkWithChildren } from '../globalNav
|
|
|
14
14
|
import BusinessMenu from './BusinessMenu.js';
|
|
15
15
|
import LinkModifier, { isSelected } from './LinkModifier.js';
|
|
16
16
|
|
|
17
|
-
// @ts-nocheck
|
|
18
17
|
const MobileMenuWrapper = styled.div `
|
|
19
18
|
width: ${100 * menuLevelsAmount}%;
|
|
20
19
|
`;
|
|
@@ -93,7 +92,7 @@ const MobileMenu = styled.div `
|
|
|
93
92
|
}
|
|
94
93
|
`;
|
|
95
94
|
const MenuItemBackLink = ({ currentLevel }) => {
|
|
96
|
-
const { handleNavMenuClick, lang
|
|
95
|
+
const { handleNavMenuClick, lang, menuLevel: { scrollPosition }, level1Items, level2Items, getBackLink, } = useContext(NavContext);
|
|
97
96
|
const levels = {
|
|
98
97
|
level1Items,
|
|
99
98
|
level2Items,
|
|
@@ -107,19 +106,21 @@ const MenuItemBackLink = ({ currentLevel }) => {
|
|
|
107
106
|
const tabNavigationDisabled = scrollPosition !== currentLevel - 1;
|
|
108
107
|
const backLink = getBackLink(menuElements, currentLevel - 1);
|
|
109
108
|
return (React__default.createElement(MenuItem, { key: `back-${backLink.id}`, "data-testid": `mobile-nav-menu-backlink-level-${currentLevel}` },
|
|
110
|
-
React__default.createElement(MenuLinkBackLink, { role: "
|
|
109
|
+
React__default.createElement(MenuLinkBackLink, { role: "menuitem", as: "button", onClick: mobileMenuBackClick, tabIndex: tabNavigationDisabled ? -1 : undefined },
|
|
111
110
|
React__default.createElement(Icon, { icon: hlChevronLeft, size: "1rem" }),
|
|
112
|
-
backLink.titles[
|
|
111
|
+
backLink.titles[lang])));
|
|
113
112
|
};
|
|
114
113
|
const CreateSubMenuItem = ({ menuItem, currentLevel, itemIndex }) => {
|
|
115
|
-
|
|
114
|
+
var _a;
|
|
115
|
+
const { handleNavMenuClick, menuLevel: { scrollPosition }, lang, currentUrl, } = useContext(NavContext);
|
|
116
116
|
const { mobileMenuRef } = useContext(MobileMenuContext);
|
|
117
|
-
const hasChildren = menuItem
|
|
117
|
+
const hasChildren = (_a = menuItem === null || menuItem === void 0 ? void 0 : menuItem.pages) === null || _a === void 0 ? void 0 : _a.length;
|
|
118
118
|
const indexLevel = currentLevel - 1;
|
|
119
119
|
const tabNavigationDisabled = () => scrollPosition !== indexLevel;
|
|
120
|
-
const menuUrl = menuItem.urls[
|
|
120
|
+
const menuUrl = menuItem.urls[lang] || '';
|
|
121
121
|
const mobileMenuClick = (element) => (e) => {
|
|
122
|
-
|
|
122
|
+
var _a;
|
|
123
|
+
if (typeof ((_a = mobileMenuRef === null || mobileMenuRef === void 0 ? void 0 : mobileMenuRef.current) === null || _a === void 0 ? void 0 : _a.scroll) === 'function') {
|
|
123
124
|
mobileMenuRef.current.scroll({
|
|
124
125
|
top: 0,
|
|
125
126
|
left: 0,
|
|
@@ -132,7 +133,7 @@ const CreateSubMenuItem = ({ menuItem, currentLevel, itemIndex }) => {
|
|
|
132
133
|
if (hasChildren && currentLevel < 3) {
|
|
133
134
|
return (React__default.createElement(MenuItem, { key: menuItem.id, "aria-haspopup": "true", "data-testid": `mobile-menu-level-${currentLevel}-link-${itemIndex + 1}`, isActive: isSelected(currentUrl, menuUrl) },
|
|
134
135
|
React__default.createElement(MenuLink, { as: "button", onClick: mobileMenuClick(menuItem), role: "menuitem", tabIndex: tabNavigationDisabled() ? -1 : undefined },
|
|
135
|
-
menuItem.titles[
|
|
136
|
+
menuItem.titles[lang],
|
|
136
137
|
React__default.createElement(Icon, { icon: hlChevronRight, size: "1rem" }))));
|
|
137
138
|
}
|
|
138
139
|
return (React__default.createElement(MenuItem, { key: menuItem.id, role: "menuitem", "data-testid": `mobile-menu-level-${currentLevel}-link-${itemIndex + 1}`, isActive: isSelected(currentUrl, menuUrl, true) },
|
|
@@ -148,9 +149,9 @@ const SubMenuMobile = ({ currentLevel, menuItem }) => {
|
|
|
148
149
|
navElements.map((subMenuItem, index) => (React__default.createElement(CreateSubMenuItem, { menuItem: subMenuItem, currentLevel: currentLevel, key: subMenuItem.id, itemIndex: index })))));
|
|
149
150
|
};
|
|
150
151
|
const NavigationMenuMobile = () => {
|
|
151
|
-
const { items
|
|
152
|
-
const { mainNavigation } =
|
|
153
|
-
if (!mainNavigation.pages.length) {
|
|
152
|
+
const { items, menuLevel, level1Items, level2Items } = useContext(NavContext);
|
|
153
|
+
const { mainNavigation } = items;
|
|
154
|
+
if (!(mainNavigation === null || mainNavigation === void 0 ? void 0 : mainNavigation.pages.length)) {
|
|
154
155
|
return null;
|
|
155
156
|
}
|
|
156
157
|
return (React__default.createElement(React__default.Fragment, null,
|
|
@@ -165,19 +166,22 @@ const NavigationMenuMobile = () => {
|
|
|
165
166
|
};
|
|
166
167
|
const RenderMobileMenu = () => {
|
|
167
168
|
const { menuLevel, isMobileMenuOpen } = useContext(NavContext);
|
|
168
|
-
const mobileMenuRef =
|
|
169
|
+
const mobileMenuRef = useRef(null);
|
|
169
170
|
const slidingMenuAnimation = useSpring({
|
|
170
171
|
transform: `translateX(${(menuLevel.scrollPosition / menuLevelsAmount) * -100}%)`,
|
|
171
172
|
});
|
|
172
|
-
const mobileMenuContext = {
|
|
173
|
+
const mobileMenuContext = useMemo(() => ({
|
|
173
174
|
mobileMenuRef,
|
|
174
|
-
};
|
|
175
|
-
|
|
175
|
+
}), [mobileMenuRef]);
|
|
176
|
+
if (!isMobileMenuOpen) {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
return (React__default.createElement(MobileMenuContainer, { ref: mobileMenuRef },
|
|
176
180
|
React__default.createElement(MobileMenuContext.Provider, { value: mobileMenuContext },
|
|
177
181
|
React__default.createElement(MobileMenu, null,
|
|
178
182
|
React__default.createElement(MobileMenuWrapper, null,
|
|
179
183
|
React__default.createElement(animated.div, { style: slidingMenuAnimation },
|
|
180
|
-
React__default.createElement(NavigationMenuMobile, null)))))))
|
|
184
|
+
React__default.createElement(NavigationMenuMobile, null)))))));
|
|
181
185
|
};
|
|
182
186
|
|
|
183
187
|
export { RenderMobileMenu as default };
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import React__default from 'react';
|
|
1
|
+
import React__default, { useContext } from 'react';
|
|
2
2
|
import Icon from '../../Icon/Icon.js';
|
|
3
3
|
import 'tslib';
|
|
4
4
|
import hlMagnifyingGlass from '../../Icons/hlMagnifyingGlass.js';
|
|
5
5
|
import NavContext from '../context/NavContext.js';
|
|
6
6
|
import MainNavTooltipMenu from './MainNavTooltipMenu.js';
|
|
7
|
-
import { TooltipWrapper } from './MainNavTooltipMenuExportedStyles.js';
|
|
8
7
|
|
|
9
8
|
const PageSearch = ({ searchLabel }) => {
|
|
10
9
|
const globalStateString = 'search';
|
|
11
|
-
const { navZIndex, searchComponent: SearchComponent
|
|
10
|
+
const { navZIndex, searchComponent: SearchComponent } = useContext(NavContext);
|
|
12
11
|
return (React__default.createElement(MainNavTooltipMenu, { zIndex: navZIndex + 1, tooltipRight: "0", contentComponent: SearchComponent, contentWidth: "100%", globalStateString: globalStateString, fullWidthDesktop: true, closeWhenTagClicked: ['a'] },
|
|
13
|
-
React__default.createElement(
|
|
14
|
-
|
|
15
|
-
React__default.createElement("span", null, searchLabel))));
|
|
12
|
+
React__default.createElement(Icon, { icon: hlMagnifyingGlass, size: "2rem" }),
|
|
13
|
+
React__default.createElement("span", null, searchLabel)));
|
|
16
14
|
};
|
|
17
15
|
|
|
18
16
|
export { PageSearch as default };
|
|
@@ -5,9 +5,9 @@ export interface RibbonDataProps {
|
|
|
5
5
|
ribbonIcon: string;
|
|
6
6
|
ribbonTexts: LangProps;
|
|
7
7
|
}
|
|
8
|
-
interface
|
|
8
|
+
interface Props {
|
|
9
9
|
ribbonData: RibbonDataProps[];
|
|
10
10
|
lang?: string;
|
|
11
11
|
}
|
|
12
|
-
declare const Ribbon: ({ ribbonData, lang }:
|
|
12
|
+
declare const Ribbon: ({ ribbonData, lang }: Props) => React.JSX.Element;
|
|
13
13
|
export default Ribbon;
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import type { RibbonDataProps } from './ChildComponents/Ribbon';
|
|
3
4
|
import type { GlobalNavItems } from './types/globalNavProps';
|
|
4
5
|
export interface MainNavigationProps {
|
|
5
6
|
/** Allows to pass a custom className */
|
|
6
7
|
className?: string;
|
|
7
|
-
children?: React.ReactNode;
|
|
8
8
|
items?: GlobalNavItems;
|
|
9
9
|
language?: string;
|
|
10
10
|
zIndex?: number;
|
|
11
11
|
search?: boolean;
|
|
12
12
|
searchText?: string;
|
|
13
|
-
searchComponent?:
|
|
13
|
+
searchComponent?: ReactNode | boolean;
|
|
14
14
|
minicart?: boolean;
|
|
15
15
|
minicartText?: string;
|
|
16
16
|
minicartAmount?: number;
|
|
17
|
-
minicartComponent?:
|
|
17
|
+
minicartComponent?: ReactNode | boolean;
|
|
18
18
|
showMinicart?: boolean;
|
|
19
19
|
showLoginTooltip?: boolean;
|
|
20
20
|
login?: boolean;
|
|
21
21
|
loginText?: string;
|
|
22
|
-
loginComponent?:
|
|
22
|
+
loginComponent?: ReactNode | boolean;
|
|
23
23
|
isLoggedIn?: boolean;
|
|
24
24
|
collapseSize?: number;
|
|
25
25
|
languageSelector?: boolean;
|
|
26
|
-
nextJSLinkComponent:
|
|
26
|
+
nextJSLinkComponent: ReactNode | boolean;
|
|
27
27
|
ribbon?: boolean;
|
|
28
28
|
ribbonData?: RibbonDataProps[];
|
|
29
29
|
currentUrl?: string;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { prop, indexBy } from 'ramda';
|
|
2
|
-
import React__default, { useRef, useMemo, useState } from 'react';
|
|
3
|
-
import useBodyClass from '../../hooks/modifyBodyClass.js';
|
|
2
|
+
import React__default, { useRef, useMemo, useState, useEffect } from 'react';
|
|
4
3
|
import useScrollPosition from '../../hooks/useScrollPosition.js';
|
|
5
4
|
import useWindowSize from '../../hooks/useWindowSize.js';
|
|
6
5
|
import styled, { createGlobalStyle, keyframes } from '../../themes/styled.js';
|
|
@@ -20,7 +19,7 @@ const GlobalStyle = createGlobalStyle `
|
|
|
20
19
|
`;
|
|
21
20
|
// detect common touch screen devices
|
|
22
21
|
const isIosDevice = () => {
|
|
23
|
-
const validate =
|
|
22
|
+
const validate = /iPad|iPhone|iPod|iPad Simulator|iPhone Simulator/i;
|
|
24
23
|
if (typeof navigator !== 'undefined' && typeof window !== 'undefined') {
|
|
25
24
|
return (validate.test(navigator.userAgent) &&
|
|
26
25
|
!window.MSStream);
|
|
@@ -43,7 +42,7 @@ const fadeIn = keyframes `
|
|
|
43
42
|
}
|
|
44
43
|
`;
|
|
45
44
|
const preventBodyScroll = () => {
|
|
46
|
-
const scrollY = window
|
|
45
|
+
const { scrollY } = window;
|
|
47
46
|
document.body.style.position = 'fixed';
|
|
48
47
|
document.body.style.top = `-${scrollY}px`;
|
|
49
48
|
};
|
|
@@ -54,7 +53,7 @@ const resumeBodyScroll = () => {
|
|
|
54
53
|
// if the call to close overlay is done multiple times, scroll only the first time
|
|
55
54
|
if (scrollY) {
|
|
56
55
|
setTimeout(() => {
|
|
57
|
-
window.scrollTo(0, parseInt(scrollY,
|
|
56
|
+
window.scrollTo(0, parseInt(scrollY, 10) * -1);
|
|
58
57
|
});
|
|
59
58
|
}
|
|
60
59
|
};
|
|
@@ -112,7 +111,6 @@ const initiateScrollToHeader = (componentRef) => {
|
|
|
112
111
|
};
|
|
113
112
|
/** @visibleName Main Navigation */
|
|
114
113
|
const MainNavigation = ({ items = {}, language = 'fi', zIndex = 1030, languageSelector = false, search = true, searchText = 'Haku', searchComponent = false, minicart = true, minicartText = 'Ostoskori', minicartComponent = false, minicartAmount = 0, showMinicart = false, showLoginTooltip = false, login = true, loginText = 'Kirjaudu', loginComponent, isLoggedIn = false, collapseSize = 767, nextJSLinkComponent = false, ribbon = true, ribbonData, className, currentUrl = '', notificationText = '', }) => {
|
|
115
|
-
var _a, _b;
|
|
116
114
|
const { isMobile } = useWindowSize(collapseSize);
|
|
117
115
|
const props = {
|
|
118
116
|
items,
|
|
@@ -139,14 +137,14 @@ const MainNavigation = ({ items = {}, language = 'fi', zIndex = 1030, languageSe
|
|
|
139
137
|
};
|
|
140
138
|
const navigationEl = useRef(null);
|
|
141
139
|
const key = prop('id');
|
|
142
|
-
const level1 = (_b = (_a = items.mainNavigation) === null || _a === void 0 ? void 0 : _a.pages) !== null && _b !== void 0 ? _b : [];
|
|
143
140
|
// Index & memoize menu levels
|
|
141
|
+
const level1 = useMemo(() => { var _a, _b; return (_b = (_a = items.mainNavigation) === null || _a === void 0 ? void 0 : _a.pages) !== null && _b !== void 0 ? _b : []; }, [items.mainNavigation]);
|
|
144
142
|
const level1Items = useMemo(() => indexBy(key, level1), [level1, key]);
|
|
145
143
|
const level2 = useMemo(() => level1.map(item => indexBy(key, item.pages)), [level1, key]);
|
|
146
144
|
const level2Items = Object.assign({}, ...level2);
|
|
147
145
|
// All states to for handling menus
|
|
148
146
|
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
|
149
|
-
const [menuLevel, setMenuLevel] =
|
|
147
|
+
const [menuLevel, setMenuLevel] = useState({
|
|
150
148
|
level1: null,
|
|
151
149
|
animate1: true,
|
|
152
150
|
level2: null,
|
|
@@ -157,26 +155,11 @@ const MainNavigation = ({ items = {}, language = 'fi', zIndex = 1030, languageSe
|
|
|
157
155
|
hideOnScroll: false,
|
|
158
156
|
});
|
|
159
157
|
const [lang] = useState(language);
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
case 'level1':
|
|
164
|
-
clickedItself = newValue === menuLevel.level1;
|
|
165
|
-
setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level1: !clickedItself ? newValue : null, animate1: !clickedItself, level2: null, animate2: true }));
|
|
166
|
-
break;
|
|
167
|
-
case 'level2':
|
|
168
|
-
clickedItself = newValue === menuLevel.level2;
|
|
169
|
-
setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level2: newValue !== menuLevel.level2 ? newValue : null, animate1: false, animate2: !clickedItself }));
|
|
170
|
-
break;
|
|
171
|
-
case 'level1Mobile':
|
|
172
|
-
setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level1Mobile: newValue || menuLevel.level1Mobile, scrollPosition: newValue ? 1 : 0 }));
|
|
173
|
-
break;
|
|
174
|
-
case 'level2Mobile':
|
|
175
|
-
setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level2Mobile: newValue || menuLevel.level2Mobile, scrollPosition: newValue ? 2 : 1 }));
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
158
|
+
// As scroll position cannot be always retained, close mobile menu when orientation changes
|
|
159
|
+
const initRotation = () => {
|
|
160
|
+
setIsMobileMenuOpen(false);
|
|
178
161
|
};
|
|
179
|
-
|
|
162
|
+
useEffect(() => {
|
|
180
163
|
if (iosDevice && isMobileMenuOpen) {
|
|
181
164
|
window.addEventListener('orientationchange', initRotation, false);
|
|
182
165
|
preventBodyScroll();
|
|
@@ -190,83 +173,126 @@ const MainNavigation = ({ items = {}, language = 'fi', zIndex = 1030, languageSe
|
|
|
190
173
|
resumeBodyScroll();
|
|
191
174
|
};
|
|
192
175
|
}, [isMobileMenuOpen]);
|
|
193
|
-
|
|
194
|
-
const initRotation = () => {
|
|
195
|
-
setIsMobileMenuOpen(false);
|
|
196
|
-
};
|
|
197
|
-
const handleToggleClick = () => {
|
|
198
|
-
resetMenuEvents();
|
|
199
|
-
initiateScrollToHeader(navigationEl);
|
|
200
|
-
setIsMobileMenuOpen(!isMobileMenuOpen);
|
|
201
|
-
};
|
|
202
|
-
const initialTooltipItems = {
|
|
176
|
+
const [tooltipItems, setTooltipItems] = useState(useMemo(() => ({
|
|
203
177
|
minicart: false,
|
|
204
178
|
login: false,
|
|
205
179
|
search: false,
|
|
206
|
-
};
|
|
207
|
-
const [tooltipItems, setTooltipItems] = useState(initialTooltipItems);
|
|
180
|
+
}), []));
|
|
208
181
|
const tooltipMenuActive = tooltipItems.minicart || tooltipItems.login || tooltipItems.search;
|
|
209
182
|
const freezeOverflow = isMobileMenuOpen || (tooltipMenuActive && isMobile);
|
|
210
183
|
const isPageOverlay = tooltipMenuActive || menuLevel.level1 || menuLevel.level2;
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
184
|
+
useEffect(() => {
|
|
185
|
+
const bodyClasses = ['overflow-shown', 'overflow-hidden'];
|
|
186
|
+
document.body.classList.remove(...bodyClasses);
|
|
187
|
+
document.body.classList.add(bodyClasses[Number(Boolean(freezeOverflow))]);
|
|
188
|
+
}, [freezeOverflow]);
|
|
189
|
+
const navigationContext = useMemo(() => {
|
|
190
|
+
const handleNavMenuClick = (newValue, updatedLevel) => {
|
|
191
|
+
let clickedItself = false;
|
|
192
|
+
switch (updatedLevel) {
|
|
193
|
+
case 'level1':
|
|
194
|
+
clickedItself = newValue === menuLevel.level1;
|
|
195
|
+
setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level1: !clickedItself ? newValue : null, animate1: !clickedItself, level2: null, animate2: true }));
|
|
196
|
+
break;
|
|
197
|
+
case 'level2':
|
|
198
|
+
clickedItself = newValue === menuLevel.level2;
|
|
199
|
+
setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level2: newValue !== menuLevel.level2 ? newValue : null, animate1: false, animate2: !clickedItself }));
|
|
200
|
+
break;
|
|
201
|
+
case 'level1Mobile':
|
|
202
|
+
setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level1Mobile: newValue || menuLevel.level1Mobile, scrollPosition: newValue ? 1 : 0 }));
|
|
203
|
+
break;
|
|
204
|
+
case 'level2Mobile':
|
|
205
|
+
setMenuLevel(Object.assign(Object.assign({}, menuLevel), { level2Mobile: newValue || menuLevel.level2Mobile, scrollPosition: newValue ? 2 : 1 }));
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
const resetMenuEvents = () => {
|
|
210
|
+
setMenuLevel({
|
|
211
|
+
level2: null,
|
|
212
|
+
animate2: true,
|
|
213
|
+
level1: null,
|
|
214
|
+
animate1: true,
|
|
215
|
+
level1Mobile: null,
|
|
216
|
+
level2Mobile: null,
|
|
217
|
+
scrollPosition: 0,
|
|
218
|
+
hideOnScroll: false,
|
|
219
|
+
});
|
|
220
|
+
if (isMobileMenuOpen) {
|
|
221
|
+
setIsMobileMenuOpen(false);
|
|
222
|
+
}
|
|
223
|
+
setTooltipItems({
|
|
224
|
+
minicart: false,
|
|
225
|
+
login: false,
|
|
226
|
+
search: false,
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
const handleToggleClick = () => {
|
|
230
|
+
resetMenuEvents();
|
|
231
|
+
initiateScrollToHeader(navigationEl);
|
|
232
|
+
setIsMobileMenuOpen(!isMobileMenuOpen);
|
|
233
|
+
};
|
|
234
|
+
const getBackLink = (menuElements, i) => {
|
|
235
|
+
const idValue = menuLevel[`level${i}Mobile`];
|
|
236
|
+
return menuElements[idValue];
|
|
237
|
+
};
|
|
238
|
+
// Resets menu states when menu content alters between mobile and desktop
|
|
239
|
+
const menuChanged = previousValue !== isMobile;
|
|
240
|
+
if (menuChanged) {
|
|
241
|
+
resetMenuEvents();
|
|
242
|
+
previousValue = isMobile;
|
|
225
243
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
244
|
+
return {
|
|
245
|
+
lang,
|
|
246
|
+
navZIndex: zIndex,
|
|
247
|
+
menuLevel,
|
|
248
|
+
handleNavMenuClick,
|
|
249
|
+
getBackLink,
|
|
250
|
+
isMobileMenu: isMobile,
|
|
251
|
+
items,
|
|
252
|
+
level1Items,
|
|
253
|
+
level2Items,
|
|
254
|
+
resetMenuEvents,
|
|
255
|
+
handleToggleClick,
|
|
256
|
+
isMobileMenuOpen,
|
|
257
|
+
nextJSLinkComponent,
|
|
258
|
+
loginComponent,
|
|
259
|
+
isLoggedIn,
|
|
260
|
+
collapseSize,
|
|
261
|
+
tooltipItems,
|
|
262
|
+
setTooltipItems,
|
|
263
|
+
minicartComponent,
|
|
264
|
+
showMinicart,
|
|
265
|
+
showLoginTooltip,
|
|
266
|
+
searchComponent,
|
|
267
|
+
currentUrl,
|
|
268
|
+
};
|
|
269
|
+
}, [
|
|
270
|
+
isMobile,
|
|
233
271
|
lang,
|
|
234
|
-
|
|
272
|
+
zIndex,
|
|
235
273
|
menuLevel,
|
|
236
|
-
handleNavMenuClick,
|
|
237
|
-
getBackLink,
|
|
238
|
-
isMobileMenu: isMobile,
|
|
239
274
|
items,
|
|
240
275
|
level1Items,
|
|
241
276
|
level2Items,
|
|
242
|
-
resetMenuEvents,
|
|
243
|
-
handleToggleClick,
|
|
244
277
|
isMobileMenuOpen,
|
|
245
278
|
nextJSLinkComponent,
|
|
246
279
|
loginComponent,
|
|
247
280
|
isLoggedIn,
|
|
248
281
|
collapseSize,
|
|
249
282
|
tooltipItems,
|
|
250
|
-
setTooltipItems,
|
|
251
283
|
minicartComponent,
|
|
252
284
|
showMinicart,
|
|
253
285
|
showLoginTooltip,
|
|
254
286
|
searchComponent,
|
|
255
287
|
currentUrl,
|
|
256
|
-
|
|
257
|
-
// Resets menu states when menu content alters between mobile and desktop
|
|
258
|
-
const menuChanged = previousValue !== isMobile;
|
|
259
|
-
if (menuChanged) {
|
|
260
|
-
resetMenuEvents();
|
|
261
|
-
previousValue = isMobile;
|
|
262
|
-
}
|
|
288
|
+
]);
|
|
263
289
|
useScrollPosition(({ prevPos, currPos }) => {
|
|
264
290
|
const overThreshold = checkThreshold(prevPos.y, currPos.y);
|
|
265
291
|
const isShow = currPos.y < prevPos.y;
|
|
266
292
|
if (isShow !== menuLevel.hideOnScroll && overThreshold && !menuLevel.level1) {
|
|
267
293
|
setMenuLevel(Object.assign(Object.assign({}, menuLevel), { animate1: false, animate2: false, hideOnScroll: isShow }));
|
|
268
294
|
}
|
|
269
|
-
},
|
|
295
|
+
}, undefined, false, 200);
|
|
270
296
|
return (React__default.createElement(React__default.Fragment, null,
|
|
271
297
|
isPageOverlay && React__default.createElement(PageOverlay, { "data-testid": "navigation-overlay", navZIndex: zIndex }),
|
|
272
298
|
React__default.createElement(GlobalNavigationContainer, { className: className, ref: navigationEl, collapseSize: collapseSize, menuLevel: menuLevel, "data-testid": "main-navigation", navZIndex: zIndex, tooltipMenuActive: tooltipMenuActive },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
2
|
interface MobileMenuContextProps {
|
|
3
|
-
mobileMenuRef: HTMLElement | null;
|
|
3
|
+
mobileMenuRef: RefObject<HTMLElement> | null;
|
|
4
4
|
}
|
|
5
|
-
declare const MobileMenuContext:
|
|
5
|
+
declare const MobileMenuContext: import("react").Context<MobileMenuContextProps>;
|
|
6
6
|
export default MobileMenuContext;
|
|
@@ -1,30 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { GlobalNavItems, MenuLevelItem, MenuStates } from '../types/globalNavProps';
|
|
1
|
+
import type { Dispatch, ReactNode, SetStateAction } from 'react';
|
|
2
|
+
import type { GlobalNavItems, MenuLevelItem, MenuStates, MenuTooltipItems, MobileMenuLevel } from '../types/globalNavProps';
|
|
3
3
|
export interface NavContextProps {
|
|
4
4
|
collapseSize: number;
|
|
5
5
|
currentUrl: string;
|
|
6
|
-
getBackLink: (menuElements:
|
|
7
|
-
[key: string]: MenuLevelItem;
|
|
8
|
-
}, i: number) => MenuLevelItem;
|
|
6
|
+
getBackLink: (menuElements: MenuLevelItem[], i: number) => MenuLevelItem;
|
|
9
7
|
handleNavMenuClick: (id: string | null, level: string) => void;
|
|
10
8
|
handleToggleClick: () => void;
|
|
11
9
|
isLoggedIn: boolean;
|
|
12
10
|
isMobileMenu: boolean;
|
|
13
11
|
isMobileMenuOpen: boolean;
|
|
14
12
|
items: GlobalNavItems;
|
|
13
|
+
level1Items: MobileMenuLevel;
|
|
14
|
+
level2Items: MobileMenuLevel;
|
|
15
15
|
lang: string;
|
|
16
|
-
loginComponent?:
|
|
16
|
+
loginComponent?: ReactNode | boolean | undefined;
|
|
17
17
|
menuLevel: MenuStates;
|
|
18
|
-
minicartComponent?:
|
|
18
|
+
minicartComponent?: ReactNode | boolean | undefined;
|
|
19
19
|
navZIndex: number;
|
|
20
|
-
nextJSLinkComponent:
|
|
20
|
+
nextJSLinkComponent: ReactNode | boolean;
|
|
21
21
|
resetMenuEvents: () => void;
|
|
22
|
-
searchComponent?:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
22
|
+
searchComponent?: ReactNode | boolean | undefined;
|
|
23
|
+
setTooltipItems: Dispatch<SetStateAction<MenuTooltipItems>>;
|
|
24
|
+
showLoginTooltip: boolean;
|
|
25
|
+
showMinicart: boolean;
|
|
26
|
+
tooltipItems: MenuTooltipItems;
|
|
28
27
|
}
|
|
29
|
-
declare const NavContext:
|
|
28
|
+
declare const NavContext: import("react").Context<NavContextProps>;
|
|
30
29
|
export default NavContext;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createContext } from 'react';
|
|
2
2
|
|
|
3
|
-
const NavContext =
|
|
3
|
+
const NavContext = createContext({
|
|
4
4
|
collapseSize: 767,
|
|
5
5
|
currentUrl: '',
|
|
6
6
|
getBackLink: () => ({ id: '', pages: [], titles: {}, urls: {} }),
|
|
@@ -11,6 +11,8 @@ const NavContext = React__default.createContext({
|
|
|
11
11
|
isMobileMenuOpen: false,
|
|
12
12
|
items: {},
|
|
13
13
|
lang: 'fi',
|
|
14
|
+
level1Items: { level1: { id: '', pages: [], titles: {}, urls: {} } },
|
|
15
|
+
level2Items: { level2: { id: '', pages: [], titles: {}, urls: {} } },
|
|
14
16
|
loginComponent: false,
|
|
15
17
|
menuLevel: {
|
|
16
18
|
level1: null,
|
|
@@ -27,6 +29,9 @@ const NavContext = React__default.createContext({
|
|
|
27
29
|
nextJSLinkComponent: false,
|
|
28
30
|
resetMenuEvents: () => { },
|
|
29
31
|
searchComponent: false,
|
|
32
|
+
setTooltipItems: () => { },
|
|
33
|
+
showLoginTooltip: false,
|
|
34
|
+
showMinicart: true,
|
|
30
35
|
tooltipItems: {
|
|
31
36
|
minicart: false,
|
|
32
37
|
login: false,
|
|
@@ -152,7 +152,7 @@ export declare const MenuItem: import("styled-components").StyledComponent<"li",
|
|
|
152
152
|
h1: string;
|
|
153
153
|
h2: string;
|
|
154
154
|
};
|
|
155
|
-
media: Record<string | number, (l: TemplateStringsArray, ...p:
|
|
155
|
+
media: Record<string | number, (l: TemplateStringsArray, ...p: (string | number)[]) => string>;
|
|
156
156
|
radius: {
|
|
157
157
|
default: string;
|
|
158
158
|
s: string;
|
|
@@ -317,7 +317,7 @@ export declare const MenuLink: import("styled-components").StyledComponent<"a",
|
|
|
317
317
|
h1: string;
|
|
318
318
|
h2: string;
|
|
319
319
|
};
|
|
320
|
-
media: Record<string | number, (l: TemplateStringsArray, ...p:
|
|
320
|
+
media: Record<string | number, (l: TemplateStringsArray, ...p: (string | number)[]) => string>;
|
|
321
321
|
radius: {
|
|
322
322
|
default: string;
|
|
323
323
|
s: string;
|
|
@@ -482,7 +482,7 @@ export declare const MenuLinkWithChildren: import("styled-components").StyledCom
|
|
|
482
482
|
h1: string;
|
|
483
483
|
h2: string;
|
|
484
484
|
};
|
|
485
|
-
media: Record<string | number, (l: TemplateStringsArray, ...p:
|
|
485
|
+
media: Record<string | number, (l: TemplateStringsArray, ...p: (string | number)[]) => string>;
|
|
486
486
|
radius: {
|
|
487
487
|
default: string;
|
|
488
488
|
s: string;
|
|
@@ -648,7 +648,7 @@ export declare const MenuList: import("styled-components").StyledComponent<"ul",
|
|
|
648
648
|
h1: string;
|
|
649
649
|
h2: string;
|
|
650
650
|
};
|
|
651
|
-
media: Record<string | number, (l: TemplateStringsArray, ...p:
|
|
651
|
+
media: Record<string | number, (l: TemplateStringsArray, ...p: (string | number)[]) => string>;
|
|
652
652
|
radius: {
|
|
653
653
|
default: string;
|
|
654
654
|
s: string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import type { Props as ReactModalProps } from 'react-modal';
|
|
3
4
|
interface Props {
|
|
@@ -16,7 +17,7 @@ interface Props {
|
|
|
16
17
|
/**
|
|
17
18
|
* Content of the component
|
|
18
19
|
*/
|
|
19
|
-
children?:
|
|
20
|
+
children?: ReactNode;
|
|
20
21
|
/**
|
|
21
22
|
* Allows to hide application from assistive screenreaders and other assistive technologies while the modal is open
|
|
22
23
|
*
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MouseEvent, ReactNode } from 'react';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
type NotificationType = 'info' | 'success' | 'warning' | 'error';
|
|
3
4
|
interface Props {
|
|
@@ -15,7 +16,7 @@ interface Props {
|
|
|
15
16
|
/**
|
|
16
17
|
* Content of the component
|
|
17
18
|
*/
|
|
18
|
-
children?:
|
|
19
|
+
children?: ReactNode;
|
|
19
20
|
/**
|
|
20
21
|
* Allows to show and hide close button
|
|
21
22
|
*
|
|
@@ -25,7 +26,7 @@ interface Props {
|
|
|
25
26
|
/**
|
|
26
27
|
* On close button click callback
|
|
27
28
|
*/
|
|
28
|
-
onClickCloseButton?: (e:
|
|
29
|
+
onClickCloseButton?: (e: MouseEvent<HTMLElement>) => void;
|
|
29
30
|
/**
|
|
30
31
|
* Allows to dismiss the notification programmatically
|
|
31
32
|
*
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
interface Props {
|
|
3
4
|
/**
|
|
@@ -7,7 +8,7 @@ interface Props {
|
|
|
7
8
|
/**
|
|
8
9
|
* Content of the component
|
|
9
10
|
*/
|
|
10
|
-
children?:
|
|
11
|
+
children?: ReactNode;
|
|
11
12
|
/**
|
|
12
13
|
* Allows to change CSS property `position`
|
|
13
14
|
*
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ChangeEvent, ReactNode } from 'react';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
type PillType = 'none' | 'checkbox' | 'radio';
|
|
3
4
|
type Position = 'auto' | 'left' | 'right' | 'middle';
|
|
@@ -29,7 +30,7 @@ interface Props {
|
|
|
29
30
|
/**
|
|
30
31
|
* On checkbox/radiobutton change callback
|
|
31
32
|
*/
|
|
32
|
-
onChange?: (e:
|
|
33
|
+
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
33
34
|
/**
|
|
34
35
|
* Allows to set position of component relative to other content and adds appropriate margins
|
|
35
36
|
*
|
|
@@ -62,7 +63,7 @@ interface Props {
|
|
|
62
63
|
/**
|
|
63
64
|
* Content of the component
|
|
64
65
|
*/
|
|
65
|
-
children?:
|
|
66
|
+
children?: ReactNode;
|
|
66
67
|
/**
|
|
67
68
|
* Allows to pass testid string for testing purposes
|
|
68
69
|
*/
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MouseEvent } from 'react';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
type ProgressIndicatorStatus = 'error';
|
|
3
4
|
interface Props {
|
|
@@ -14,7 +15,7 @@ interface Props {
|
|
|
14
15
|
* On Progress Indicator Item label or number click callback
|
|
15
16
|
* Use `e.currentTarget.parentElement` to get Progress Indicator Item element
|
|
16
17
|
*/
|
|
17
|
-
onStepClick?: (stepIndex: number, e:
|
|
18
|
+
onStepClick?: (stepIndex: number, e: MouseEvent<HTMLElement>) => void;
|
|
18
19
|
/**
|
|
19
20
|
* Allows to change version of component to small
|
|
20
21
|
*/
|