feat(web/menu): reset indexes on next last item

This commit is contained in:
Luke
2022-08-02 11:27:48 +02:00
committed by Luke
parent 95201aba1d
commit dcce65d472

View File

@@ -71,13 +71,13 @@ const ListMenu: React.FC = () => {
switch (e.code) { switch (e.code) {
case "ArrowDown": case "ArrowDown":
setSelected((selected) => { setSelected((selected) => {
if (selected >= menu.items.length - 1) return selected; if (selected >= menu.items.length - 1) return (selected = 0);
return selected + 1; return selected + 1;
}); });
break; break;
case "ArrowUp": case "ArrowUp":
setSelected((selected) => { setSelected((selected) => {
if (selected <= 0) return selected; if (selected <= 0) return (selected = menu.items.length - 1);
return selected - 1; return selected - 1;
}); });
break; break;
@@ -88,14 +88,17 @@ const ListMenu: React.FC = () => {
[selected]: [selected]:
indexStates[selected] + 1 <= menu.items[selected].values?.length! - 1 indexStates[selected] + 1 <= menu.items[selected].values?.length! - 1
? indexStates[selected] + 1 ? indexStates[selected] + 1
: indexStates[selected], : (indexStates[selected] = 0),
}); });
break; break;
case "ArrowLeft": case "ArrowLeft":
if (!Array.isArray(menu.items[selected].values)) return; if (!Array.isArray(menu.items[selected].values)) return;
setIndexStates({ setIndexStates({
...indexStates, ...indexStates,
[selected]: indexStates[selected] - 1 >= 0 ? indexStates[selected] - 1 : indexStates[selected], [selected]:
indexStates[selected] - 1 >= 0
? indexStates[selected] - 1
: (indexStates[selected] = menu.items[selected].values?.length! - 1),
}); });
break; break;
case "Enter": case "Enter":