fix(SW-184): using store for state-handling of menus

This commit is contained in:
Erik Tiekstra
2024-08-21 08:50:22 +02:00
parent 0dcb5a796a
commit b51a4c46e8
11 changed files with 59 additions and 69 deletions

View File

@@ -1,15 +1,23 @@
import { create } from "zustand"
// TODO: When MyPagesMobileMenu is removed, also remove the
// isMyPagesMobileMenuOpen state and toggleMyPagesMobileMenu function
interface DropdownState {
isHamburgerMenuOpen: boolean
isMyPagesMobileMenuOpen: boolean
isMyPagesMenuOpen: boolean
isLanguageSwitcherOpen: boolean
toggleHamburgerMenu: () => void
toggleMyPagesMobileMenu: () => void
toggleMyPagesMenu: () => void
toggleLanguageSwitcher: () => void
}
const useDropdownStore = create<DropdownState>((set) => ({
isHamburgerMenuOpen: false,
isMyPagesMobileMenuOpen: false,
isMyPagesMenuOpen: false,
isLanguageSwitcherOpen: false,
toggleHamburgerMenu: () =>
set((state) => {
// Close the other dropdown if it's open
@@ -26,6 +34,22 @@ const useDropdownStore = create<DropdownState>((set) => ({
}
return { isMyPagesMobileMenuOpen: !state.isMyPagesMobileMenuOpen }
}),
toggleMyPagesMenu: () =>
set(({ isLanguageSwitcherOpen, isMyPagesMenuOpen }) => {
// Close the other dropdown if it's open
if (!isMyPagesMenuOpen && isLanguageSwitcherOpen) {
set({ isLanguageSwitcherOpen: false })
}
return { isMyPagesMenuOpen: !isMyPagesMenuOpen }
}),
toggleLanguageSwitcher: () =>
set(({ isLanguageSwitcherOpen, isMyPagesMenuOpen }) => {
// Close the other dropdown if it's open
if (!isLanguageSwitcherOpen && isMyPagesMenuOpen) {
set({ isMyPagesMenuOpen: false })
}
return { isLanguageSwitcherOpen: !isLanguageSwitcherOpen }
}),
}))
export default useDropdownStore