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