mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-08 17:37:24 +08:00
2 lines
8.5 KiB
JavaScript
2 lines
8.5 KiB
JavaScript
var k=function(e,t){var u,n=t.arg;if(!n){console.error("\u53C2\u6570\u6709\u8BEF");return}var s=t.value,c=Vue.isRef(n)?n.value:(u=t.instance)===null||u===void 0?void 0:u.$refs[n];if(!c){console.error("\u6CA1\u6709\u627E\u5230 ".concat(n," \u5BF9\u5E94\u7684\u5B9E\u4F8B"));return}if(typeof c.addReference!="function"){console.error("".concat(n," \u5BF9\u5E94\u7684\u5B9E\u4F8B\u4E0D\u662F VContextmenu"));return}e.$contextmenuKey=n,c.addReference(e,s)},A=function(e,t){var u,n=e.$contextmenuKey;if(!!n){var s=(u=t.instance)===null||u===void 0?void 0:u.$refs[n];s==null||s.removeReference(e)}},O=function(e,t){A(e,t),k(e,t)},D={mounted:k,updated:O,beforeUnmount:A},o={contextmenu:"v-contextmenu",contextmenuIcon:"v-contextmenu-icon",contextmenuInner:"v-contextmenu-inner",contextmenuDivider:"v-contextmenu-divider",contextmenuItem:"v-contextmenu-item",contextmenuItemHover:"v-contextmenu-item--hover",contextmenuItemDisabled:"v-contextmenu-item--disabled",contextmenuGroup:"v-contextmenu-group",contextmenuGroupTitle:"v-contextmenu-group__title",contextmenuGroupMenus:"v-contextmenu-group__menus",contextmenuSubmenu:"v-contextmenu-submenu",contextmenuSubmenuTitle:"v-contextmenu-submenu__title",contextmenuSubmenuMenus:"v-contextmenu-submenu__menus",contextmenuSubmenuMenusTop:"v-contextmenu-submenu__menus--top",contextmenuSubmenuMenusRight:"v-contextmenu-submenu__menus--right",contextmenuSubmenuMenusBottom:"v-contextmenu-submenu__menus--bottom",contextmenuSubmenuMenusLeft:"v-contextmenu-submenu__menus--left",contextmenuSubmenuArrow:"v-contextmenu-submenu__arrow"};function P(r){return typeof r=="function"||Object.prototype.toString.call(r)==="[object Object]"&&!Vue.isVNode(r)}var T={trigger:["contextmenu"]},L=Vue.defineComponent({name:"VContextmenu",props:{modelValue:{type:Boolean,default:!1},autoAjustPlacement:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},teleport:{type:[String,Object],default:function(){return"body"}}},emits:["show","hide","update:modelValue"],setup:function(e,t){var u=t.emit,n=Vue.ref(null),s=Vue.ref(e.modelValue||!1),c=function(l){s.value=l,u("update:modelValue",l)},h=Vue.ref({top:0,left:0}),C=Vue.computed(function(){return{top:"".concat(h.value.top,"px"),left:"".concat(h.value.left,"px")}}),g=Vue.ref(null),d=function(l,m){var a=l instanceof Event?m:l,w=(a==null?void 0:a.autoAjustPlacement)||e.autoAjustPlacement,f={top:(a==null?void 0:a.top)||0,left:(a==null?void 0:a.left)||0};if(l instanceof Event){var $,S;l.preventDefault(),f.top=($=a==null?void 0:a.top)!==null&&$!==void 0?$:l.pageY,f.left=(S=a==null?void 0:a.left)!==null&&S!==void 0?S:l.pageX}c(!0),Vue.nextTick(function(){if(w){var R=n.value;if(!R)return;var E=R.clientWidth,I=R.clientHeight;if(I+f.top>=window.innerHeight+window.scrollY){var N=f.top-I;N>window.scrollY&&(f.top=N)}if(E+f.left>=window.innerWidth+window.scrollX){var B=f.left-E;B>window.scrollX&&(f.left=B)}}h.value=f,u("show")})},x=function(){g.value=null,c(!1),u("hide")},i=Vue.reactive(new Map),V=Vue.ref(),p=Vue.computed(function(){return V.value&&i.get(V.value)}),y=function(l,m){var a=function(){return m!=null&&m.trigger?Array.isArray(m.trigger)?m.trigger:[m.trigger]:T.trigger}(),w=function($){e.disabled||(V.value=l,d($,{}))};a.forEach(function(f){l.addEventListener(f,w)}),i.set(l,{triggers:a,handler:w})},M=function(l){var m=i.get(l);!m||(m.triggers.forEach(function(a){l.removeEventListener(a,m.handler)}),i.delete(l))},_=function(l){if(!(!l.target||!n.value||!V.value)){var m=n.value.contains(l.target)||p.value&&p.value.triggers.includes("click")&&V.value.contains(l.target);m||c(!1)}};return Vue.watch(s,function(b){b?document.addEventListener("click",_):document.removeEventListener("click",_)}),Vue.onBeforeUnmount(function(){document.removeEventListener("click",_)}),Vue.provide("visible",s),Vue.provide("autoAjustPlacement",e.autoAjustPlacement),Vue.provide("show",d),Vue.provide("hide",x),{visible:s,style:C,currentReferenceOptions:p,currentOptions:g,contextmenuRef:n,addReference:y,removeReference:M,toggle:c,show:d,hide:x}},methods:{renderContent:function(){var e,t;return Vue.withDirectives(Vue.createVNode("div",{class:o.contextmenu,ref:"contextmenuRef",style:this.style},[Vue.createVNode("ul",{class:o.contextmenuInner},[(e=(t=this.$slots).default)===null||e===void 0?void 0:e.call(t,{triggerOptions:"currentReferenceOptions",options:"currentOptions"})])]),[[Vue.vShow,"visible"]])}},render:function(){var e;return this.visible?this.teleport?Vue.createVNode(Vue.Teleport,{to:this.teleport},P(e=this.renderContent())?e:{default:function(){return[e]}}):this.renderContent():null}});function v(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var G=Vue.defineComponent({name:"VContextmenuItem",props:{disabled:{type:Boolean,default:!1},hideOnClick:{type:Boolean,default:!0}},emits:["click","mouseenter","mouseleave"],setup:function(e,t){var u=t.emit,n=Vue.inject("hide"),s=Vue.ref(!1),c=Vue.computed(function(){var d;return d={},v(d,o.contextmenuItem,!0),v(d,o.contextmenuItemDisabled,e.disabled),v(d,o.contextmenuItemHover,s.value),d}),h=function(x){e.disabled||(u("click",x),e.hideOnClick&&(n==null||n()))},C=function(x){e.disabled||(s.value=!0,u("mouseenter",x))},g=function(x){e.disabled||(s.value=!1,u("mouseleave",x))};return{classes:c,handleClick:h,handleMouseenter:C,handleMouseleave:g}},render:function(){var e,t;return Vue.createVNode("li",{class:this.classes,onClick:this.handleClick,onMouseenter:this.handleMouseenter,onMouseleave:this.handleMouseleave},[(e=(t=this.$slots).default)===null||e===void 0?void 0:e.call(t)])}}),H=Vue.defineComponent({name:"VContextmenuDivider",render:function(){return Vue.createVNode("li",{class:o.contextmenuDivider},null)}}),j=Vue.defineComponent({name:"VContextmenuIcon",props:{name:{type:String,required:!0}},render:function(){return Vue.createVNode("i",{class:[o.contextmenuIcon,"".concat(o.contextmenuIcon,"-").concat(this.name)]},null)}}),W=Vue.defineComponent({name:"VContextmenuSubmenu",props:{title:{type:String,required:!0},disabled:{type:Boolean,default:!1}},emits:["mouseenter","mouseleave"],setup:function(e,t){var u=t.emit,n=Vue.ref(null),s=Vue.inject("autoAjustPlacement"),c=Vue.ref(["top","right"]),h=Vue.ref(!1),C=function(V){e.disabled||(h.value=!0,u("mouseenter",V),Vue.nextTick(function(){var p=[];if(s){var y=V.target,M=y.getBoundingClientRect();if(!n.value)return;var _=n.value.clientWidth,b=n.value.clientHeight;M.right+_>=window.innerWidth?p.push("left"):p.push("right"),M.bottom+b>=window.innerHeight?p.push("bottom"):p.push("top")}c.value=p}))},g=function(V){e.disabled||(h.value=!1,u("mouseleave",V))},d=Vue.computed(function(){var i;return i={},v(i,o.contextmenuItem,!0),v(i,o.contextmenuSubmenuTitle,!0),v(i,o.contextmenuItemHover,h.value),v(i,o.contextmenuItemDisabled,e.disabled),i}),x=Vue.computed(function(){var i;return i={},v(i,o.contextmenu,!0),v(i,o.contextmenuSubmenuMenus,!0),v(i,o.contextmenuSubmenuMenusTop,c.value.includes("top")),v(i,o.contextmenuSubmenuMenusRight,c.value.includes("right")),v(i,o.contextmenuSubmenuMenusBottom,c.value.includes("bottom")),v(i,o.contextmenuSubmenuMenusLeft,c.value.includes("left")),i});return{hover:h,submenuRef:n,titleClasses:d,menusClasses:x,handleMouseenter:C,handleMouseleave:g}},render:function(){var e,t,u,n;return Vue.createVNode("li",{class:o.contextmenuSubmenu,onMouseenter:this.handleMouseenter,onMouseleave:this.handleMouseleave},[Vue.createVNode("div",{class:this.titleClasses},[((e=(t=this.$slots).title)===null||e===void 0?void 0:e.call(t))||this.title,Vue.createVNode("span",{class:o.contextmenuSubmenuArrow},[Vue.createVNode(j,{name:"right-arrow"},null)])]),this.hover?Vue.createVNode("div",{ref:"submenuRef",class:this.menusClasses},[Vue.createVNode("ul",{class:o.contextmenuInner},[(u=(n=this.$slots).default)===null||u===void 0?void 0:u.call(n)])]):null])}}),F=Vue.defineComponent({name:"VContextmenuGroup",props:{title:{type:String,default:void 0},maxWidth:{type:[Number,String],default:void 0}},setup:function(e){var t=Vue.computed(function(){if(!!e.maxWidth)return{"max-width":typeof e.maxWidth=="number"?"".concat(e.maxWidth,"px"):e.maxWidth,"overflow-x":"auto"}});return{style:t}},methods:{renderTitle:function(){var e,t,u=((e=(t=this.$slots).title)===null||e===void 0?void 0:e.call(t))||this.title;return u?Vue.createVNode("div",{class:o.contextmenuGroupTitle},[u]):null}},render:function(){var e,t;return Vue.createVNode("li",{class:o.contextmenuGroup},[this.renderTitle(),Vue.createVNode("ul",{style:this.style,class:o.contextmenuGroupMenus},[(e=(t=this.$slots).default)===null||e===void 0?void 0:e.call(t)])])}});export{L as C,G as a,H as b,W as c,F as d,D as e};
|