From 6016699ec6988ff8280e8b6b277a4ae892eb5c2b Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Thu, 7 Dec 2023 10:46:10 +0700 Subject: [PATCH] feat: click outside directives --- Services/client/src/lib/directives.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Services/client/src/lib/directives.ts diff --git a/Services/client/src/lib/directives.ts b/Services/client/src/lib/directives.ts new file mode 100644 index 0000000..b0f9483 --- /dev/null +++ b/Services/client/src/lib/directives.ts @@ -0,0 +1,15 @@ +import type { ObjectDirective } from 'vue' + +export const clickOutside = { + beforeMount(element, binding) { + element.clickOutsideEvent = (e: MouseEvent) => { + if (!(element === e.target || element.contains(e.target))) { + binding.value(e) + } + } + document.addEventListener('click', element.clickOutsideEvent) + }, + unmounted(element) { + document.removeEventListener('click', element.clickOutsideEvent) + }, +} satisfies ObjectDirective