72 lines
1.3 KiB
Vue
72 lines
1.3 KiB
Vue
<template>
|
|
<a
|
|
:href="parsedHref"
|
|
:target="target"
|
|
:rel="rel"
|
|
@focusout="focusoutAction"
|
|
>
|
|
<slot></slot>
|
|
</a>
|
|
</template>
|
|
|
|
<script>
|
|
import { isExternal } from '@vuepress/theme-default/util';
|
|
import NavLink from '@theme/components/NavLink.vue';
|
|
|
|
export default {
|
|
name: 'Link',
|
|
|
|
components: {
|
|
NavLink,
|
|
},
|
|
props: {
|
|
href: {
|
|
required: true
|
|
},
|
|
target: {
|
|
required: false
|
|
},
|
|
rel: {
|
|
required: false
|
|
},
|
|
hideLatestVersion: {
|
|
type: Boolean,
|
|
required: false
|
|
}
|
|
},
|
|
|
|
data() {
|
|
return {
|
|
latestVersion: null,
|
|
};
|
|
},
|
|
|
|
computed: {
|
|
parsedHref() {
|
|
const frameworkDir = `${this.$page.currentFramework}${this.$page.frameworkSuffix}`;
|
|
let href = this.href;
|
|
|
|
if (!this.isExternal) {
|
|
if (this.hideLatestVersion && this.$page.currentVersion === this.$page.latestVersion) {
|
|
href = href.replace('/{docsVersion}/', `/${frameworkDir}/`);
|
|
} else {
|
|
href = href.replace('/{docsVersion}/', `/${this.$page.currentVersion}/${frameworkDir}/`);
|
|
}
|
|
}
|
|
|
|
return href;
|
|
},
|
|
|
|
isExternal() {
|
|
return isExternal(this.href);
|
|
},
|
|
},
|
|
|
|
methods: {
|
|
focusoutAction() {
|
|
this.$emit('focusout');
|
|
}
|
|
},
|
|
};
|
|
</script>
|