|
2 | 2 | <div class="theme-container">
|
3 | 3 | <div class="sidebar">
|
4 | 4 | <ul>
|
5 |
| - <li v-for="page in sortedPages"> |
6 |
| - <router-link :to="page.path"> |
7 |
| - {{ page.frontmatter.navTitle || page.title || page.path }} |
| 5 | + <li v-for="item in sidebarItems"> |
| 6 | + <router-link v-if="item.type === 'page'" :to="item.path"> |
| 7 | + {{ item.title || item.path }} |
8 | 8 | </router-link>
|
| 9 | + <div class="sidebar-group" v-else-if="item.type === 'heading'"> |
| 10 | + <p class="sidebar-heading">{{ item.title }}</p> |
| 11 | + <ul> |
| 12 | + <li v-for="child in item.children"> |
| 13 | + <router-link v-if="child.type === 'page'" :to="child.path"> |
| 14 | + {{ child.title || child.path }} |
| 15 | + </router-link> |
| 16 | + </li> |
| 17 | + </ul> |
| 18 | + </div> |
9 | 19 | </li>
|
10 | 20 | </ul>
|
11 | 21 | </div>
|
|
18 | 28 | import nprogress from 'nprogress'
|
19 | 29 | import Index from './Index.vue'
|
20 | 30 | import Page from './Page.vue'
|
21 |
| -
|
22 |
| -function normalize (path) { |
23 |
| - return path.replace(/\.(md|html)$/, '') |
24 |
| -} |
25 |
| -
|
26 |
| -function findIndex (order, page) { |
27 |
| - const pagePath = normalize(page.path) |
28 |
| - for (let i = 0; i < order.length; i++) { |
29 |
| - if (normalize(order[i]) === pagePath) { |
30 |
| - return i |
31 |
| - } |
32 |
| - } |
33 |
| - return Infinity |
34 |
| -} |
| 31 | +import resolveSidebar from './resolveSidebar' |
35 | 32 |
|
36 | 33 | export default {
|
37 | 34 | components: { Index, Page },
|
38 | 35 | computed: {
|
39 |
| - sortedPages () { |
40 |
| - const pages = this.$site.pages |
41 |
| - const order = this.$site.themeConfig.sidebar |
42 |
| - if (!order) { |
43 |
| - return pages |
44 |
| - } else { |
45 |
| - return pages.slice().sort((a, b) => { |
46 |
| - const aIndex = findIndex(order, a) |
47 |
| - const bIndex = findIndex(order, b) |
48 |
| - return aIndex - bIndex |
49 |
| - }) |
50 |
| - } |
| 36 | + sidebarItems () { |
| 37 | + return resolveSidebar( |
| 38 | + this.$route, |
| 39 | + this.$site |
| 40 | + ) |
51 | 41 | }
|
52 | 42 | },
|
53 | 43 | mounted () {
|
|
0 commit comments