@dreamkit/solid
Version:
DreamKit tools for Solid.
23 lines (22 loc) • 661 B
JavaScript
import { createComponent, onCleanup, onMount } from "solid-js";
import { Dynamic } from "solid-js/web";
export function ClickAwayListener(props) {
let element;
const onClick = (event) => {
if (element && !element.contains(event.target))
props.onClick?.();
};
onMount(() => {
document.addEventListener("mousedown", onClick);
});
onCleanup(() => {
document.removeEventListener("mousedown", onClick);
});
return createComponent(Dynamic, {
component: "div",
style: { width: "100%", height: "100%" },
get children() {
return props.children;
},
});
}