vxe-pc-ui
Version:
A vue based PC component library
1 lines • 1.97 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeLink",props:{href:String,target:String,status:String,title:[String,Number],icon:String,routerLink:Object,underline:{type:Boolean,default:()=>(0,_ui.getConfig)().link.underline},permissionCode:[String,Number],content:[String,Number],size:{type:String,default:()=>(0,_ui.getConfig)().link.size||(0,_ui.getConfig)().size}},emits:["click"],setup(o,e){const{slots:n,emit:r}=e;var t=_xeUtils.default.uniqueId();const a=(0,_ui.useSize)(o)["computeSize"],c=(0,_ui.usePermission)(o)["computePermissionInfo"],v=(0,_vue.ref)();var i=(0,_vue.reactive)({});const u={refElem:v},s={},_={xID:t,props:o,context:e,reactData:i,getRefMaps:()=>u,getComputeMaps:()=>s},l=(e,t,i)=>{r(e,(0,_ui.createEvent)(i,{$link:_},t))};t={dispatchEvent:l};const d=e=>{l("click",{},e)},p=(Object.assign(_,t,{}),()=>{var{icon:e,content:t}=o,i=n.default,r=n.icon,t=_xeUtils.default.toValueString(t);return[r||e?(0,_vue.h)("span",{class:"vxe-link--icon"},r?(0,_vn.getSlotVNs)(r({})):[(0,_vue.h)("i",{class:e})]):(0,_ui.renderEmptyElement)(_),i||t?(0,_vue.h)("span",{class:"vxe-link--content"},i?i({}):t):(0,_ui.renderEmptyElement)(_)]});return _.renderVN=()=>{var{status:e,target:t,href:i,title:r,underline:n,routerLink:u}=o,s=c.value,l=a.value;return s.visible?u?(0,_vue.h)((0,_vue.resolveComponent)("router-link"),{class:["vxe-link",{["size--"+l]:l,["theme--"+e]:e,"is--underline":n}],title:r,target:t,to:u,onClick:d},{default(){return p()}}):(0,_vue.h)("a",{ref:v,class:["vxe-link",{["size--"+l]:l,["theme--"+e]:e,"is--underline":n}],href:i,target:t,title:r,onClick:d},p()):(0,_ui.renderEmptyElement)(_)},_},render(){return this.renderVN()}});