refactor: add ignoreWhenModalOpen parameter to useKeyDown

This commit is contained in:
2026-10-07 14:01:13 +02:00
parent f1ee6922b1
commit 822a66a20f
3 changed files with 40 additions and 28 deletions

View File

@@ -151,12 +151,15 @@ onClick((x, y) => {
} }
}); });
useKeyDown(({ key }) => { useKeyDown(
({ key }) => {
if (isAnimating.value) return; if (isAnimating.value) return;
if (key === "NDS_X") { if (key === "NDS_X") {
handleVisitAll(); handleVisitAll();
} }
}); },
{ ignoreWhenModalOpen: true },
);
onRender((ctx) => { onRender((ctx) => {
// slash divider // slash divider

View File

@@ -600,8 +600,9 @@ const slide = (rowDir: number, colDir: number) => {
} }
}; };
useKeyDown(({ key }) => { useKeyDown(
if (isAnimating.value || confirmationModal.isOpen) return; ({ key }) => {
if (isAnimating.value) return;
switch (key) { switch (key) {
case "NDS_UP": case "NDS_UP":
case "NDS_SWIPE_UP": case "NDS_SWIPE_UP":
@@ -620,7 +621,9 @@ useKeyDown(({ key }) => {
slide(0, 1); slide(0, 1);
break; break;
} }
}); },
{ ignoreWhenModalOpen: true },
);
</script> </script>
<template> <template>

View File

@@ -6,11 +6,17 @@ export type KeyDownCallback = (params: {
repeated: boolean; repeated: boolean;
}) => void; }) => void;
export const useKeyDown = (callback: KeyDownCallback) => { export const useKeyDown = (
callback: KeyDownCallback,
// the confirmation modal's own buttons rely on useKeyDown, so this is opt-in
options: { ignoreWhenModalOpen?: boolean } = {},
) => {
const app = useAppStore(); const app = useAppStore();
const confirmationModal = useConfirmationModal();
const handleKeyDown = (event: KeyboardEvent) => { const handleKeyDown = (event: KeyboardEvent) => {
if (app.lagModalOpen) return; if (app.lagModalOpen) return;
if (options.ignoreWhenModalOpen && confirmationModal.isOpen) return;
const ndsButton = mapCodeToNDS(event.code); const ndsButton = mapCodeToNDS(event.code);
if ( if (