mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
22 lines
555 B
TypeScript
22 lines
555 B
TypeScript
![]() |
import { useCallback, useEffect } from 'react';
|
||
|
|
||
|
const KEY_NAME_ESC = 'Escape';
|
||
|
const KEY_EVENT_TYPE = 'keyup';
|
||
|
|
||
|
function useEscapeKey(handleClose: () => void) {
|
||
|
const handleEscKey = useCallback((event: KeyboardEvent) => {
|
||
|
if (event.key === KEY_NAME_ESC) {
|
||
|
handleClose();
|
||
|
}
|
||
|
}, [handleClose]);
|
||
|
|
||
|
useEffect(() => {
|
||
|
document.addEventListener(KEY_EVENT_TYPE, handleEscKey, false);
|
||
|
return () => {
|
||
|
document.removeEventListener(KEY_EVENT_TYPE, handleEscKey, false);
|
||
|
};
|
||
|
}, [handleEscKey]);
|
||
|
}
|
||
|
|
||
|
export default useEscapeKey;
|