Skip to content

Instantly share code, notes, and snippets.

@ColtHands
Last active August 16, 2020 18:23
Show Gist options
  • Select an option

  • Save ColtHands/fc0f3702d68e26eb0c041d45b8de7e99 to your computer and use it in GitHub Desktop.

Select an option

Save ColtHands/fc0f3702d68e26eb0c041d45b8de7e99 to your computer and use it in GitHub Desktop.

Revisions

  1. Aleksey Karpenko revised this gist Aug 16, 2020. 1 changed file with 0 additions and 15 deletions.
    15 changes: 0 additions & 15 deletions HowToApply.vue
    Original file line number Diff line number Diff line change
    @@ -1,15 +0,0 @@
    <template>
    <div v-click-outside-component="close">
    <p>but the button does not have any events on it</p>
    </div>
    </template>

    <script>
    export default {
    methods: {
    close(e){
    console.log('Hello, world!')
    }
    }
    }
    </script>
  2. Aleksey Karpenko created this gist Aug 16, 2020.
    15 changes: 15 additions & 0 deletions HowToApply.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    <template>
    <div v-click-outside-component="close">
    <p>but the button does not have any events on it</p>
    </div>
    </template>

    <script>
    export default {
    methods: {
    close(e){
    console.log('Hello, world!')
    }
    }
    }
    </script>
    13 changes: 13 additions & 0 deletions vue-click-outside-component.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,13 @@
    Vue.directive('click-outside-component', {
    bind(el, binding, vnode) {
    el.clickOutsideEvent = function(event) {
    if (!(vnode.context.$el == event.target || vnode.context.$el.contains(event.target))) {
    vnode.context[binding.expression](event)
    }
    }
    document.body.addEventListener('click', el.clickOutsideEvent)
    },
    unbind(el) {
    document.body.removeEventListener('click', el.clickOutsideEvent)
    }
    })