on master help sign in
bridge/src/indigo-react/lib/useOnClickOutside.js
23 lines 661 B history raw
1import { useEffect } from 'react';
3// via https:// usehooks.com/useOnClickOutside/
4export default function useOnClickOutside(ref, handler) {
5 useEffect(() => {
6 const listener = event => {
7 // Do nothing if clicking ref's element or descendent elements
8 if (!ref.current || ref.current.contains(event.target)) {
9 return;
10 }
12 handler(event);
13 };
15 document.addEventListener('mousedown', listener);
16 document.addEventListener('touchstart', listener);
18 return () => {
19 document.removeEventListener('mousedown', listener);
20 document.removeEventListener('touchstart', listener);
21 };
22 }, [ref, handler]);