fix(SW-184): using store for state-handling of menus
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user