ui/hooks: add clickOutside hook

This commit is contained in:
Johannes Kirschbauer
2025-08-28 22:37:34 +02:00
parent 85fb0187ee
commit 73f2a4f56f

View File

@@ -0,0 +1,15 @@
import { onCleanup } from "solid-js";
export function useClickOutside(
el: () => HTMLElement | undefined,
handler: (e: MouseEvent) => void,
) {
const listener = (e: MouseEvent) => {
const element = el();
if (element && !element.contains(e.target as Node)) {
handler(e);
}
};
document.addEventListener("mousedown", listener);
onCleanup(() => document.removeEventListener("mousedown", listener));
}