use-on-outside-click
Version:
A lightweight and flexible React hook to detect clicks outside one or multiple elements.
2 lines (1 loc) • 616 B
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react");function m(n,c,{skip:u=!1}={}){const s=r.useRef(c),t=r.useRef(n);s.current=c,t.current=n;const i=e=>e?typeof e=="string"?document.querySelector(e):"current"in e?e.current:e:null;r.useEffect(()=>{if(u)return;const e=l=>{const o=l.target;if(!o)return;const f=(Array.isArray(t.current)?t.current.map(i):[i(t.current)]).filter(Boolean),a=f.some(d=>d.contains(o));f.length&&!a&&s.current()};return document.addEventListener("click",e),()=>{document.removeEventListener("click",e)}},[u])}exports.useOnOutsideClick=m;