feat: make navBarLinks component

pull/80/head
小倉優悟 5 years ago
parent 5dfddb86da
commit d307053e4e

@ -1,24 +1,14 @@
import { computed } from 'vue'
import { withBase } from '../utils'
import { useSiteDataByRoute } from 'vitepress'
import NavBarLink from './NavBarLink.vue'
import NavDropdownLink from './NavDropdownLink.vue'
import NavBarLinks from './NavBarLinks.vue'
export default {
components: {
NavBarLink,
NavDropdownLink
NavBarLinks
},
setup() {
return {
withBase,
navData:
process.env.NODE_ENV === 'production'
? // navbar items do not change in production
useSiteDataByRoute().value.themeConfig.nav
: // use computed in dev for hot reload
computed(() => useSiteDataByRoute().value.themeConfig.nav)
withBase
}
}
}

@ -12,12 +12,7 @@
/>
<span>{{ $site.title }}</span>
</a>
<nav class="nav-links" v-if="navData">
<template v-for="item of navData">
<NavDropdownLink v-if='item.items' :item="item"/>
<NavBarLink v-else :item="item"/>
</template>
</nav>
<NavBarLinks />
</template>
<script src="./NavBar"></script>
@ -34,18 +29,4 @@
height: 1.3rem;
vertical-align: bottom;
}
.nav-links {
display: flex;
align-items: center;
height: 35px;
list-style-type: none;
transform: translateY(1px);
}
@media screen and (max-width: 719px) {
.nav-links {
display: none;
}
}
</style>

@ -0,0 +1,22 @@
import { computed } from 'vue'
import { useSiteDataByRoute } from 'vitepress'
import NavBarLink from './NavBarLink.vue'
import NavDropdownLink from './NavDropdownLink.vue'
export default {
components: {
NavBarLink,
NavDropdownLink
},
setup() {
return {
navData:
process.env.NODE_ENV === 'production'
? // navbar items do not change in production
useSiteDataByRoute().value.themeConfig.nav
: // use computed in dev for hot reload
computed(() => useSiteDataByRoute().value.themeConfig.nav)
}
}
}

@ -0,0 +1,26 @@
<template>
<nav class="nav-links" v-if="navData">
<template v-for="item of navData">
<NavDropdownLink v-if='item.items' :item="item"/>
<NavBarLink v-else :item="item"/>
</template>
</nav>
</template>
<script src="./NavBarLinks"></script>
<style>
.nav-links {
display: flex;
align-items: center;
height: 35px;
list-style-type: none;
transform: translateY(1px);
}
@media screen and (max-width: 719px) {
.nav-links {
display: none;
}
}
</style>
Loading…
Cancel
Save