18 lines
580 B
TypeScript
18 lines
580 B
TypeScript
export default defineNuxtPlugin((nuxtApp) => {
|
|
nuxtApp.vueApp.directive('click-outside', {
|
|
mounted(el: any, binding: any) {
|
|
el.clickOutsideEvent = (event: Event) => {
|
|
if (!el.contains(event.target as Node)) {
|
|
binding.value(event);
|
|
}
|
|
};
|
|
|
|
setTimeout(() => {
|
|
document.addEventListener("click", el.clickOutsideEvent);
|
|
});
|
|
},
|
|
unmounted(el: any) {
|
|
document.removeEventListener('click', el.clickOutsideEvent);
|
|
}
|
|
});
|
|
}); |