umami/src/components/hooks/useEscapeKey.ts

23 lines
544 B
TypeScript
Raw Normal View History

2024-02-03 07:20:13 +01:00
'use client';
2023-11-14 06:36:52 +01:00
import { useEffect, useCallback, KeyboardEvent } from 'react';
export function useEscapeKey(handler: (event: KeyboardEvent) => void) {
const escFunction = useCallback((event: KeyboardEvent) => {
if (event.key === 'Escape') {
handler(event);
}
}, []);
useEffect(() => {
document.addEventListener('keydown', escFunction as any, false);
return () => {
document.removeEventListener('keydown', escFunction as any, false);
};
}, [escFunction]);
return null;
}
export default useEscapeKey;