@dnanpm/ui-components 0.9.0 → 0.10.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 +13 -0
- package/dist/components/Accordion/Accordion.css +5 -1
- package/dist/components/AccordionItem/AccordionItem.cjs +4 -4
- package/dist/components/AccordionItem/AccordionItem.cjs.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.css +4 -1
- package/dist/components/AccordionItem/AccordionItem.d.ts.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.js +2 -2
- package/dist/components/AccordionItem/AccordionItem.js.map +1 -1
- package/dist/components/Avatar/Avatar.cjs +83 -0
- package/dist/components/Avatar/Avatar.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.css +188 -0
- package/dist/components/Avatar/Avatar.d.ts +3 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.js +83 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.cjs +40 -0
- package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.js +40 -0
- package/dist/components/Avatar/Avatar.module.css.js.map +1 -0
- package/dist/components/Avatar/Avatar.types.d.ts +66 -0
- package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.utils.cjs +17 -0
- package/dist/components/Avatar/Avatar.utils.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.utils.d.ts +6 -0
- package/dist/components/Avatar/Avatar.utils.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.utils.js +17 -0
- package/dist/components/Avatar/Avatar.utils.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +3 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.cjs +9 -12
- package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.css +16 -16
- package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.js +2 -5
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +5 -8
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js +5 -8
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js.map +1 -1
- package/dist/components/Button/Button.cjs +29 -3
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.css +78 -31
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +28 -2
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.module.css.cjs +19 -11
- package/dist/components/Button/Button.module.css.cjs.map +1 -1
- package/dist/components/Button/Button.module.css.js +19 -11
- package/dist/components/Button/Button.module.css.js.map +1 -1
- package/dist/components/Button/Button.types.d.ts +20 -3
- package/dist/components/Button/Button.types.d.ts.map +1 -1
- package/dist/components/Button/index.d.ts +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.cjs +19 -14
- package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.css +63 -20
- package/dist/components/ButtonCard/ButtonCard.d.ts +2 -1
- package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.js +17 -12
- package/dist/components/ButtonCard/ButtonCard.js.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs +14 -12
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.module.css.js +14 -12
- package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.types.d.ts +3 -2
- package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs +105 -0
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.css +323 -0
- package/dist/components/Checkbox/Checkbox.d.ts +3 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +105 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs +35 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.js +35 -0
- package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts +47 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/ContentCard/ContentCard.cjs +8 -7
- package/dist/components/ContentCard/ContentCard.cjs.map +1 -1
- package/dist/components/ContentCard/ContentCard.css +39 -34
- package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
- package/dist/components/ContentCard/ContentCard.js +3 -2
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.module.css.cjs +18 -18
- package/dist/components/ContentCard/ContentCard.module.css.js +18 -18
- package/dist/components/ContentCard/ContentCard.types.d.ts +2 -1
- package/dist/components/ContentCard/ContentCard.types.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.cjs +15 -7
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.css +48 -45
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.js +12 -4
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/Drawer.module.css.cjs +16 -16
- package/dist/components/Drawer/Drawer.module.css.js +16 -16
- package/dist/components/Footer/Footer.cjs +8 -9
- package/dist/components/Footer/Footer.cjs.map +1 -1
- package/dist/components/Footer/Footer.css +87 -83
- package/dist/components/Footer/Footer.d.ts.map +1 -1
- package/dist/components/Footer/Footer.js +1 -2
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/Footer/Footer.module.css.cjs +39 -39
- package/dist/components/Footer/Footer.module.css.js +39 -39
- package/dist/components/FunctionButton/FunctionButton.cjs +2 -2
- package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -1
- package/dist/components/FunctionButton/FunctionButton.css +5 -1
- package/dist/components/FunctionButton/FunctionButton.js +1 -1
- package/dist/components/FunctionButton/FunctionButton.js.map +1 -1
- package/dist/components/Hero/Hero.cjs +30 -27
- package/dist/components/Hero/Hero.cjs.map +1 -1
- package/dist/components/Hero/Hero.css +49 -44
- package/dist/components/Hero/Hero.d.ts +1 -1
- package/dist/components/Hero/Hero.d.ts.map +1 -1
- package/dist/components/Hero/Hero.js +30 -27
- package/dist/components/Hero/Hero.js.map +1 -1
- package/dist/components/Hero/Hero.module.css.cjs +18 -18
- package/dist/components/Hero/Hero.module.css.js +18 -18
- package/dist/components/Hero/Hero.types.d.ts +2 -6
- package/dist/components/Hero/Hero.types.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.cjs +3 -4
- package/dist/components/IconButton/IconButton.cjs.map +1 -1
- package/dist/components/IconButton/IconButton.css +5 -1
- package/dist/components/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.js +1 -2
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/Label/Label.css +5 -1
- package/dist/components/MainNavigation/MainNavigation.cjs +216 -162
- package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.css +206 -183
- package/dist/components/MainNavigation/MainNavigation.d.ts +1 -1
- package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.js +177 -123
- package/dist/components/MainNavigation/MainNavigation.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs +80 -78
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.js +80 -78
- package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.types.d.ts +0 -13
- package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.cjs +8 -4
- package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.js +8 -4
- package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -1
- package/dist/components/Modal/Modal.cjs +14 -6
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.css +44 -40
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +12 -4
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/Modal.module.css.cjs +18 -18
- package/dist/components/Modal/Modal.module.css.js +18 -18
- package/dist/components/Notification/Notification.cjs +3 -2
- package/dist/components/Notification/Notification.cjs.map +1 -1
- package/dist/components/Notification/Notification.css +16 -11
- package/dist/components/Notification/Notification.d.ts.map +1 -1
- package/dist/components/Notification/Notification.js +2 -1
- package/dist/components/Notification/Notification.js.map +1 -1
- package/dist/components/Notification/Notification.module.css.cjs +9 -9
- package/dist/components/Notification/Notification.module.css.js +9 -9
- package/dist/components/Pagination/Pagination.cjs +142 -0
- package/dist/components/Pagination/Pagination.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.css +256 -0
- package/dist/components/Pagination/Pagination.d.ts +3 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.js +142 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/Pagination.module.css.cjs +34 -0
- package/dist/components/Pagination/Pagination.module.css.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.module.css.js +34 -0
- package/dist/components/Pagination/Pagination.module.css.js.map +1 -0
- package/dist/components/Pagination/Pagination.types.d.ts +20 -0
- package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.utils.cjs +76 -0
- package/dist/components/Pagination/Pagination.utils.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.utils.d.ts +21 -0
- package/dist/components/Pagination/Pagination.utils.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.utils.js +76 -0
- package/dist/components/Pagination/Pagination.utils.js.map +1 -0
- package/dist/components/Pagination/index.d.ts +3 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Pictograph/Pictograph.css +5 -1
- package/dist/components/Pictograph/PictographItem.css +5 -1
- package/dist/components/Quote/Quote.css +5 -1
- package/dist/components/Spinner/Spinner.css +5 -1
- package/dist/design-tokens/dist/tokens.cjs +5 -0
- package/dist/design-tokens/dist/tokens.cjs.map +1 -0
- package/dist/design-tokens/dist/tokens.js +5 -0
- package/dist/design-tokens/dist/tokens.js.map +1 -0
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/utilities.css +6 -0
- package/dist/styles/utils/elevation.css +35 -26
- package/dist/styles/utils/focus.css +63 -68
- package/dist/styles/utils/index.cjs +33 -0
- package/dist/styles/utils/index.cjs.map +1 -0
- package/dist/styles/utils/index.d.ts +20 -0
- package/dist/styles/utils/index.d.ts.map +1 -0
- package/dist/styles/utils/index.js +33 -0
- package/dist/styles/utils/index.js.map +1 -0
- package/dist/styles/utils/overlay.css +35 -27
- package/dist/styles/utils/text-decoration.css +20 -12
- package/dist/styles.css +27 -3
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/isRenderable/index.d.ts +2 -0
- package/dist/utils/isRenderable/index.d.ts.map +1 -0
- package/dist/utils/isRenderable/isRenderable.cjs +5 -0
- package/dist/utils/isRenderable/isRenderable.cjs.map +1 -0
- package/dist/utils/isRenderable/isRenderable.d.ts +4 -0
- package/dist/utils/isRenderable/isRenderable.d.ts.map +1 -0
- package/dist/utils/isRenderable/isRenderable.js +5 -0
- package/dist/utils/isRenderable/isRenderable.js.map +1 -0
- package/package.json +12 -4
- package/dist/styles/utils/elevation.module.css.cjs +0 -16
- package/dist/styles/utils/elevation.module.css.cjs.map +0 -1
- package/dist/styles/utils/elevation.module.css.js +0 -16
- package/dist/styles/utils/elevation.module.css.js.map +0 -1
- package/dist/styles/utils/focus.module.css.cjs +0 -16
- package/dist/styles/utils/focus.module.css.cjs.map +0 -1
- package/dist/styles/utils/focus.module.css.js +0 -16
- package/dist/styles/utils/focus.module.css.js.map +0 -1
- package/dist/styles/utils/overlay.module.css.cjs +0 -13
- package/dist/styles/utils/overlay.module.css.cjs.map +0 -1
- package/dist/styles/utils/overlay.module.css.js +0 -13
- package/dist/styles/utils/overlay.module.css.js.map +0 -1
- package/dist/styles/utils/text-decoration.module.css.cjs +0 -13
- package/dist/styles/utils/text-decoration.module.css.cjs.map +0 -1
- package/dist/styles/utils/text-decoration.module.css.js +0 -13
- package/dist/styles/utils/text-decoration.module.css.js.map +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { MainNavigationProps } from './MainNavigation.types';
|
|
2
|
-
export declare const MainNavigation: ({ organizations, items, loginLabel, logoHref, languages, renderLanguageLink, searchLabel, cartLabel, cartCounter, cartCounterLabel,
|
|
2
|
+
export declare const MainNavigation: ({ organizations, items, loginLabel, logoHref, languages, renderLanguageLink, searchLabel, cartLabel, cartCounter, cartCounterLabel, cartOpen, onCartOpenChange, onSearchOpenChange, onLanguageOpenChange, onLoginOpenChange, searchDropdownContent, loginDropdownContent, cartContent, mobileMenuOpenAriaLabel, mobileMenuCloseAriaLabel, organizationStripAriaLabel, logoAriaLabel, mobilePrimaryNavigationAriaLabel, externalLinkAriaLabel, currentPathname, overflowCategoryLabel, onMobileMenuToggle, onDesktopItemToggle, renderLink, className, "aria-label": ariaLabel, ref, ...props }: MainNavigationProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=MainNavigation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainNavigation.d.ts","sourceRoot":"","sources":["../../../src/components/MainNavigation/MainNavigation.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MainNavigation.d.ts","sourceRoot":"","sources":["../../../src/components/MainNavigation/MainNavigation.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAMR,mBAAmB,EAEtB,MAAM,wBAAwB,CAAC;AAchC,eAAO,MAAM,cAAc,GAAI,gkBAkC5B,mBAAmB,4CA8zDrB,CAAC"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment as Fragment$1 } from "react/jsx-runtime";
|
|
2
|
-
import { useState,
|
|
2
|
+
import { useState, useId, useRef, useCallback, useEffect, Fragment } from "react";
|
|
3
3
|
import { Globe, Search, Cart, Close, Menu, ChevronRight, Open, ArrowRight } from "@dnanpm/icons";
|
|
4
|
-
import focusStyles from "../../styles/utils/
|
|
5
|
-
import overlayStyles from "../../styles/utils/overlay.module.css.js";
|
|
6
|
-
import elevationStyles from "../../styles/utils/elevation.module.css.js";
|
|
7
|
-
import textDecorationStyles from "../../styles/utils/text-decoration.module.css.js";
|
|
4
|
+
import { focusStyles, textDecorationStyles, elevationStyles, overlayStyles } from "../../styles/utils/index.js";
|
|
8
5
|
import styles from "./MainNavigation.module.css.js";
|
|
9
|
-
import { assignRef, isMobileViewportByEnvironment, isMobileIosDeviceByEnvironment, isDesktopViewportByEnvironment, getLinkTarget, getLinkRel, toNavigableHref, isExternalLink, getLanguageToggleAnnouncements, languageLinkAriaLabels, isItemInCurrentPath, isExternalTarget, isLinkInCurrentPage } from "./MainNavigation.utils.js";
|
|
6
|
+
import { assignRef, desktopMinWidthMediaQuery, isMobileViewportByEnvironment, isMobileIosDeviceByEnvironment, isDesktopViewportByEnvironment, getLinkTarget, getLinkRel, toNavigableHref, isExternalLink, getLanguageToggleAnnouncements, languageLinkAriaLabels, isItemInCurrentPath, isExternalTarget, isLinkInCurrentPath, isLinkInCurrentPage } from "./MainNavigation.utils.js";
|
|
10
7
|
import { cn } from "../../utils/cn/cn.js";
|
|
11
8
|
import { Button } from "../Button/Button.js";
|
|
12
9
|
import { Drawer } from "../Drawer/Drawer.js";
|
|
@@ -18,7 +15,6 @@ const defaultLogoSrc = `data:image/svg+xml,${encodeURIComponent(defaultLogoSvg)}
|
|
|
18
15
|
const mobilePanelAnimationDurationMs = 200;
|
|
19
16
|
const mobileBodyScrollLockClass = "dds-un-scrollable";
|
|
20
17
|
const defaultOverflowCategoryLabel = "Muut kategoriat";
|
|
21
|
-
const desktopMinWidthMediaQuery = "(min-width: 1024px)";
|
|
22
18
|
const defaultRenderLink = (props) => /* @__PURE__ */ jsx("a", { ...props });
|
|
23
19
|
const defaultRenderLanguageLink = (props) => /* @__PURE__ */ jsx("a", { ...props });
|
|
24
20
|
const MainNavigation = ({
|
|
@@ -32,10 +28,8 @@ const MainNavigation = ({
|
|
|
32
28
|
cartLabel = "Ostoskori",
|
|
33
29
|
cartCounter,
|
|
34
30
|
cartCounterLabel = "tuotetta ostoskorissa",
|
|
35
|
-
defaultCartOpen = false,
|
|
36
31
|
cartOpen,
|
|
37
32
|
onCartOpenChange,
|
|
38
|
-
defaultOpenDropdown,
|
|
39
33
|
onSearchOpenChange,
|
|
40
34
|
onLanguageOpenChange,
|
|
41
35
|
onLoginOpenChange,
|
|
@@ -48,8 +42,6 @@ const MainNavigation = ({
|
|
|
48
42
|
logoAriaLabel = "Siirry etusivulle",
|
|
49
43
|
mobilePrimaryNavigationAriaLabel = "Päävalikko",
|
|
50
44
|
externalLinkAriaLabel = "avautuu uuteen välilehteen",
|
|
51
|
-
defaultMobileMenuOpen = false,
|
|
52
|
-
defaultOpenItemIndex = null,
|
|
53
45
|
currentPathname,
|
|
54
46
|
overflowCategoryLabel = defaultOverflowCategoryLabel,
|
|
55
47
|
onMobileMenuToggle,
|
|
@@ -60,19 +52,21 @@ const MainNavigation = ({
|
|
|
60
52
|
ref,
|
|
61
53
|
...props
|
|
62
54
|
}) => {
|
|
63
|
-
const
|
|
55
|
+
const isCartControlled = cartOpen !== void 0;
|
|
56
|
+
const showSearch = searchDropdownContent != null && typeof searchDropdownContent !== "boolean";
|
|
57
|
+
const showLogin = loginDropdownContent != null && typeof loginDropdownContent !== "boolean";
|
|
58
|
+
const showCart = cartContent != null && typeof cartContent !== "boolean";
|
|
59
|
+
const currentLanguage = languages?.find((language) => language.current) ?? languages?.[0];
|
|
60
|
+
const alternativeLanguages = currentLanguage != null ? (languages ?? []).filter((language) => language.code !== currentLanguage.code) : [];
|
|
61
|
+
const showLanguage = currentLanguage != null && alternativeLanguages.length > 0;
|
|
62
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
|
64
63
|
const [isMobileMenuClosing, setIsMobileMenuClosing] = useState(false);
|
|
65
|
-
const [openTopLevelItemIndex, setOpenTopLevelItemIndex] = useState(
|
|
66
|
-
defaultOpenItemIndex
|
|
67
|
-
);
|
|
64
|
+
const [openTopLevelItemIndex, setOpenTopLevelItemIndex] = useState(null);
|
|
68
65
|
const [isHeaderOpen, setIsHeaderOpen] = useState(true);
|
|
69
66
|
const [mobileActiveCategoryIndex, setMobileActiveCategoryIndex] = useState(null);
|
|
70
|
-
const [internalCartOpen, setInternalCartOpen] = useState(
|
|
71
|
-
const isCartControlled = cartOpen !== void 0;
|
|
67
|
+
const [internalCartOpen, setInternalCartOpen] = useState(false);
|
|
72
68
|
const isCartOpen = cartOpen ?? internalCartOpen;
|
|
73
|
-
const
|
|
74
|
-
const [openUtilityDropdown, setOpenUtilityDropdown] = useState(hasInitialNavigationSurface ? null : defaultOpenDropdown ?? null);
|
|
75
|
-
const openUtilityDropdownRef = useRef(openUtilityDropdown);
|
|
69
|
+
const [openUtilityDropdown, setOpenUtilityDropdown] = useState(null);
|
|
76
70
|
const searchDropdownId = useId();
|
|
77
71
|
const languageDropdownId = useId();
|
|
78
72
|
const loginDropdownId = useId();
|
|
@@ -107,10 +101,14 @@ const MainNavigation = ({
|
|
|
107
101
|
const focusReturnToMobileCategoryTimeoutRef = useRef(
|
|
108
102
|
null
|
|
109
103
|
);
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
104
|
+
const notifyRef = useRef({
|
|
105
|
+
mobileMenu: false,
|
|
106
|
+
desktopItem: null,
|
|
107
|
+
search: false,
|
|
108
|
+
language: false,
|
|
109
|
+
login: false,
|
|
110
|
+
cart: false
|
|
111
|
+
});
|
|
114
112
|
const setHeaderRef = useCallback(
|
|
115
113
|
(node) => {
|
|
116
114
|
headerElementRef.current = node;
|
|
@@ -253,12 +251,7 @@ const MainNavigation = ({
|
|
|
253
251
|
return;
|
|
254
252
|
}
|
|
255
253
|
const desktopQuery = window.matchMedia(desktopMinWidthMediaQuery);
|
|
256
|
-
const
|
|
257
|
-
const viewportMode = isDesktopViewport2 ? "desktop" : "mobile";
|
|
258
|
-
if (lastAppliedViewportModeRef.current === viewportMode) {
|
|
259
|
-
return;
|
|
260
|
-
}
|
|
261
|
-
lastAppliedViewportModeRef.current = viewportMode;
|
|
254
|
+
const handleViewportModeChange = ({ matches: isDesktopViewport2 }) => {
|
|
262
255
|
if (isDesktopViewport2) {
|
|
263
256
|
clearTimeout(mobileSecondPanelCloseTimeoutRef.current ?? void 0);
|
|
264
257
|
mobileSecondPanelCloseTimeoutRef.current = null;
|
|
@@ -266,9 +259,8 @@ const MainNavigation = ({
|
|
|
266
259
|
mobileThirdPanelCloseTimeoutRef.current = null;
|
|
267
260
|
clearTimeout(resetMobileThirdPanelScrollTimeoutRef.current ?? void 0);
|
|
268
261
|
resetMobileThirdPanelScrollTimeoutRef.current = null;
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
if (wasMobileMenuOpen) {
|
|
262
|
+
if (notifyRef.current.mobileMenu) {
|
|
263
|
+
notifyRef.current.mobileMenu = false;
|
|
272
264
|
onMobileMenuToggle?.(false);
|
|
273
265
|
}
|
|
274
266
|
setMobileMenuOpen(false);
|
|
@@ -277,21 +269,18 @@ const MainNavigation = ({
|
|
|
277
269
|
setIsMobileThirdPanelClosing(false);
|
|
278
270
|
return;
|
|
279
271
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (hadOpenDesktopItem) {
|
|
272
|
+
if (notifyRef.current.desktopItem !== null) {
|
|
273
|
+
notifyRef.current.desktopItem = null;
|
|
283
274
|
onDesktopItemToggle?.(null);
|
|
284
275
|
}
|
|
285
276
|
setOpenTopLevelItemIndex(null);
|
|
286
277
|
};
|
|
287
|
-
|
|
288
|
-
desktopQuery.addEventListener("change", applyViewportModeChange);
|
|
278
|
+
desktopQuery.addEventListener("change", handleViewportModeChange);
|
|
289
279
|
return () => {
|
|
290
|
-
desktopQuery.removeEventListener("change",
|
|
280
|
+
desktopQuery.removeEventListener("change", handleViewportModeChange);
|
|
291
281
|
};
|
|
292
282
|
}, [onDesktopItemToggle, onMobileMenuToggle]);
|
|
293
283
|
const resetMobilePanelState = useCallback(() => {
|
|
294
|
-
openTopLevelItemIndexRef.current = null;
|
|
295
284
|
setOpenTopLevelItemIndex(null);
|
|
296
285
|
setMobileActiveCategoryIndex(null);
|
|
297
286
|
setIsMobileSecondPanelClosing(false);
|
|
@@ -308,14 +297,12 @@ const MainNavigation = ({
|
|
|
308
297
|
return;
|
|
309
298
|
}
|
|
310
299
|
const shouldAnimateMobileClose = mobileMenuOpen;
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
mobileMenuOpenRef.current = false;
|
|
314
|
-
openTopLevelItemIndexRef.current = null;
|
|
315
|
-
if (wasMobileMenuOpen) {
|
|
300
|
+
if (mobileMenuOpen) {
|
|
301
|
+
notifyRef.current.mobileMenu = false;
|
|
316
302
|
onMobileMenuToggle?.(false);
|
|
317
303
|
}
|
|
318
|
-
if (
|
|
304
|
+
if (openTopLevelItemIndex !== null) {
|
|
305
|
+
notifyRef.current.desktopItem = null;
|
|
319
306
|
onDesktopItemToggle?.(null);
|
|
320
307
|
}
|
|
321
308
|
clearTimeout(mobileMenuCloseResetTimeoutRef.current ?? void 0);
|
|
@@ -345,7 +332,7 @@ const MainNavigation = ({
|
|
|
345
332
|
return;
|
|
346
333
|
}
|
|
347
334
|
closeUtilityDropdown();
|
|
348
|
-
|
|
335
|
+
notifyRef.current.mobileMenu = true;
|
|
349
336
|
setMobileMenuOpen(true);
|
|
350
337
|
setIsMobileMenuClosing(false);
|
|
351
338
|
onMobileMenuToggle?.(true);
|
|
@@ -353,7 +340,7 @@ const MainNavigation = ({
|
|
|
353
340
|
const toggleTopLevelItem = (index) => {
|
|
354
341
|
closeUtilityDropdown();
|
|
355
342
|
const next = openTopLevelItemIndex === index ? null : index;
|
|
356
|
-
|
|
343
|
+
notifyRef.current.desktopItem = next;
|
|
357
344
|
setOpenTopLevelItemIndex(next);
|
|
358
345
|
setMobileActiveCategoryIndex(null);
|
|
359
346
|
setIsMobileSecondPanelClosing(false);
|
|
@@ -483,9 +470,9 @@ const MainNavigation = ({
|
|
|
483
470
|
[onLanguageOpenChange, onLoginOpenChange, onSearchOpenChange]
|
|
484
471
|
);
|
|
485
472
|
const closeUtilityDropdown = useCallback(() => {
|
|
486
|
-
const openDropdown =
|
|
473
|
+
const openDropdown = notifyRef.current.search ? "search" : notifyRef.current.language ? "language" : notifyRef.current.login ? "login" : null;
|
|
487
474
|
if (openDropdown != null) {
|
|
488
|
-
|
|
475
|
+
notifyRef.current[openDropdown] = false;
|
|
489
476
|
notifyUtilityOpenChange(openDropdown, false);
|
|
490
477
|
}
|
|
491
478
|
setOpenUtilityDropdown(null);
|
|
@@ -497,17 +484,19 @@ const MainNavigation = ({
|
|
|
497
484
|
mobileThirdPanelCloseTimeoutRef.current = null;
|
|
498
485
|
clearTimeout(focusMobileSecondPanelTimeoutRef.current ?? void 0);
|
|
499
486
|
focusMobileSecondPanelTimeoutRef.current = null;
|
|
487
|
+
focusMobilePanelBackOnOpenRef.current = false;
|
|
500
488
|
clearTimeout(focusMobileThirdPanelTimeoutRef.current ?? void 0);
|
|
501
489
|
focusMobileThirdPanelTimeoutRef.current = null;
|
|
490
|
+
focusMobileThirdPanelBackOnOpenRef.current = false;
|
|
502
491
|
clearTimeout(resetMobileThirdPanelScrollTimeoutRef.current ?? void 0);
|
|
503
492
|
resetMobileThirdPanelScrollTimeoutRef.current = null;
|
|
504
493
|
clearTimeout(focusReturnToMobileTopLevelItemTimeoutRef.current ?? void 0);
|
|
505
494
|
focusReturnToMobileTopLevelItemTimeoutRef.current = null;
|
|
506
495
|
clearTimeout(focusReturnToMobileCategoryTimeoutRef.current ?? void 0);
|
|
507
496
|
focusReturnToMobileCategoryTimeoutRef.current = null;
|
|
508
|
-
const openDropdown =
|
|
497
|
+
const openDropdown = notifyRef.current.search ? "search" : notifyRef.current.language ? "language" : notifyRef.current.login ? "login" : null;
|
|
509
498
|
if (openDropdown != null) {
|
|
510
|
-
|
|
499
|
+
notifyRef.current[openDropdown] = false;
|
|
511
500
|
notifyUtilityOpenChange(openDropdown, false);
|
|
512
501
|
}
|
|
513
502
|
setOpenUtilityDropdown(null);
|
|
@@ -562,13 +551,7 @@ const MainNavigation = ({
|
|
|
562
551
|
const openPanel = openItem?.panel;
|
|
563
552
|
const isMobilePanelClosingOut = isMobileMenuClosing && !mobileMenuOpen;
|
|
564
553
|
const isOverlayClosingOut = isMobilePanelClosingOut && openPanel == null;
|
|
565
|
-
const showSearch = searchDropdownContent != null && typeof searchDropdownContent !== "boolean";
|
|
566
|
-
const showLogin = loginDropdownContent != null && typeof loginDropdownContent !== "boolean";
|
|
567
|
-
const showCart = cartContent != null && typeof cartContent !== "boolean";
|
|
568
554
|
const cartAccessibleLabel = cartCounter != null ? `${cartLabel} ${cartCounter} ${cartCounterLabel}` : cartLabel;
|
|
569
|
-
const currentLanguage = languages?.find((language) => language.current) ?? languages?.[0];
|
|
570
|
-
const alternativeLanguages = currentLanguage != null ? (languages ?? []).filter((language) => language.code !== currentLanguage.code) : [];
|
|
571
|
-
const showLanguage = currentLanguage != null && alternativeLanguages.length > 0;
|
|
572
555
|
const languageAnnouncements = currentLanguage != null ? getLanguageToggleAnnouncements(
|
|
573
556
|
(languages ?? []).map((language) => language.code),
|
|
574
557
|
currentLanguage.code
|
|
@@ -577,25 +560,27 @@ const MainNavigation = ({
|
|
|
577
560
|
const isSearchOpen = activeUtilityDropdown === "search";
|
|
578
561
|
const isLanguageOpen = activeUtilityDropdown === "language";
|
|
579
562
|
const isLoginOpen = activeUtilityDropdown === "login";
|
|
563
|
+
const effectiveCartOpen = isCartOpen && showCart;
|
|
580
564
|
const showPageOverlay = mobileMenuOpen || openPanel != null || isMobilePanelClosingOut || activeUtilityDropdown != null;
|
|
581
565
|
const toggleUtilityDropdown = (kind) => {
|
|
582
566
|
const previous = openUtilityDropdown;
|
|
583
567
|
const next = previous === kind ? null : kind;
|
|
584
568
|
if (previous != null && previous !== next) {
|
|
569
|
+
notifyRef.current[previous] = false;
|
|
585
570
|
notifyUtilityOpenChange(previous, false);
|
|
586
571
|
}
|
|
587
572
|
if (next != null) {
|
|
573
|
+
notifyRef.current[next] = true;
|
|
588
574
|
notifyUtilityOpenChange(next, true);
|
|
589
575
|
closeMobileMenu();
|
|
590
576
|
if (isCartOpen) {
|
|
591
577
|
if (!isCartControlled) {
|
|
592
|
-
|
|
578
|
+
notifyRef.current.cart = false;
|
|
593
579
|
setInternalCartOpen(false);
|
|
594
580
|
}
|
|
595
581
|
onCartOpenChange?.(false);
|
|
596
582
|
}
|
|
597
583
|
}
|
|
598
|
-
openUtilityDropdownRef.current = next;
|
|
599
584
|
setOpenUtilityDropdown(next);
|
|
600
585
|
};
|
|
601
586
|
const handleLanguageClick = () => {
|
|
@@ -613,35 +598,85 @@ const MainNavigation = ({
|
|
|
613
598
|
closeMenus();
|
|
614
599
|
}
|
|
615
600
|
if (!isCartControlled) {
|
|
616
|
-
|
|
601
|
+
notifyRef.current.cart = next && showCart;
|
|
617
602
|
setInternalCartOpen(next);
|
|
618
603
|
}
|
|
619
604
|
onCartOpenChange?.(next);
|
|
620
605
|
};
|
|
621
606
|
const handleCartOpenChange = (open) => {
|
|
622
607
|
if (!isCartControlled) {
|
|
623
|
-
|
|
608
|
+
notifyRef.current.cart = open && showCart;
|
|
624
609
|
setInternalCartOpen(open);
|
|
625
610
|
}
|
|
626
611
|
onCartOpenChange?.(open);
|
|
627
612
|
};
|
|
628
|
-
|
|
629
|
-
if (
|
|
630
|
-
|
|
613
|
+
if (effectiveCartOpen) {
|
|
614
|
+
if (openUtilityDropdown !== null) {
|
|
615
|
+
setOpenUtilityDropdown(null);
|
|
616
|
+
}
|
|
617
|
+
if (mobileMenuOpen) {
|
|
618
|
+
setMobileMenuOpen(false);
|
|
619
|
+
}
|
|
620
|
+
if (isMobileMenuClosing) {
|
|
621
|
+
setIsMobileMenuClosing(false);
|
|
622
|
+
}
|
|
623
|
+
if (openTopLevelItemIndex !== null || mobileActiveCategoryIndex !== null || isMobileSecondPanelClosing || isMobileThirdPanelClosing) {
|
|
624
|
+
resetMobilePanelState();
|
|
631
625
|
}
|
|
632
|
-
}
|
|
626
|
+
} else if (openUtilityDropdown !== null && activeUtilityDropdown === null) {
|
|
627
|
+
setOpenUtilityDropdown(null);
|
|
628
|
+
}
|
|
629
|
+
if (!isCartControlled && internalCartOpen && !showCart) {
|
|
630
|
+
setInternalCartOpen(false);
|
|
631
|
+
}
|
|
633
632
|
useEffect(() => {
|
|
634
|
-
|
|
635
|
-
|
|
633
|
+
const lastNotified = notifyRef.current;
|
|
634
|
+
if (mobileMenuOpen !== lastNotified.mobileMenu) {
|
|
635
|
+
lastNotified.mobileMenu = mobileMenuOpen;
|
|
636
|
+
onMobileMenuToggle?.(mobileMenuOpen);
|
|
637
|
+
}
|
|
638
|
+
if (openTopLevelItemIndex !== lastNotified.desktopItem) {
|
|
639
|
+
lastNotified.desktopItem = openTopLevelItemIndex;
|
|
640
|
+
onDesktopItemToggle?.(openTopLevelItemIndex);
|
|
636
641
|
}
|
|
637
|
-
|
|
642
|
+
["search", "language", "login"].forEach((kind) => {
|
|
643
|
+
const open = activeUtilityDropdown === kind;
|
|
644
|
+
if (open !== lastNotified[kind]) {
|
|
645
|
+
lastNotified[kind] = open;
|
|
646
|
+
notifyUtilityOpenChange(kind, open);
|
|
647
|
+
}
|
|
648
|
+
});
|
|
649
|
+
if (!isCartControlled) {
|
|
650
|
+
const open = internalCartOpen && showCart;
|
|
651
|
+
if (open !== lastNotified.cart) {
|
|
652
|
+
lastNotified.cart = open;
|
|
653
|
+
onCartOpenChange?.(open);
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
});
|
|
638
657
|
useEffect(() => {
|
|
639
|
-
if (!
|
|
640
|
-
|
|
641
|
-
setInternalCartOpen(false);
|
|
642
|
-
onCartOpenChange?.(false);
|
|
658
|
+
if (!effectiveCartOpen) {
|
|
659
|
+
return;
|
|
643
660
|
}
|
|
644
|
-
|
|
661
|
+
clearTimeout(mobileSecondPanelCloseTimeoutRef.current ?? void 0);
|
|
662
|
+
mobileSecondPanelCloseTimeoutRef.current = null;
|
|
663
|
+
clearTimeout(mobileThirdPanelCloseTimeoutRef.current ?? void 0);
|
|
664
|
+
mobileThirdPanelCloseTimeoutRef.current = null;
|
|
665
|
+
clearTimeout(mobileMenuCloseResetTimeoutRef.current ?? void 0);
|
|
666
|
+
mobileMenuCloseResetTimeoutRef.current = null;
|
|
667
|
+
clearTimeout(focusMobileSecondPanelTimeoutRef.current ?? void 0);
|
|
668
|
+
focusMobileSecondPanelTimeoutRef.current = null;
|
|
669
|
+
focusMobilePanelBackOnOpenRef.current = false;
|
|
670
|
+
clearTimeout(focusMobileThirdPanelTimeoutRef.current ?? void 0);
|
|
671
|
+
focusMobileThirdPanelTimeoutRef.current = null;
|
|
672
|
+
focusMobileThirdPanelBackOnOpenRef.current = false;
|
|
673
|
+
clearTimeout(resetMobileThirdPanelScrollTimeoutRef.current ?? void 0);
|
|
674
|
+
resetMobileThirdPanelScrollTimeoutRef.current = null;
|
|
675
|
+
clearTimeout(focusReturnToMobileTopLevelItemTimeoutRef.current ?? void 0);
|
|
676
|
+
focusReturnToMobileTopLevelItemTimeoutRef.current = null;
|
|
677
|
+
clearTimeout(focusReturnToMobileCategoryTimeoutRef.current ?? void 0);
|
|
678
|
+
focusReturnToMobileCategoryTimeoutRef.current = null;
|
|
679
|
+
}, [effectiveCartOpen]);
|
|
645
680
|
useEffect(() => {
|
|
646
681
|
if (!showPageOverlay) {
|
|
647
682
|
return;
|
|
@@ -749,7 +784,7 @@ const MainNavigation = ({
|
|
|
749
784
|
closeTimeoutRef: mobileSecondPanelCloseTimeoutRef,
|
|
750
785
|
onClosed: () => {
|
|
751
786
|
const closedTopLevelItemIndex = openTopLevelItemIndex;
|
|
752
|
-
|
|
787
|
+
notifyRef.current.desktopItem = null;
|
|
753
788
|
setOpenTopLevelItemIndex(null);
|
|
754
789
|
setMobileActiveCategoryIndex(null);
|
|
755
790
|
onDesktopItemToggle?.(null);
|
|
@@ -823,39 +858,49 @@ const MainNavigation = ({
|
|
|
823
858
|
{
|
|
824
859
|
className: styles["main-navigation__mobile-level-2-category-list"],
|
|
825
860
|
"aria-hidden": shouldHideLevelTwoFromAssistiveTech || void 0,
|
|
826
|
-
children: mobilePanelColumns.map((column, index) =>
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
861
|
+
children: mobilePanelColumns.map((column, index) => {
|
|
862
|
+
const isInCurrentPath = column.links.some(
|
|
863
|
+
(link) => isLinkInCurrentPath(link, currentPathname)
|
|
864
|
+
);
|
|
865
|
+
return /* @__PURE__ */ jsx(
|
|
866
|
+
"li",
|
|
867
|
+
{
|
|
868
|
+
className: styles["main-navigation__mobile-level-2-category-item"],
|
|
869
|
+
children: /* @__PURE__ */ jsxs(
|
|
870
|
+
"button",
|
|
871
|
+
{
|
|
872
|
+
ref: (node) => {
|
|
873
|
+
mobileLevelTwoCategoryButtonRefs.current[index] = node;
|
|
874
|
+
},
|
|
875
|
+
type: "button",
|
|
876
|
+
className: cn(
|
|
877
|
+
styles["main-navigation__mobile-level-2-category-button"],
|
|
878
|
+
isInCurrentPath && styles["main-navigation__mobile-level-2-category-button--current"],
|
|
879
|
+
focusStyles.focusableInset
|
|
880
|
+
),
|
|
881
|
+
"aria-current": isInCurrentPath ? "true" : void 0,
|
|
882
|
+
onClick: () => openMobileCategoryPanel(index),
|
|
883
|
+
onKeyDown: (event) => {
|
|
884
|
+
if (event.key !== "Enter" || isDesktopViewport()) {
|
|
885
|
+
return;
|
|
886
|
+
}
|
|
887
|
+
event.preventDefault();
|
|
888
|
+
focusMobileThirdPanelBackOnOpenRef.current = true;
|
|
889
|
+
openMobileCategoryPanel(index);
|
|
890
|
+
},
|
|
891
|
+
children: [
|
|
892
|
+
/* @__PURE__ */ jsx("span", { children: getColumnHeading(
|
|
893
|
+
column.heading,
|
|
894
|
+
column.overflow
|
|
895
|
+
) }),
|
|
896
|
+
/* @__PURE__ */ jsx(ChevronRight, {})
|
|
897
|
+
]
|
|
898
|
+
}
|
|
899
|
+
)
|
|
900
|
+
},
|
|
901
|
+
`mobile-category-${column.heading}-${index}`
|
|
902
|
+
);
|
|
903
|
+
})
|
|
859
904
|
}
|
|
860
905
|
),
|
|
861
906
|
/* @__PURE__ */ jsx(
|
|
@@ -910,21 +955,29 @@ const MainNavigation = ({
|
|
|
910
955
|
]
|
|
911
956
|
}
|
|
912
957
|
),
|
|
913
|
-
/* @__PURE__ */ jsx("ul", { className: styles["main-navigation__mobile-level-3-list"], children: selectedColumn.links.map((link, index) =>
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
958
|
+
/* @__PURE__ */ jsx("ul", { className: styles["main-navigation__mobile-level-3-list"], children: selectedColumn.links.map((link, index) => {
|
|
959
|
+
const isInCurrentPage = isLinkInCurrentPage(
|
|
960
|
+
link,
|
|
961
|
+
currentPathname
|
|
962
|
+
);
|
|
963
|
+
return /* @__PURE__ */ jsx(
|
|
964
|
+
"li",
|
|
965
|
+
{
|
|
966
|
+
className: styles["main-navigation__mobile-level-3-item"],
|
|
967
|
+
children: renderNavigationLink({
|
|
968
|
+
link,
|
|
969
|
+
className: cn(
|
|
970
|
+
styles["main-navigation__mobile-level-3-link"],
|
|
971
|
+
isInCurrentPage && styles["main-navigation__mobile-level-3-link--current"],
|
|
972
|
+
focusStyles.focusableInset
|
|
973
|
+
),
|
|
974
|
+
ariaCurrent: isInCurrentPage ? "page" : void 0,
|
|
975
|
+
children: link.label
|
|
976
|
+
})
|
|
977
|
+
},
|
|
978
|
+
`${selectedColumn.heading}-${index}`
|
|
979
|
+
);
|
|
980
|
+
}) })
|
|
928
981
|
] })
|
|
929
982
|
}
|
|
930
983
|
)
|
|
@@ -1051,6 +1104,7 @@ const MainNavigation = ({
|
|
|
1051
1104
|
isCurrentPathItem && styles["main-navigation__item-toggle--current"],
|
|
1052
1105
|
isOpen && styles["main-navigation__item-toggle--open"]
|
|
1053
1106
|
),
|
|
1107
|
+
"aria-current": isCurrentPathItem ? "true" : void 0,
|
|
1054
1108
|
"aria-expanded": isOpen,
|
|
1055
1109
|
onClick: () => toggleTopLevelItem(index),
|
|
1056
1110
|
onKeyDown: (event) => {
|