feat(theme): add navigation slots (#739) (#741)

Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com>
pull/944/head
Sacha STAFYNIAK 3 years ago committed by GitHub
parent 88877b7dd9
commit 0f0453c675
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -201,3 +201,12 @@ Full list of slots available in the default theme layout:
- `home-hero-after` - `home-hero-after`
- `home-features-before` - `home-features-before`
- `home-features-after` - `home-features-after`
- Always:
- `layout-top`
- `layout-bottom`
- `nav-bar-title-before`
- `nav-bar-title-after`
- `nav-bar-content-before`
- `nav-bar-content-after`
- `nav-screen-content-before`
- `nav-screen-content-after`

@ -29,7 +29,14 @@ provide('close-sidebar', closeSidebar)
<slot name="layout-top" /> <slot name="layout-top" />
<VPSkipLink /> <VPSkipLink />
<VPBackdrop class="backdrop" :show="isSidebarOpen" @click="closeSidebar" /> <VPBackdrop class="backdrop" :show="isSidebarOpen" @click="closeSidebar" />
<VPNav /> <VPNav>
<template #nav-bar-title-before><slot name="nav-bar-title-before" /></template>
<template #nav-bar-title-after><slot name="nav-bar-title-after" /></template>
<template #nav-bar-content-before><slot name="nav-bar-content-before" /></template>
<template #nav-bar-content-after><slot name="nav-bar-content-after" /></template>
<template #nav-screen-content-before><slot name="nav-screen-content-before" /></template>
<template #nav-screen-content-after><slot name="nav-screen-content-after" /></template>
</VPNav>
<VPLocalNav :open="isSidebarOpen" @open-menu="openSidebar" /> <VPLocalNav :open="isSidebarOpen" @open-menu="openSidebar" />
<VPSidebar :open="isSidebarOpen" /> <VPSidebar :open="isSidebarOpen" />

@ -13,8 +13,16 @@ provide('close-screen', closeScreen)
<template> <template>
<header class="VPNav" :class="{ 'no-sidebar' : !hasSidebar }"> <header class="VPNav" :class="{ 'no-sidebar' : !hasSidebar }">
<VPNavBar :is-screen-open="isScreenOpen" @toggle-screen="toggleScreen" /> <VPNavBar :is-screen-open="isScreenOpen" @toggle-screen="toggleScreen">
<VPNavScreen :open="isScreenOpen" /> <template #nav-bar-title-before><slot name="nav-bar-title-before" /></template>
<template #nav-bar-title-after><slot name="nav-bar-title-after" /></template>
<template #nav-bar-content-before><slot name="nav-bar-content-before" /></template>
<template #nav-bar-content-after><slot name="nav-bar-content-after" /></template>
</VPNavBar>
<VPNavScreen :open="isScreenOpen">
<template #nav-screen-content-before><slot name="nav-screen-content-before" /></template>
<template #nav-screen-content-after><slot name="nav-screen-content-after" /></template>
</VPNavScreen>
</header> </header>
</template> </template>

@ -23,15 +23,20 @@ const { hasSidebar } = useSidebar()
<template> <template>
<div class="VPNavBar" :class="{ 'has-sidebar' : hasSidebar }"> <div class="VPNavBar" :class="{ 'has-sidebar' : hasSidebar }">
<div class="container"> <div class="container">
<VPNavBarTitle /> <VPNavBarTitle>
<template #nav-bar-title-before><slot name="nav-bar-title-before" /></template>
<template #nav-bar-title-after><slot name="nav-bar-title-after" /></template>
</VPNavBarTitle>
<div class="content"> <div class="content">
<slot name="nav-bar-content-before" />
<VPNavBarSearch class="search" /> <VPNavBarSearch class="search" />
<VPNavBarMenu class="menu" /> <VPNavBarMenu class="menu" />
<VPNavBarTranslations class="translations" /> <VPNavBarTranslations class="translations" />
<VPNavBarAppearance class="appearance" /> <VPNavBarAppearance class="appearance" />
<VPNavBarSocialLinks class="social-links" /> <VPNavBarSocialLinks class="social-links" />
<VPNavBarExtra class="extra" /> <VPNavBarExtra class="extra" />
<slot name="nav-bar-content-after" />
<VPNavBarHamburger <VPNavBarHamburger
class="hamburger" class="hamburger"
:active="isScreenOpen" :active="isScreenOpen"

@ -10,9 +10,11 @@ const { hasSidebar } = useSidebar()
<template> <template>
<div class="VPNavBarTitle" :class="{ 'has-sidebar': hasSidebar }"> <div class="VPNavBarTitle" :class="{ 'has-sidebar': hasSidebar }">
<a class="title" :href="site.base"> <a class="title" :href="site.base">
<slot name="nav-bar-title-before" />
<VPImage class="logo" :image="theme.logo" /> <VPImage class="logo" :image="theme.logo" />
<template v-if="theme.siteTitle">{{ theme.siteTitle }}</template> <template v-if="theme.siteTitle">{{ theme.siteTitle }}</template>
<template v-else-if="theme.siteTitle === undefined">{{ site.title }}</template> <template v-else-if="theme.siteTitle === undefined">{{ site.title }}</template>
<slot name="nav-bar-title-after" />
</a> </a>
</div> </div>
</template> </template>

@ -29,10 +29,12 @@ function unlockBodyScroll() {
> >
<div v-if="open" class="VPNavScreen" ref="screen"> <div v-if="open" class="VPNavScreen" ref="screen">
<div class="container"> <div class="container">
<slot name="nav-screen-content-before" />
<VPNavScreenMenu class="menu" /> <VPNavScreenMenu class="menu" />
<VPNavScreenTranslations class="translations" /> <VPNavScreenTranslations class="translations" />
<VPNavScreenAppearance class="appearance" /> <VPNavScreenAppearance class="appearance" />
<VPNavScreenSocialLinks class="social-links" /> <VPNavScreenSocialLinks class="social-links" />
<slot name="nav-screen-content-after" />
</div> </div>
</div> </div>
</transition> </transition>

Loading…
Cancel
Save