harb/web-app/src/composables/useClickOutside.ts

20 lines
593 B
TypeScript
Raw Normal View History

2025-09-23 14:18:04 +02:00
import {onBeforeUnmount, onMounted} from 'vue'
export default function useClickOutside(component: any, callback: any) {
if (!component) return
const listener = (event: any) => {
if (event.target !== component.value && event.composedPath().includes(component.value)) {
return
}
if (typeof callback === 'function') {
callback()
}
}
onMounted(() => { window.addEventListener('click', listener) })
onBeforeUnmount(() => {window.removeEventListener('click', listener)})
return {listener}
}