summaryrefslogtreecommitdiff
path: root/shared/components/src/actions/click-outside.ts
diff options
context:
space:
mode:
Diffstat (limited to 'shared/components/src/actions/click-outside.ts')
-rw-r--r--shared/components/src/actions/click-outside.ts18
1 files changed, 18 insertions, 0 deletions
diff --git a/shared/components/src/actions/click-outside.ts b/shared/components/src/actions/click-outside.ts
new file mode 100644
index 0000000..a9475c7
--- /dev/null
+++ b/shared/components/src/actions/click-outside.ts
@@ -0,0 +1,18 @@
+export default function clickOutside(
+ node: HTMLElement,
+ handler: (event: any) => void,
+) {
+ const handleClick = (event) => {
+ if (!node.contains(event.target)) {
+ handler(event);
+ }
+ };
+
+ document.addEventListener('click', handleClick);
+
+ return {
+ destroy() {
+ document.removeEventListener('click', handleClick);
+ },
+ };
+}