Make keyboard shortcuts consistent (#20326)

* Make keyboard shortcuts consistent

* Cleanup

* Refactor prevent default to not require separate input

* Fix

* Implement escape for reviews

* Implement escape for explore

* Send content ref to get page changes for free
This commit is contained in:
Nicolas Mowen
2025-10-02 07:21:37 -06:00
committed by GitHub
parent 85ace6a6be
commit 2030809a6d
18 changed files with 231 additions and 122 deletions
+3
View File
@@ -70,7 +70,10 @@ export default function ExportCard({
(editName.update?.length ?? 0) > 0
) {
submitRename();
return true;
}
return false;
},
);
+1
View File
@@ -109,6 +109,7 @@ export default function ReviewCard({
useKeyboardListener(["Shift"], (_, modifiers) => {
bypassDialogRef.current = modifiers.shift;
return false;
});
const handleDelete = useCallback(() => {
@@ -75,6 +75,7 @@ export default function ReviewActionGroup({
useKeyboardListener(["Shift"], (_, modifiers) => {
setBypassDialog(modifiers.shift);
return false;
});
const handleDelete = useCallback(() => {
@@ -62,6 +62,7 @@ export default function SearchActionGroup({
useKeyboardListener(["Shift"], (_, modifiers) => {
setBypassDialog(modifiers.shift);
return false;
});
const handleDelete = useCallback(() => {
+11 -9
View File
@@ -83,7 +83,7 @@ export default function PtzControlPanel({
],
(key, modifiers) => {
if (modifiers.repeat || !key) {
return;
return true;
}
if (["1", "2", "3", "4", "5", "6", "7", "8", "9"].includes(key)) {
@@ -95,34 +95,36 @@ export default function PtzControlPanel({
) {
sendPtz(`preset_${ptz.presets[presetNumber - 1]}`);
}
return;
return true;
}
if (!modifiers.down) {
sendPtz("STOP");
return;
return true;
}
switch (key) {
case "ArrowLeft":
sendPtz("MOVE_LEFT");
break;
return true;
case "ArrowRight":
sendPtz("MOVE_RIGHT");
break;
return true;
case "ArrowUp":
sendPtz("MOVE_UP");
break;
return true;
case "ArrowDown":
sendPtz("MOVE_DOWN");
break;
return true;
case "+":
sendPtz(modifiers.shift ? "FOCUS_IN" : "ZOOM_IN");
break;
return true;
case "-":
sendPtz(modifiers.shift ? "FOCUS_OUT" : "ZOOM_OUT");
break;
return true;
}
return false;
},
);
@@ -175,6 +175,8 @@ export default function ReviewDetailDialog({
if (key == "Esc" && modifiers.down && !modifiers.repeat) {
setIsOpen(false);
}
return true;
});
const Overlay = isDesktop ? Sheet : MobilePage;
@@ -60,7 +60,7 @@ export function GenericVideoPlayer({
["ArrowDown", "ArrowLeft", "ArrowRight", "ArrowUp", " ", "f", "m"],
(key, modifiers) => {
if (!modifiers.down || modifiers.repeat) {
return;
return true;
}
switch (key) {
@@ -92,6 +92,8 @@ export function GenericVideoPlayer({
}
break;
}
return true;
},
);
+3 -1
View File
@@ -144,7 +144,7 @@ export default function VideoControls({
const onKeyboardShortcut = useCallback(
(key: string | null, modifiers: KeyModifiers) => {
if (!modifiers.down) {
return;
return true;
}
switch (key) {
@@ -174,6 +174,8 @@ export default function VideoControls({
onPlayPause(!isPlaying);
break;
}
return true;
},
// only update when preview only changes
// eslint-disable-next-line react-hooks/exhaustive-deps