vxe-pc-ui
Version:
A vue based PC component library
1 lines • 1.55 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeAnchorLink",props:{content:[String,Number],title:[String,Number],href:String},emits:[],setup(l,e){const a=e["slots"],r=(0,_vue.inject)("$xeAnchor",null),t=(0,_vue.inject)("$xeAnchorLink",null);var n=_xeUtils.default.uniqueId();const o=(0,_vue.ref)();var u=(0,_vue.reactive)({});const i=(0,_vue.reactive)({id:n,href:l.href,children:[]}),v={refElem:o},s=(0,_vue.computed)(()=>{var e=l["href"];return r?r.reactData.activeHref===e:null}),c={};n={xID:n,props:l,context:e,reactData:u,linkConfig:i,getRefMaps:()=>v,getComputeMaps:()=>c};const _=e=>{var t=l["href"];r&&r.handleClickLink(e,t)};(0,_vue.watch)(()=>l.href,e=>{i.href=e}),(0,_vue.onMounted)(()=>{var e=o.value;r&&e&&(0,_util.assembleAnchorLink)(r,e,i,t)}),(0,_vue.onUnmounted)(()=>{r&&(0,_util.destroyAnchorLink)(r,i)});return(0,_vue.provide)("$xeAnchorLink",n),n.renderVN=()=>{var{href:e,content:t,title:r}=l,n=a.default,u=a.sub,i=s.value;return(0,_vue.h)("div",{ref:o,class:["vxe-anchor-link",{"is--active":i}]},[(0,_vue.h)("a",{class:"vxe-anchor-link--item",href:e,title:r,onClick:_},n?n({}):_xeUtils.default.toValueString(t)),u?(0,_vue.h)("div",{class:"vxe-anchor-link--sub-items"},u({})):(0,_vue.createCommentVNode)()])},n},render(){return this.renderVN()}});