1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue-runtime-helpers")):"function"==typeof define&&define.amd?define(["exports","vue-runtime-helpers"],t):t((e=e||self).VContextmenu={},e.vueRuntimeHelpers)}(this,(function(e,t){var n={inserted(e,t,n){const i=n.context.$refs[t.arg]||n.context.$refs[t.value],s="[object Array]"===Object.prototype.toString.call(i)?i[0]:i;s.addRef({el:e,vnode:n}),s.$contextmenuId=e.id||s._uid}};const i={name:"VContextmenu",provide(){return{$$contextmenu:this}},props:{eventType:{type:String,default:"contextmenu"},theme:{type:String,default:"default"},autoPlacement:{type:Boolean,default:!0},disabled:Boolean},data:()=>({visible:!1,references:[],style:{top:0,left:0}}),computed:{clickOutsideHandler(){return this.visible?this.hide:()=>{}},isClick(){return"click"===this.eventType},contextmenuCls(){return["v-contextmenu",`v-contextmenu--${this.theme}`]}},watch:{visible(e){e?(this.$emit("show",this),document.body.addEventListener("click",this.handleBodyClick)):(this.$emit("hide",this),document.body.removeEventListener("click",this.handleBodyClick))}},mounted(){document.body.appendChild(this.$el),window.$$VContextmenu?window.$$VContextmenu[this.$contextmenuId]=this:window.$$VContextmenu={[this.$contextmenuId]:this}},beforeDestroy(){document.body.removeChild(this.$el),delete window.$$VContextmenu[this.$contextmenuId],this.references.forEach(e=>{e.el.removeEventListener(this.eventType,this.handleReferenceContextmenu)}),document.body.removeEventListener("click",this.handleBodyClick)},methods:{addRef(e){this.references.push(e),e.el.addEventListener(this.eventType,this.handleReferenceContextmenu)},handleReferenceContextmenu(e){if(e.preventDefault(),this.disabled)return;const t=this.references.find(t=>t.el.contains(e.target));this.$emit("contextmenu",t?t.vnode:null);const n=e.pageX,i=e.pageY;this.show(),this.$nextTick(()=>{const e={top:i,left:n};if(this.autoPlacement){const t=this.$refs.contextmenu.clientWidth,s=this.$refs.contextmenu.clientHeight;s+i>=window.innerHeight&&(e.top-=s),t+n>=window.innerWidth&&(e.left-=t)}this.style={top:`${e.top}px`,left:`${e.left}px`}})},handleBodyClick(e){this.$el.contains(e.target)||this.isClick&&this.references.some(t=>t.el.contains(e.target))||(this.visible=!1)},show(e){Object.keys(window.$$VContextmenu).forEach(e=>{e!==this.$contextmenuId&&window.$$VContextmenu[e].hide()}),e&&(this.style={top:`${e.top}px`,left:`${e.left}px`}),this.visible=!0},hide(){this.visible=!1},hideAll(){Object.keys(window.$$VContextmenu).forEach(e=>{window.$$VContextmenu[e].hide()})}}};var s=function(){var e=this.$createElement;return(this._self._c||e)("ul",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],ref:"contextmenu",class:this.contextmenuCls,style:this.style},[this._t("default")],2)};s._withStripped=!0;const o=t.normalizeComponent({render:s,staticRenderFns:[]},void 0,i,void 0,!1,void 0,!1,void 0,void 0,void 0);const d={name:"VContextmenuItem",inject:["$$contextmenu"],props:{divider:Boolean,disabled:Boolean,autoHide:{type:Boolean,default:!0}},data:()=>({hover:!1}),computed:{classname(){return{"v-contextmenu-item":!this.divider,"v-contextmenu-item--hover":this.hover,"v-contextmenu-item--disabled":this.disabled}}},methods:{handleMouseenter(e){this.disabled||(this.hover=!0,this.$emit("mouseenter",this,e))},handleMouseleave(e){this.disabled||(this.hover=!1,this.$emit("mouseleave",this,e))},handleClick(e){this.disabled||(this.$emit("click",this,e),this.autoHide&&this.$$contextmenu.hide())}}};var u=function(){var e=this.$createElement,t=this._self._c||e;return this.divider?t("li",{staticClass:"v-contextmenu-divider"}):t("li",{class:this.classname,on:{click:this.handleClick,mouseenter:this.handleMouseenter,mouseleave:this.handleMouseleave}},[this._t("default")],2)};u._withStripped=!0;const h=t.normalizeComponent({render:u,staticRenderFns:[]},void 0,d,void 0,!1,void 0,!1,void 0,void 0,void 0);const l={name:"VContextmenuSubmenu",props:{title:String,disabled:Boolean},data:()=>({hover:!1,submenuPlacement:[]}),computed:{classname(){return{"v-contextmenu-item":!0,"v-contextmenu-submenu":!0,"v-contextmenu-item--hover":this.hover,"v-contextmenu-item--disabled":this.disabled}},submenuCls(){return["v-contextmenu",...this.submenuPlacement]}},methods:{handleMouseenter(e){if(this.disabled)return;const{target:t}=e,n=t.getBoundingClientRect();this.hover=!0,this.$emit("mouseenter",this,e),this.$nextTick(()=>{const e=this.$refs.submenu.clientWidth,t=this.$refs.submenu.clientHeight,i=[];n.right+e>=window.innerWidth?i.push("left"):i.push("right"),n.bottom+t>=window.innerHeight?i.push("bottom"):i.push("top"),this.submenuPlacement=i})},handleMouseleave(e){this.disabled||(this.hover=!1,this.$emit("mouseleave",this,e))}}};var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{class:e.classname,on:{mouseenter:e.handleMouseenter,mouseleave:e.handleMouseleave}},[n("span",{staticClass:"v-contextmenu-submenu__title"},[e._t("title",[e._v(e._s(e.title))]),e._v(" "),n("span",{staticClass:"v-contextmenu-iconfont v-contextmenu-submenu__icon"})],2),e._v(" "),n("ul",{directives:[{name:"show",rawName:"v-show",value:e.hover,expression:"hover"}],ref:"submenu",class:e.submenuCls},[e._t("default")],2)])};r._withStripped=!0;const a=t.normalizeComponent({render:r,staticRenderFns:[]},void 0,l,void 0,!1,void 0,!1,void 0,void 0,void 0);const m={name:"VContextmenuGroup",props:{maxWidth:[Number,String]},computed:{menusStyle(){if(!this.maxWidth)return null;return{"max-width":"number"==typeof this.maxWidth?`${this.maxWidth}px`:this.maxWidth,"overflow-x":"auto"}}}};var c=function(){var e=this.$createElement,t=this._self._c||e;return t("li",{staticClass:"v-contextmenu-group"},[t("ul",{staticClass:"v-contextmenu-group__menus",style:this.menusStyle},[this._t("default")],2)])};c._withStripped=!0;const v=t.normalizeComponent({render:c,staticRenderFns:[]},void 0,m,void 0,!1,void 0,!1,void 0,void 0,void 0),p=e=>{e.directive("contextmenu",n),e.component(o.name,o),e.component(h.name,h),e.component(a.name,a),e.component(v.name,v)};"undefined"!=typeof window&&window.Vue&&p(window.Vue);var x={install:p};e.Contextmenu=o,e.ContextmenuGroup=v,e.ContextmenuItem=h,e.ContextmenuSubmenu=a,e.default=x,e.directive=n,Object.defineProperty(e,"__esModule",{value:!0})}));
|