quasar-framework
Version:
Simultaneously build desktop/mobile SPA websites & phone/tablet apps with VueJS
24 lines (23 loc) • 553 B
JavaScript
export default {
name: 'close-overlay',
bind (el, binding, vnode) {
const handler = () => {
let vm = vnode.componentInstance
while ((vm = vm.$parent)) {
const name = vm.$options.name
if (name === 'q-popover' || name === 'q-modal') {
vm.hide()
break
}
}
}
el.__qclose = { handler }
el.addEventListener('click', handler)
},
unbind (el) {
const ctx = el.__qclose
if (!ctx) { return }
el.removeEventListener('click', ctx.handler)
delete el.__qclose
}
}