Files
OctoLauncher/src/renderer/utils/usePreventDefaultEvents.ts
T
2026-05-08 00:00:00 +00:00

33 lines
1017 B
TypeScript

import { useEffect } from 'react';
const allowedElements = ['INPUT', 'TEXTAREA'];
const usePreventDefaultEvents = () => {
useEffect(() => {
const disableKeyboardEvents = (e: KeyboardEvent) => {
if (allowedElements.includes((e.target as HTMLElement).tagName)) return;
e.preventDefault();
};
const disableFocus = (e: FocusEvent) => {
if (allowedElements.includes((e.target as HTMLElement).tagName)) return;
if (document.activeElement instanceof HTMLElement) {
document.activeElement.blur();
}
e.preventDefault();
};
window.addEventListener('keydown', disableKeyboardEvents, true);
window.addEventListener('keyup', disableKeyboardEvents, true);
window.addEventListener('focusin', disableFocus, true);
return () => {
window.removeEventListener('keydown', disableKeyboardEvents, true);
window.removeEventListener('keyup', disableKeyboardEvents, true);
window.removeEventListener('focusin', disableFocus, true);
};
}, []);
};
export default usePreventDefaultEvents;