react-use/src/useClickAway.ts
streamich a03143a46f feat: 🎸 implement useClickAway, remove useOutsideClick
This re-implements outside click hook functionality from scratch,
removes dependency on use-onoutsideclick package.

BREAKING CHANGE: 🧨 useOutsideClick is now useClickAway
2019-03-25 13:52:52 +01:00

18 lines
455 B
TypeScript

import {RefObject, useEffect} from 'react';
import {on, off} from './util';
const useClickAway = (ref: RefObject<HTMLElement | null>, onClickAway: () => void) => {
useEffect(() => {
const handler = (event) => {
const {current: el} = ref;
el && !el.contains(event.target) && onClickAway();
};
on(document, 'click', handler);
return () => {
off(document, 'click', handler);
};
});
};
export default useClickAway;