All files / src/utils clickOutside.js

0% Statements 0/11
0% Branches 0/4
0% Functions 0/5
0% Lines 0/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52                                                                                                       
/**
 * @description 外部点击自定义指令
 * @author SoldierAb
 * @since 19-01-11
 * @example 
 * 
 *  <template>
 *      <div v-click-outside="func"></div>
 *  </template>
 * 
 *  <script>
 *  import clickOutside from '../utils/clickOutside';
 * 
 *  //全局注册 
 *  Vue.directive('clickOutside',clickOutside);  
 *    
 *   or ---
 * 
 *  //局部注册
 * 
 *  export default{
 *    directives:{clickOutside},
 *  }
 *    
 * </script>
 *   
 */
 
 
const func=(el, binding, vnode)=>{
    const documentHandler =  (e) => {
        if (el.contains(e.target)) return false;     
        if (binding.expression) binding.value(e);     
    }
    el.__vueClickOutside__ = documentHandler;
    document.addEventListener('click', documentHandler);
}
 
export default {
    bind (el, binding, vnode) {
        // return func(el, binding, vnode);
    },
    update (el, binding, vnode) {
        return func(el, binding, vnode);
    },
    unbind (el, binding) {
        document.removeEventListener('click', el.__vueClickOutside__);
        delete el.__vueClickOutside__;
    }
};