Hide visibility popover on click outside of element

This commit is contained in:
Ramon Wenger 2018-10-17 09:36:12 +02:00
parent c81c7675b6
commit 1faa75fdba
3 changed files with 24 additions and 5 deletions

View File

@ -6,6 +6,7 @@
<eye-icon class="content-block__action-icon"></eye-icon>
</a>
<visibility-popover
@hide-me="showVisibility = false"
:show="showVisibility"
:content-block="contentBlock"
class="content-block__visibility-menu"

View File

@ -1,5 +1,5 @@
<template>
<div class="visibility-menu" v-if="show">
<div class="visibility-menu" v-if="show" v-click-outside="hideVisibility">
<h3 class="visibility-menu__title">Sichtbarkeit</h3>
<div v-for="schoolClass in schoolClassVisibility" :key="schoolClass.id" class="visibility-menu__item">
<checkbox :checked="!schoolClass.hidden"
@ -58,7 +58,11 @@
}
}
});
},
hideVisibility() {
this.$emit('hide-me');
}
},
computed: {

View File

@ -40,10 +40,24 @@ Vue.use(VueAxios, axios);
Vue.use(VueVimeoPlayer);
Vue.use(VueScrollTo, {
duration: 500,
easing: 'ease-out',
offset: -50
});
duration: 500,
easing: 'ease-out',
offset: -50
});
Vue.directive('click-outside', {
bind(el, binding, vnode) {
el.clickOutsideEvent = event => {
if (!(el === event.target || el.contains(event.target))) {
vnode.context[binding.expression](event);
}
};
document.body.addEventListener('click', el.clickOutsideEvent);
},
unbind(el) {
document.body.removeEventListener('click', el.clickOutsideEvent)
}
});
const apolloProvider = new VueApollo({
defaultClient: apolloClient