blob: 9a7a91e0e0b1cce0476f93a772bfec9020e1503e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import { onMount, onCleanup, Setter } from "solid-js";
export function useClickOutside(
getRef: () => HTMLElement | undefined,
setOpen: Setter<boolean>,
) {
onMount(() => {
function handler(e: MouseEvent) {
const ref = getRef();
if (ref && !ref.contains(e.target as Node)) setOpen(false);
}
document.addEventListener("mousedown", handler);
onCleanup(() => document.removeEventListener("mousedown", handler));
});
}
|