Skip to content

Instantly share code, notes, and snippets.

@hawkeye64
Created March 6, 2019 20:42
Show Gist options
  • Save hawkeye64/c538a2bcfd6e7ecab3677219beb3c151 to your computer and use it in GitHub Desktop.
Save hawkeye64/c538a2bcfd6e7ecab3677219beb3c151 to your computer and use it in GitHub Desktop.
Vue directive (untested)
Vue.directive('click-outside', {
bind: function (el, binding, vnode) {
el.clickOutsideEvent = function (event) {
// here I check that click was outside the el and his childrens
if (!(el == event.target || el.contains(event.target))) {
// and if it did, call method provided in attribute value
vnode.context[binding.expression](event);
}
};
document.body.addEventListener('click', el.clickOutsideEvent)
},
unbind: function (el) {
document.body.removeEventListener('click', el.clickOutsideEvent)
},
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment