Skip to content

Commit

Permalink
feat: allow external links in sidebar (#205) (#686)
Browse files Browse the repository at this point in the history
close #205

Co-authored-by: Kia Ishii <kia.king.08@gmail.com>
  • Loading branch information
brc-dd and kiaking committed Jun 6, 2022
1 parent 86690fa commit ce17f50
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 13 deletions.
9 changes: 7 additions & 2 deletions src/client/theme-default/components/VPSidebarGroup.vue
Expand Up @@ -6,7 +6,7 @@ import VPIconMinusSquare from './icons/VPIconMinusSquare.vue'
import VPSidebarLink from './VPSidebarLink.vue'
const props = defineProps<{
text: string
text?: string
items: DefaultTheme.SidebarItem[]
collapsible?: boolean
collapsed?: boolean
Expand All @@ -23,7 +23,12 @@ function toggle() {

<template>
<section class="VPSidebarGroup" :class="{ collapsible, collapsed }">
<div class="title" :role="collapsible ? 'button' : undefined" @click="toggle">
<div
v-if="text"
class="title"
:role="collapsible ? 'button' : undefined"
@click="toggle"
>
<h2 class="title-text">{{ text }}</h2>
<div class="action">
<VPIconMinusSquare class="icon minus" />
Expand Down
24 changes: 14 additions & 10 deletions src/client/theme-default/components/VPSidebarLink.vue
Expand Up @@ -3,6 +3,7 @@ import { inject } from 'vue'
import { useData } from 'vitepress'
import { DefaultTheme } from '../config'
import { isActive, normalizeLink } from '../support/utils'
import VPLink from './VPLink.vue'
defineProps<{
item: DefaultTheme.SidebarItem
Expand All @@ -14,37 +15,40 @@ const closeSideBar = inject('close-sidebar') as () => void
</script>

<template>
<a
class="link"
<VPLink
:class="{ active: isActive(page.relativePath, item.link) }"
:href="normalizeLink(item.link)"
@click="closeSideBar"
>
<p class="link-text">{{ item.text }}</p>
</a>
<span class="link-text">{{ item.text }}</span>
</VPLink>
</template>

<style scoped>
.link {
display: block;
padding: 6px 0;
color: var(--vp-c-text-2);
transition: color 0.5s;
}
.link:hover .link-text {
.link:hover {
color: var(--vp-c-text-1);
transition: color 0.25s;
}
.link.active .link-text {
.link.active {
color: var(--vp-c-brand);
transition: color 0.25s;
}
.link :deep(.icon) {
width: 12px;
height: 12px;
fill: currentColor;
}
.link-text {
line-height: 20px;
font-size: 14px;
font-weight: 500;
color: var(--vp-c-text-2);
transition: color 0.5s;
}
</style>
2 changes: 1 addition & 1 deletion types/default-theme.d.ts
Expand Up @@ -93,7 +93,7 @@ export namespace DefaultTheme {
}

export interface SidebarGroup {
text: string
text?: string
items: SidebarItem[]

/**
Expand Down

0 comments on commit ce17f50

Please sign in to comment.