From 10f7d16805a090d376973223b1972c4b9f3bdb16 Mon Sep 17 00:00:00 2001 From: Pihkaal Date: Sat, 31 Jan 2026 00:05:47 +0100 Subject: [PATCH] feat(settings): don't navigate to submenu of non opened menu --- app/components/Settings/BottomScreen/Menus/Menus.vue | 7 +++++++ app/composables/useButtonNavigation.ts | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/app/components/Settings/BottomScreen/Menus/Menus.vue b/app/components/Settings/BottomScreen/Menus/Menus.vue index 3ad94c9..bf5fa5a 100644 --- a/app/components/Settings/BottomScreen/Menus/Menus.vue +++ b/app/components/Settings/BottomScreen/Menus/Menus.vue @@ -134,6 +134,13 @@ const { select, selected, selectorPosition } = useButtonNavigation({ left: "user", }, }, + canClickButton: (buttonName) => { + if (isSubMenu(buttonName)) { + const parent = getParentMenu(buttonName); + return settingsStore.currentMenu === parent && settingsStore.menuExpanded; + } + return true; + }, disabled: computed(() => settingsStore.currentSubMenu !== null), selectorAnimation: { duration: 0.11, diff --git a/app/composables/useButtonNavigation.ts b/app/composables/useButtonNavigation.ts index 9ac0b39..e9d8969 100644 --- a/app/composables/useButtonNavigation.ts +++ b/app/composables/useButtonNavigation.ts @@ -3,6 +3,7 @@ import gsap from "gsap"; export const useButtonNavigation = >({ buttons, initialButton, + canClickButton, onButtonClick, navigation, disabled, @@ -10,6 +11,7 @@ export const useButtonNavigation = >({ }: { buttons: T; initialButton: keyof T; + canClickButton?: (buttonName: keyof T) => boolean; onButtonClick?: (buttonName: keyof T) => void; navigation: Record< keyof T, @@ -188,6 +190,8 @@ export const useButtonNavigation = >({ ][]) { const [sx, sy, sw, sh] = buttonRect; if (x >= sx && x <= sx + sw && y >= sy && y <= sy + sh) { + if (canClickButton && !canClickButton(buttonName)) continue; + if (selectedButton.value === buttonName) { onButtonClick?.(buttonName); } else {