From a825c472b4d18e6ec114262096002a0930c3adea Mon Sep 17 00:00:00 2001 From: Pihkaal Date: Mon, 24 Nov 2025 11:11:51 +0100 Subject: [PATCH] feat: implement 'last' for 'up' in button navigation --- app/composables/useButtonNavigation.ts | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/app/composables/useButtonNavigation.ts b/app/composables/useButtonNavigation.ts index d14ec5d..1dc1efb 100644 --- a/app/composables/useButtonNavigation.ts +++ b/app/composables/useButtonNavigation.ts @@ -12,7 +12,7 @@ export const useButtonNavigation = >({ navigation: Record< keyof T, { - up?: keyof T; + up?: keyof T | "last"; down?: keyof T | "last"; left?: keyof T; right?: keyof T; @@ -36,8 +36,10 @@ export const useButtonNavigation = >({ onButtonClick?.(buttonName); } else { if ( - navigation[buttonName].down === "last" && - navigation[selectedButton.value]!.up === buttonName + (navigation[buttonName].down === "last" && + navigation[selectedButton.value]!.up === buttonName) || + (navigation[buttonName].up === "last" && + navigation[selectedButton.value]!.down === buttonName) ) { nextButton.value = selectedButton.value; } @@ -60,9 +62,15 @@ export const useButtonNavigation = >({ if (!currentNav.up) return; if (currentNav.up === "last") { - selectedButton.value = nextButton.value; + if (nextButton.value) { + selectedButton.value = nextButton.value; + } else { + selectedButton.value = currentNav.left ?? currentNav.right; + } } else { - nextButton.value = selectedButton.value as keyof T; + if (navigation[currentNav.up].down === "last") { + nextButton.value = selectedButton.value as keyof T; + } selectedButton.value = currentNav.up; } @@ -78,6 +86,9 @@ export const useButtonNavigation = >({ selectedButton.value = currentNav.left ?? currentNav.right; } } else { + if (navigation[currentNav.down].up === "last") { + nextButton.value = selectedButton.value as keyof T; + } selectedButton.value = currentNav.down; } break;