feat(sw-187): Refactor dropdown to keep more logic in main-menu.ts

This commit is contained in:
Pontus Dreij
2024-09-11 11:41:26 +02:00
parent 76c7cfa6f0
commit 2734af5f3f
9 changed files with 104 additions and 77 deletions

View File

@@ -14,7 +14,7 @@ import { languageSwitcherVariants } from "./variants"
import styles from "./languageSwitcher.module.css"
import { DropdownType } from "@/types/components/dropdown/dropdown"
import { DropdownTypeEnum } from "@/types/components/dropdown/dropdown"
import type { LanguageSwitcherProps } from "@/types/components/languageSwitcher/languageSwitcher"
export default function LanguageSwitcher({
@@ -23,18 +23,24 @@ export default function LanguageSwitcher({
}: LanguageSwitcherProps) {
const intl = useIntl()
const currentLanguage = useLang()
const { toggleDropdown, openDropdown } = useDropdownStore()
const {
toggleDropdown,
isFooterLanguageSwitcherOpen,
isHeaderLanguageSwitcherOpen,
} = useDropdownStore()
const position = type === "footer" ? "footer" : "header"
const color = type === "footer" ? "pale" : "burgundy"
const dropdownType = {
footer: DropdownType.FooterLanguage,
desktopHeader: DropdownType.HeaderLanguage,
mobileHeader: DropdownType.HeaderLanguageMobile,
footer: DropdownTypeEnum.FooterLanguageSwitcher,
desktopHeader: DropdownTypeEnum.HeaderLanguageSwitcher,
mobileHeader: DropdownTypeEnum.HeaderLanguageSwitcherMobile,
}[type]
const isLanguageSwitcherOpen = openDropdown === dropdownType
const isLanguageSwitcherOpen =
(type === "footer" && isFooterLanguageSwitcherOpen) ||
(type !== "footer" && isHeaderLanguageSwitcherOpen)
useHandleKeyUp((event: KeyboardEvent) => {
if (event.key === "Escape" && isLanguageSwitcherOpen) {