feat(theme): make prev/next links changeable (#1972)

Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com>
pull/1599/head
Markus 3 years ago committed by GitHub
parent 58f455bdb4
commit b8a5e8e5b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,29 +1,43 @@
# Prev Next Link # Prev Next Link
You can customize the text of previous and next links. This is helpful if you want to show different text on previous/next links than what you have on your sidebar. You can customize the text and link for the previous and next pages (shown at doc footer). This is helpful if you want a different text there than what you have on your sidebar. Additionally, you may find it useful to disable the footer or link to a page that is not included in your sidebar.
## prev ## prev
- Type: `string` - Type: `string | false | { text?: string; link?: string }`
- Details: - Details:
Specify the text to show on the link to the previous page. Specifies the text/link to show on the link to the previous page. If you don't set this in frontmatter, the text/link will be inferred from the sidebar config.
If you don't set this in frontmatter, the text will be inferred from the sidebar config. - Examples:
- Example: - To customize only the text:
```yaml ```yaml
--- ---
prev: 'Get Started | Markdown' prev: 'Get Started | Markdown'
--- ---
``` ```
## next - To customize both text and link:
- Type: `string` ```yaml
---
prev:
text: 'Markdown'
link: '/guide/markdown'
---
```
- Details: - To hide previous page:
```yaml
---
prev: false
---
```
## next
Same as `prev` but for the next page. Same as `prev` but for the next page.

@ -39,15 +39,15 @@ const showFooter = computed(() => {
</div> </div>
</div> </div>
<div v-if="control.prev || control.next" class="prev-next"> <div v-if="control.prev?.link || control.next?.link" class="prev-next">
<div class="pager"> <div class="pager">
<a v-if="control.prev" class="pager-link prev" :href="normalizeLink(control.prev.link)"> <a v-if="control.prev?.link" class="pager-link prev" :href="normalizeLink(control.prev.link)">
<span class="desc" v-html="theme.docFooter?.prev || 'Previous page'"></span> <span class="desc" v-html="theme.docFooter?.prev || 'Previous page'"></span>
<span class="title" v-html="control.prev.text"></span> <span class="title" v-html="control.prev.text"></span>
</a> </a>
</div> </div>
<div class="pager" :class="{ 'has-prev': control.prev }"> <div class="pager" :class="{ 'has-prev': control.prev?.link }">
<a v-if="control.next" class="pager-link next" :href="normalizeLink(control.next.link)"> <a v-if="control.next?.link" class="pager-link next" :href="normalizeLink(control.next.link)">
<span class="desc" v-html="theme.docFooter?.next || 'Next page'"></span> <span class="desc" v-html="theme.docFooter?.next || 'Next page'"></span>
<span class="title" v-html="control.next.text"></span> <span class="title" v-html="control.next.text"></span>
</a> </a>

@ -15,12 +15,39 @@ export function usePrevNext() {
}) })
return { return {
prev: frontmatter.value.prev prev:
? { ...candidates[index - 1], text: frontmatter.value.prev } frontmatter.value.prev === false
: candidates[index - 1], ? undefined
next: frontmatter.value.next : {
? { ...candidates[index + 1], text: frontmatter.value.next } text:
: candidates[index + 1] (typeof frontmatter.value.prev === 'string'
? frontmatter.value.prev
: typeof frontmatter.value.prev === 'object'
? frontmatter.value.prev.text
: undefined) ?? candidates[index - 1]?.text,
link:
(typeof frontmatter.value.prev === 'object'
? frontmatter.value.prev.link
: undefined) ?? candidates[index - 1]?.link
},
next:
frontmatter.value.next === false
? undefined
: {
text:
(typeof frontmatter.value.next === 'string'
? frontmatter.value.next
: typeof frontmatter.value.next === 'object'
? frontmatter.value.next.text
: undefined) ?? candidates[index + 1]?.text,
link:
(typeof frontmatter.value.next === 'object'
? frontmatter.value.next.link
: undefined) ?? candidates[index + 1]?.link
}
} as {
prev?: { text?: string; link?: string }
next?: { text?: string; link?: string }
} }
}) })
} }

Loading…
Cancel
Save