vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 2.14 kB
JavaScript
;const e=require("vue");require("../dropdown/index.cjs");require("../dropdown-list/index.cjs");require("../renderer/index.cjs");const C=require("@vexip-ui/config"),b=require("@vexip-ui/hooks"),m=require("@vexip-ui/utils"),g=require("./render.cjs"),q=require("../dropdown/dropdown.vue2.cjs"),k=require("../dropdown/dropdown-list.vue2.cjs"),y=require("../renderer/renderer.cjs"),h=e.defineComponent({name:"Contextmenu",__name:"contextmenu",setup(w,{expose:d}){const r=C.useNameHelper("contextmenu"),{isRtl:_}=b.useRtl(),u=e.ref(!1),o=e.ref([]),c=e.ref(!1),s=e.reactive({x:0,y:0}),a=e.ref(null),i=e.ref(null);function x(t){return s.x=t.clientX||0,s.y=t.clientY||0,o.value=t.configs,c.value=t.appear??!1,u.value=!0,new Promise(l=>{a.value=n=>{l(n)},i.value=()=>{l(null)}})}function f(){a.value=null,i.value=null}function p(t){u.value=!1,m.isFunction(a.value)&&(a.value(t),f())}function v(){u.value=!1,m.isFunction(i.value)&&(i.value(),f())}return d({visible:u,position:s,openContextmenu:x,handleSelect:p,handleCancel:v}),(t,l)=>(e.openBlock(),e.createBlock(e.unref(q),{visible:u.value,"onUpdate:visible":l[0]||(l[0]=n=>u.value=n),class:e.normalizeClass([e.unref(r).b(),e.unref(r).bs("vars")]),trigger:"click",placement:e.unref(_)?"left-start":"right-start",appear:c.value,transfer:!1,style:e.normalizeStyle({top:`${s.y}px`,left:`${s.x}px`}),onContextmenu:l[1]||(l[1]=e.withModifiers(()=>{},["prevent","stop"])),onSelect:p,onOutsideClose:v},{drop:e.withCtx(()=>[e.createVNode(e.unref(k),{class:e.normalizeClass([e.unref(r).be("list"),o.value.some(n=>n.icon)?e.unref(r).bem("list","icons"):e.unref(r).bem("list","no-icon"),o.value.some(n=>n.children&&n.children.length)?e.unref(r).bem("list","arrows"):e.unref(r).bem("list","no-arrow")])},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,n=>(e.openBlock(),e.createBlock(e.unref(y),{key:n.key,data:{config:n,nh:e.unref(r)},renderer:e.unref(g.renderItem)},null,8,["data","renderer"]))),128))]),_:1},8,["class"])]),_:1},8,["visible","class","placement","appear","style"]))}});module.exports=h;
//# sourceMappingURL=contextmenu.vue2.cjs.map