Skip to content

Commit 53d0099

Browse files
feat(theme): add page-top/bottom and doc-top/bottom slots (#2139)
1 parent f4355c7 commit 53d0099

File tree

5 files changed

+23
-2
lines changed

5 files changed

+23
-2
lines changed

docs/guide/extending-default-theme.md

+5
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ export default {
160160
Full list of slots available in the default theme layout:
161161

162162
- When `layout: 'doc'` (default) is enabled via frontmatter:
163+
- `doc-top`
164+
- `doc-bottom`
163165
- `doc-footer-before`
164166
- `doc-before`
165167
- `doc-after`
@@ -178,6 +180,9 @@ Full list of slots available in the default theme layout:
178180
- `home-hero-after`
179181
- `home-features-before`
180182
- `home-features-after`
183+
- When `layout: 'page'` is enabled via frontmatter:
184+
- `page-top`
185+
- `page-bottom`
181186
- On not found (404) page:
182187
- `not-found`
183188
- Always:

src/client/theme-default/Layout.vue

+6
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ provide('hero-image-slot-exists', heroImageSlotExists)
5454
</VPSidebar>
5555

5656
<VPContent>
57+
<template #page-top><slot name="page-top" /></template>
58+
<template #page-bottom><slot name="page-bottom" /></template>
59+
5760
<template #not-found><slot name="not-found" /></template>
5861
<template #home-hero-before><slot name="home-hero-before" /></template>
5962
<template #home-hero-info><slot name="home-hero-info" /></template>
@@ -65,6 +68,9 @@ provide('hero-image-slot-exists', heroImageSlotExists)
6568
<template #doc-footer-before><slot name="doc-footer-before" /></template>
6669
<template #doc-before><slot name="doc-before" /></template>
6770
<template #doc-after><slot name="doc-after" /></template>
71+
<template #doc-top><slot name="doc-top" /></template>
72+
<template #doc-bottom><slot name="doc-bottom" /></template>
73+
6874

6975
<template #aside-top><slot name="aside-top" /></template>
7076
<template #aside-bottom><slot name="aside-bottom" /></template>

src/client/theme-default/components/VPContent.vue

+7-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ const { hasSidebar } = useSidebar()
2121
>
2222
<slot name="not-found" v-if="page.isNotFound"><NotFound /></slot>
2323

24-
<VPPage v-else-if="frontmatter.layout === 'page'" />
24+
<VPPage v-else-if="frontmatter.layout === 'page'">
25+
<template #page-top><slot name="page-top" /></template>
26+
<template #page-bottom><slot name="page-bottom" /></template>
27+
</VPPage>
2528

2629
<VPHome v-else-if="frontmatter.layout === 'home'">
2730
<template #home-hero-before><slot name="home-hero-before" /></template>
@@ -33,6 +36,9 @@ const { hasSidebar } = useSidebar()
3336
</VPHome>
3437

3538
<VPDoc v-else>
39+
<template #doc-top><slot name="doc-top" /></template>
40+
<template #doc-bottom><slot name="doc-bottom" /></template>
41+
3642
<template #doc-footer-before><slot name="doc-footer-before" /></template>
3743
<template #doc-before><slot name="doc-before" /></template>
3844
<template #doc-after><slot name="doc-after" /></template>

src/client/theme-default/components/VPDoc.vue

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const pageName = computed(() =>
1919
class="VPDoc"
2020
:class="{ 'has-sidebar': hasSidebar, 'has-aside': hasAside }"
2121
>
22+
<slot name="doc-top" />
2223
<div class="container">
2324
<div v-if="hasAside" class="aside">
2425
<div class="aside-curtain" />
@@ -50,6 +51,7 @@ const pageName = computed(() =>
5051
</div>
5152
</div>
5253
</div>
54+
<slot name="doc-bottom" />
5355
</div>
5456
</template>
5557

@@ -130,7 +132,7 @@ const pageName = computed(() =>
130132
.aside-container {
131133
position: fixed;
132134
top: 0;
133-
padding-top: calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px);
135+
padding-top: calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);
134136
width: 224px;
135137
height: 100vh;
136138
overflow-x: hidden;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<template>
22
<div class="VPPage">
3+
<slot name="page-top" />
34
<Content />
5+
<slot name="page-bottom" />
46
</div>
57
</template>

0 commit comments

Comments
 (0)