diff --git a/src/client/theme-default/components/NavBar.vue b/src/client/theme-default/components/NavBar.vue index b99bfafa..564b07ec 100644 --- a/src/client/theme-default/components/NavBar.vue +++ b/src/client/theme-default/components/NavBar.vue @@ -12,7 +12,7 @@ /> {{ $site.title }} - + diff --git a/src/client/theme-default/components/NavRepoLink.ts b/src/client/theme-default/components/NavRepoLink.ts new file mode 100644 index 00000000..a0b105a2 --- /dev/null +++ b/src/client/theme-default/components/NavRepoLink.ts @@ -0,0 +1,47 @@ +import { computed, defineComponent, PropType } from 'vue' +import OutboundLink from './icons/OutboundLink.vue' +import { DefaultTheme } from '/@theme/config' + +export default defineComponent({ + components: { + OutboundLink + }, + + props: { + editLinkConfig: { + type: Object as PropType, + required: true + } + }, + + setup(props) { + const editLinkConfig = props.editLinkConfig + const repoLink = computed(() => { + if (editLinkConfig && editLinkConfig.repo) { + return /^https?:/.test(editLinkConfig.repo) + ? editLinkConfig.repo + : `https://github.com/${editLinkConfig.repo}` + } + return null + }) + const repoLabel = computed(() => { + if (!repoLink.value) return + const repoHosts = repoLink.value.match(/^https?:\/\/[^/]+/) + if (!repoHosts) return + const repoHost = repoHosts[0] + const platforms = ['GitHub', 'GitLab', 'Bitbucket'] + for (let i = 0; i < platforms.length; i++) { + const platform = platforms[i] + if (new RegExp(platform, 'i').test(repoHost)) { + return platform + } + } + + return 'Source' + }) + return { + repoLink, + repoLabel + } + } +}) diff --git a/src/client/theme-default/components/NavRepoLink.vue b/src/client/theme-default/components/NavRepoLink.vue new file mode 100644 index 00000000..f1091274 --- /dev/null +++ b/src/client/theme-default/components/NavRepoLink.vue @@ -0,0 +1,22 @@ + + + + +