feat: implement 'last' for 'up' in button navigation
This commit is contained in:
@@ -12,7 +12,7 @@ export const useButtonNavigation = <T extends Record<string, ButtonConfig>>({
|
||||
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 = <T extends Record<string, ButtonConfig>>({
|
||||
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 = <T extends Record<string, ButtonConfig>>({
|
||||
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 = <T extends Record<string, ButtonConfig>>({
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user