UNPKG

@engie-group/fluid-design-system-react

Version:

Fluid Design System React

26 lines (20 loc) 720 B
import { useEffect, useRef } from 'react'; export const useOutsideClick = ( callback: (event: MouseEvent | TouchEvent | FocusEvent) => void ) => { const ref = useRef<HTMLDivElement>(null); useEffect(() => { const handleClickOutside = (event: MouseEvent | TouchEvent) => { if (ref.current && !ref.current.contains(event.target as Node)) { callback(event); } }; document.addEventListener('mouseup', handleClickOutside); document.addEventListener('touchend', handleClickOutside); return () => { document.removeEventListener('mouseup', handleClickOutside); document.removeEventListener('touchend', handleClickOutside); }; }, [callback]); return ref; };