# About

Vue dismiss is a simple, reusable directive for executing closing logic when something outside component element is clicked or when escape key is pressed. Applicable to dropdowns, modals and other types of menus.

# Installation

Install via node package manager.

npm install vue-dismiss

# Example and api

Vue dismiss ads "v-on-dismiss" custom directive for your Vue components with following parameters:

  • callback: function to call on dismiss event
  • watch: component property directive is watching (optional). Will bind or unbind bind event listeners based on property value.

Register directive by adding it to mixins array in your component.

<template>
    <div v-on-dismiss="{watch: opened, callback: close}">
        <button type="button" v-on:click="toggle">
            Toggle dropdown
        </button>
        <div class="content" v-bind:class="{opened}">
        </div>
    </div>
</template>

<script>
import vueDismiss from 'vue-dismiss';
export default {
    mixins: [vueDismiss],
    data: () => ({
        opened: false
    }),
    methods: {
        toggle() {
            this.opened ? this.close() : this.open();
        },
        open() {
            this.opened = true;
        },
        close() {
            this.opened = false;
        }
    }
};
</script>
``