Generic fix for keyboard shortcuts which fixes "SPACE" shortcut and more bugs

This commit is contained in:
Nadav Tasher 2024-12-30 21:03:18 +02:00
parent f1810e47e0
commit 01a717f143

View file

@ -14,24 +14,33 @@ window.addEventListener('keydown', (e) => {
Mousetrap.trigger(String.fromCharCode(e.which).toLowerCase()); Mousetrap.trigger(String.fromCharCode(e.which).toLowerCase());
}); });
// Store the original stopCallback in a global
const originalStopCallback = Mousetrap.stopCallback;
// Overwrite the stopCallback to allow for more keyboard shortcut customizations // Overwrite the stopCallback to allow for more keyboard shortcut customizations
Mousetrap.stopCallback = (e, element) => { Mousetrap.stopCallback = (event, element) => {
// Are shortcuts enabled for the user? // Are shortcuts enabled for the user?
if (!ReactiveCache.getCurrentUser().isKeyboardShortcuts()) if (!ReactiveCache.getCurrentUser().isKeyboardShortcuts())
return true; return true;
// Always handle escape // Always handle escape
if (e.keyCode === 27) if (event.keyCode === 27)
return false; return false;
// Make sure there are no selected characters // Make sure there are no selected characters
if (window.getSelection().type === "Range") if (window.getSelection().type === "Range")
return true; return true;
return originalStopCallback(e, element); // Decide what the current element is
const currentElement = event.target || document.activeElement;
// If the current element is editable, we don't want to trigger an event
if (currentElement.isContentEditable)
return true;
// Make sure we are not in an input element
if (currentElement instanceof HTMLInputElement || currentElement instanceof HTMLSelectElement || currentElement instanceof HTMLTextAreaElement)
return true;
// We can trigger events!
return false;
} }
function getHoveredCardId() { function getHoveredCardId() {