vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 2.73 kB
JavaScript
"use strict";const e=require("vue");require("../tooltip/index.cjs");require("../renderer/index.cjs");const o=require("@vexip-ui/config"),f=require("@vexip-ui/hooks"),y=require("@vexip-ui/utils"),q=require("./props.cjs"),N=require("../tooltip/tooltip.cjs"),v=require("../renderer/renderer.cjs"),k=e.defineComponent({name:"Ellipsis",__name:"ellipsis",props:q.ellipsisProps,setup(h,{expose:m}){const s=o.useNameHelper("ellipsis"),g=h,t=o.useProps("ellipsis",g,{placement:{default:"top",validator:i=>f.placementWhileList.includes(i)},transfer:"body",noHover:!1,transitionName:()=>s.ns("fade"),tooltipTheme:{default:"dark",validator:i=>["light","dark"].includes(i)},tipClass:null,maxLines:null,tipMaxWidth:500,tipDisabled:!1,tipShift:!1,slots:()=>({})}),u=o.useHoverDelay(),n=e.ref(!1),l=e.ref(""),{timer:a}=f.useSetTimeout(),r=e.ref(),x=e.computed(()=>({[s.b()]:!0,[s.bm("inherit")]:t.inherit,[s.bm("multiple")]:t.maxLines})),b=e.computed(()=>t.maxLines>0?{"-webkit-line-clamp":t.maxLines}:""),T=e.computed(()=>({maxWidth:typeof t.tipMaxWidth=="string"?parseFloat(t.tipMaxWidth)||t.tipMaxWidth:`${t.tipMaxWidth}px`}));m({visible:n,wrapper:r});function p(){clearTimeout(a.hover),!t.tipDisabled&&(a.hover=setTimeout(()=>{if(!r.value||!r.value.childNodes.length){n.value=!1;return}if(t.maxLines>0){const i=r.value.scrollHeight,d=r.value.clientHeight;n.value=i>d}else n.value=y.getRangeWidth(r.value)>r.value.getBoundingClientRect().width;l.value=n.value?r.value.textContent??"":""},u.value))}function c(){clearTimeout(a.hover),!t.tipDisabled&&(a.hover=setTimeout(()=>{n.value=!1},u.value))}return(i,d)=>(e.openBlock(),e.createBlock(e.unref(N),{visible:n.value,trigger:"custom",disabled:e.unref(t).tipDisabled,transfer:e.unref(t).transfer,placement:e.unref(t).placement,"no-hover":e.unref(t).noHover,"transition-name":e.unref(t).transitionName,"tip-class":e.unref(t).tipClass,"tip-style":T.value,reverse:e.unref(t).tooltipTheme==="dark",shift:e.unref(t).tipShift,onTipEnter:p,onTipLeave:c},{trigger:e.withCtx(()=>[e.createElementVNode("div",e.mergeProps({ref_key:"wrapper",ref:r},i.$attrs,{class:x.value,style:b.value,onMouseenter:p,onMouseleave:c}),[e.renderSlot(i.$slots,"default",{},()=>[e.createVNode(e.unref(v),{renderer:e.unref(t).slots.default},null,8,["renderer"])])],16)]),default:e.withCtx(()=>[e.renderSlot(i.$slots,"content",{content:l.value},()=>[e.createVNode(e.unref(v),{renderer:e.unref(t).slots.content,data:{content:l.value}},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.value),1)]),_:1},8,["renderer","data"])])]),_:3},8,["visible","disabled","transfer","placement","no-hover","transition-name","tip-class","tip-style","reverse","shift"]))}});module.exports=k;
//# sourceMappingURL=ellipsis.vue2.cjs.map