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