1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-24 20:36:40 +07:00
vault-frontend/src/utils/hooks.ts
2019-08-09 12:23:07 +07:00

36 lines
892 B
TypeScript

import {
useCallback, useEffect, useRef, useState
} from 'react';
export const useCloseOnEscape = (onRequestClose: () => void, ignore_inputs = false) => {
const onEscape = useCallback(
(event) => {
if (event.key !== 'Escape') return;
if (
ignore_inputs
&& (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA')
) return;
onRequestClose();
},
[ignore_inputs, onRequestClose],
);
useEffect(() => {
window.addEventListener('keyup', onEscape);
return () => {
window.removeEventListener('keyup', onEscape);
};
}, [onEscape]);
};
export const useDelayedReady = (setReady: (val: boolean) => void, delay: number = 500) => {
useEffect(() => {
const timer = setTimeout(() => setReady(true), delay);
return () => {
if (timer) clearTimeout(timer);
};
}, [delay, setReady]);
};