feat(SW-187): Fixed LanguageSwitcher for footer

This commit is contained in:
Pontus Dreij
2024-09-05 14:30:33 +02:00
parent 05ee4d1717
commit 6d55ee7595
13 changed files with 136 additions and 54 deletions

View File

@@ -6,18 +6,20 @@ interface DropdownState {
isHamburgerMenuOpen: boolean
isMyPagesMobileMenuOpen: boolean
isMyPagesMenuOpen: boolean
isLanguageSwitcherOpen: boolean
isHeaderLanguageSwitcherOpen: boolean
isFooterLanguageSwitcherOpen: boolean
toggleHamburgerMenu: () => void
toggleMyPagesMobileMenu: () => void
toggleMyPagesMenu: () => void
toggleLanguageSwitcher: () => void
toggleLanguageSwitcher: (location: "header" | "footer") => void
}
const useDropdownStore = create<DropdownState>((set) => ({
isHamburgerMenuOpen: false,
isMyPagesMobileMenuOpen: false,
isMyPagesMenuOpen: false,
isLanguageSwitcherOpen: false,
isHeaderLanguageSwitcherOpen: false,
isFooterLanguageSwitcherOpen: false,
toggleHamburgerMenu: () =>
set(
({ isHamburgerMenuOpen, isMyPagesMenuOpen, isMyPagesMobileMenuOpen }) => {
@@ -39,7 +41,8 @@ const useDropdownStore = create<DropdownState>((set) => ({
isMyPagesMenuOpen,
isMyPagesMobileMenuOpen,
isHamburgerMenuOpen,
isLanguageSwitcherOpen,
isHeaderLanguageSwitcherOpen,
isFooterLanguageSwitcherOpen,
}) => {
// Close the other dropdowns if they're open
if (!isMyPagesMobileMenuOpen) {
@@ -49,8 +52,11 @@ const useDropdownStore = create<DropdownState>((set) => ({
if (isHamburgerMenuOpen) {
set({ isHamburgerMenuOpen: false })
}
if (isLanguageSwitcherOpen) {
set({ isLanguageSwitcherOpen: false })
if (isHeaderLanguageSwitcherOpen) {
set({ isHeaderLanguageSwitcherOpen: false })
}
if (isFooterLanguageSwitcherOpen) {
set({ isFooterLanguageSwitcherOpen: false })
}
}
return { isMyPagesMobileMenuOpen: !isMyPagesMobileMenuOpen }
@@ -60,7 +66,8 @@ const useDropdownStore = create<DropdownState>((set) => ({
set(
({
isHamburgerMenuOpen,
isLanguageSwitcherOpen,
isHeaderLanguageSwitcherOpen,
isFooterLanguageSwitcherOpen,
isMyPagesMenuOpen,
isMyPagesMobileMenuOpen,
}) => {
@@ -72,32 +79,40 @@ const useDropdownStore = create<DropdownState>((set) => ({
if (isMyPagesMobileMenuOpen) {
set({ isMyPagesMobileMenuOpen: false })
}
if (isLanguageSwitcherOpen) {
set({ isLanguageSwitcherOpen: false })
if (isHeaderLanguageSwitcherOpen) {
set({ isHeaderLanguageSwitcherOpen: false })
}
if (isFooterLanguageSwitcherOpen) {
set({ isFooterLanguageSwitcherOpen: false })
}
}
return { isMyPagesMenuOpen: !isMyPagesMenuOpen }
}
),
toggleLanguageSwitcher: () =>
set(
({
isLanguageSwitcherOpen,
isMyPagesMenuOpen,
isMyPagesMobileMenuOpen,
}) => {
// Close the other dropdowns if they're open
if (!isLanguageSwitcherOpen) {
if (isMyPagesMenuOpen) {
set({ isMyPagesMenuOpen: false })
}
if (isMyPagesMobileMenuOpen) {
set({ isMyPagesMobileMenuOpen: false })
}
toggleLanguageSwitcher: (location: "header" | "footer") =>
set((state) => {
const isCurrentlyOpen =
location === "header"
? state.isHeaderLanguageSwitcherOpen
: state.isFooterLanguageSwitcherOpen
if (!isCurrentlyOpen) {
return {
isHeaderLanguageSwitcherOpen: location === "header",
isFooterLanguageSwitcherOpen: location === "footer",
isMyPagesMenuOpen: false,
isMyPagesMobileMenuOpen: false,
isHamburgerMenuOpen: false,
}
return { isLanguageSwitcherOpen: !isLanguageSwitcherOpen }
}
),
return {
isHeaderLanguageSwitcherOpen:
location === "header" ? false : state.isHeaderLanguageSwitcherOpen,
isFooterLanguageSwitcherOpen:
location === "footer" ? false : state.isFooterLanguageSwitcherOpen,
}
}),
}))
export default useDropdownStore