@guruhotel/aura-hooks
Version:
🪝 Hooks library designed by the Guruhotel team for Aura UI
1 lines • 527 B
JavaScript
import{useEffect as t,useRef as e}from"react";const n=["mousedown","touchstart"];export function useClickOutside(r,o,c){const s=e();return t((()=>{const t=t=>{const{target:e}=null!=t?t:{};if(Array.isArray(c)){const t=(null==e?void 0:e.hasAttribute("data-ignore-outside-clicks"))||!document.body.contains(e);c.every((t=>!!t&&!t.contains(e)))&&!t&&r()}else s.current&&!s.current.contains(e)&&r()};return(o||n).forEach((e=>document.addEventListener(e,t))),()=>{(o||n).forEach((e=>document.removeEventListener(e,t)))}}),[s,r,c]),s}