obsidian-book-tracker/src/ui/directives/clickOutside.ts

19 lines
379 B
TypeScript

export function clickOutside(node: Node, cb: () => void) {
function handleClick(event: MouseEvent) {
if (
node &&
!node.contains(event.target as Node) &&
!event.defaultPrevented
) {
cb();
}
}
document.addEventListener("click", handleClick, true);
return {
update() {},
destroy() {
document.removeEventListener("click", handleClick, true);
},
};
}