ghost-keychain/packages/extension-ui/src/hooks/useOutsideClick.ts
2021-01-03 11:33:53 +01:00

21 lines
631 B
TypeScript

// Copyright 2019-2021 @polkadot/extension-ui authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { RefObject, useCallback, useEffect } from 'react';
export default function useOutsideClick (ref: RefObject<HTMLDivElement>, callback: () => void): void {
const handleClick = useCallback((e: MouseEvent): void => {
if (ref.current && !ref.current.contains(e.target as HTMLInputElement)) {
callback();
}
}, [callback, ref]);
useEffect(() => {
document.addEventListener('click', handleClick);
return (): void => {
document.removeEventListener('click', handleClick);
};
});
}