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<
|
navigation: Record<
|
||||||
keyof T,
|
keyof T,
|
||||||
{
|
{
|
||||||
up?: keyof T;
|
up?: keyof T | "last";
|
||||||
down?: keyof T | "last";
|
down?: keyof T | "last";
|
||||||
left?: keyof T;
|
left?: keyof T;
|
||||||
right?: keyof T;
|
right?: keyof T;
|
||||||
@@ -36,8 +36,10 @@ export const useButtonNavigation = <T extends Record<string, ButtonConfig>>({
|
|||||||
onButtonClick?.(buttonName);
|
onButtonClick?.(buttonName);
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
navigation[buttonName].down === "last" &&
|
(navigation[buttonName].down === "last" &&
|
||||||
navigation[selectedButton.value]!.up === buttonName
|
navigation[selectedButton.value]!.up === buttonName) ||
|
||||||
|
(navigation[buttonName].up === "last" &&
|
||||||
|
navigation[selectedButton.value]!.down === buttonName)
|
||||||
) {
|
) {
|
||||||
nextButton.value = selectedButton.value;
|
nextButton.value = selectedButton.value;
|
||||||
}
|
}
|
||||||
@@ -60,9 +62,15 @@ export const useButtonNavigation = <T extends Record<string, ButtonConfig>>({
|
|||||||
if (!currentNav.up) return;
|
if (!currentNav.up) return;
|
||||||
|
|
||||||
if (currentNav.up === "last") {
|
if (currentNav.up === "last") {
|
||||||
selectedButton.value = nextButton.value;
|
if (nextButton.value) {
|
||||||
|
selectedButton.value = nextButton.value;
|
||||||
|
} else {
|
||||||
|
selectedButton.value = currentNav.left ?? currentNav.right;
|
||||||
|
}
|
||||||
} else {
|
} 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;
|
selectedButton.value = currentNav.up;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,6 +86,9 @@ export const useButtonNavigation = <T extends Record<string, ButtonConfig>>({
|
|||||||
selectedButton.value = currentNav.left ?? currentNav.right;
|
selectedButton.value = currentNav.left ?? currentNav.right;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (navigation[currentNav.down].up === "last") {
|
||||||
|
nextButton.value = selectedButton.value as keyof T;
|
||||||
|
}
|
||||||
selectedButton.value = currentNav.down;
|
selectedButton.value = currentNav.down;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user