1
1
<template >
2
2
<nav class =" nav-links" v-if =" userLinks.length || githubLink" >
3
3
<!-- user links -->
4
- <template v-for =" item in userLinks " >
5
- <a v-if =" item.isOutbound"
6
- :href =" item.link"
7
- target =" _blank"
8
- rel =" noopener noreferrer" >
9
- {{ item.text }}
10
- </a >
11
- <router-link
12
- v-else
13
- :to =" item.link"
14
- :key =" item.link"
15
- :exact =" item.link === '/'" >
16
- {{ item.text }}
17
- </router-link >
18
- </template >
4
+ <div
5
+ class =" nav-item"
6
+ v-for =" item in userLinks"
7
+ :key =" item.link" >
8
+ <dropdown-link
9
+ v-if =" item.type === 'links'"
10
+ :item =" item" ></dropdown-link >
11
+ <nav-link v-else :item =" item" ></nav-link >
12
+ </div >
19
13
<!-- github link -->
20
14
<a v-if =" githubLink"
21
15
:href =" githubLink"
30
24
31
25
<script >
32
26
import OutboundLink from ' ./OutboundLink.vue'
33
- import { isActive , ensureExt , outboundRE } from ' ./util'
27
+ import { isActive , resolveNavLinkItem } from ' ./util'
28
+ import NavLink from ' ./NavLink.vue'
29
+ import DropdownLink from ' ./DropdownLink.vue'
34
30
35
31
export default {
36
- components: { OutboundLink },
32
+ components: { OutboundLink, NavLink, DropdownLink },
37
33
computed: {
38
34
userLinks () {
39
- return (this .$site .themeConfig .nav || []).map (item => ( {
40
- text : item . text ,
41
- link : ensureExt ( item . link ),
42
- isOutbound : outboundRE . test ( item . link )
35
+ return (this .$site .themeConfig .nav || []).map (( link => {
36
+ return Object . assign ( resolveNavLinkItem (link), {
37
+ items : ( link . items || []). map (resolveNavLinkItem)
38
+ } )
43
39
}))
44
40
},
45
41
githubLink () {
@@ -63,21 +59,30 @@ export default {
63
59
.nav-links
64
60
display inline-block
65
61
a
66
- color inherit
67
- font-weight 500
68
62
line-height 1.25rem
69
- margin-left 1.5 rem
63
+ color inherit
70
64
& :hover , & .router-link-active
71
65
color $accentColor
66
+ .nav-item
67
+ cursor : pointer
68
+ position relative
69
+ display inline-block
70
+ margin-left 1.5rem
71
+ font-weight 500
72
+ line-height 2rem
73
+ .github-link
74
+ margin-left 1.5rem
72
75
73
76
@media (max-width : $MQMobile)
74
- .nav-links a
75
- margin-left 0
77
+ .nav-links
78
+ .nav-item , .github-link
79
+ margin-left 0
76
80
77
81
@media (min-width : $MQMobile)
78
- .nav-links a
79
- & :hover , & .router-link-active
80
- color $textColor
81
- margin-bottom - 2px
82
- border-bottom 2px solid lighten ($accentColor , 5% )
82
+ .nav-links
83
+ a
84
+ & :hover , & .router-link-active
85
+ color $textColor
86
+ margin-bottom - 2px
87
+ border-bottom 2px solid lighten ($accentColor , 5% )
83
88
</style >
0 commit comments