MCPcopy Create free account
hub / github.com/triggerdotdev/jsonhero-web / useClickOutside

Function useClickOutside

app/hooks/useClickOutside.tsx:3–29  ·  view source on GitHub ↗
(
  elementRef: RefObject<HTMLElement>,
  callback: (event: MouseEvent) => void
)

Source from the content-addressed store, hash-verified

1import { RefObject, useEffect, useRef } from "react";
2
3export function useClickOutside(
4 elementRef: RefObject<HTMLElement>,
5 callback: (event: MouseEvent) => void
6) {
7 const callbackRef = useRef<(event: MouseEvent) => void>();
8 callbackRef.current = callback;
9
10 useEffect(() => {
11 const handleClickOutside = (e: MouseEvent) => {
12 if (!elementRef?.current || !callbackRef.current) {
13 return;
14 }
15
16 if (e.target instanceof Element) {
17 if (!elementRef.current.contains(e.target)) {
18 callbackRef.current(e);
19 }
20 }
21 };
22
23 document.addEventListener("click", handleClickOutside, true);
24
25 return () => {
26 document.removeEventListener("click", handleClickOutside, true);
27 };
28 }, [callbackRef, elementRef]);
29}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected