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 { withBase } from '../utils'
import { useSiteDataByRoute } from 'vitepress' import NavBarLinks from './NavBarLinks.vue'
import NavBarLink from './NavBarLink.vue'
import NavDropdownLink from './NavDropdownLink.vue'
export default { export default {
components: { components: {
NavBarLink, NavBarLinks
NavDropdownLink
}, },
setup() { setup() {
return { return {
withBase, 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)
} }
} }
} }

@ -12,12 +12,7 @@
/> />
<span>{{ $site.title }}</span> <span>{{ $site.title }}</span>
</a> </a>
<nav class="nav-links" v-if="navData"> <NavBarLinks />
<template v-for="item of navData">
<NavDropdownLink v-if='item.items' :item="item"/>
<NavBarLink v-else :item="item"/>
</template>
</nav>
</template> </template>
<script src="./NavBar"></script> <script src="./NavBar"></script>
@ -34,18 +29,4 @@
height: 1.3rem; height: 1.3rem;
vertical-align: bottom; 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> </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