Hide visibility popover on click outside of element
This commit is contained in:
parent
c81c7675b6
commit
1faa75fdba
|
|
@ -6,6 +6,7 @@
|
||||||
<eye-icon class="content-block__action-icon"></eye-icon>
|
<eye-icon class="content-block__action-icon"></eye-icon>
|
||||||
</a>
|
</a>
|
||||||
<visibility-popover
|
<visibility-popover
|
||||||
|
@hide-me="showVisibility = false"
|
||||||
:show="showVisibility"
|
:show="showVisibility"
|
||||||
:content-block="contentBlock"
|
:content-block="contentBlock"
|
||||||
class="content-block__visibility-menu"
|
class="content-block__visibility-menu"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<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>
|
<h3 class="visibility-menu__title">Sichtbarkeit</h3>
|
||||||
<div v-for="schoolClass in schoolClassVisibility" :key="schoolClass.id" class="visibility-menu__item">
|
<div v-for="schoolClass in schoolClassVisibility" :key="schoolClass.id" class="visibility-menu__item">
|
||||||
<checkbox :checked="!schoolClass.hidden"
|
<checkbox :checked="!schoolClass.hidden"
|
||||||
|
|
@ -58,7 +58,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
hideVisibility() {
|
||||||
|
this.$emit('hide-me');
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
|
|
|
||||||
|
|
@ -40,10 +40,24 @@ Vue.use(VueAxios, axios);
|
||||||
Vue.use(VueVimeoPlayer);
|
Vue.use(VueVimeoPlayer);
|
||||||
|
|
||||||
Vue.use(VueScrollTo, {
|
Vue.use(VueScrollTo, {
|
||||||
duration: 500,
|
duration: 500,
|
||||||
easing: 'ease-out',
|
easing: 'ease-out',
|
||||||
offset: -50
|
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({
|
const apolloProvider = new VueApollo({
|
||||||
defaultClient: apolloClient
|
defaultClient: apolloClient
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue