Skip to content

Commit 0494566

Browse files
committed
dropdown - init
1 parent 21f9a94 commit 0494566

File tree

2 files changed

+84
-12
lines changed

2 files changed

+84
-12
lines changed

docs/.vuepress/config.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,22 @@ module.exports = {
2525
{
2626
text: 'Default Theme Config',
2727
link: '/default-theme-config/'
28-
}
28+
},
29+
{
30+
text: 'Dropdown Test',
31+
type: 'dropdown',
32+
items: [
33+
{
34+
text: 'item1',
35+
link: '/dropdown-test/'
36+
},
37+
{
38+
text: 'item1',
39+
link: '/dropdown-test/'
40+
}
41+
],
42+
link: '/dropdown-test/'
43+
},
2944
],
3045
sidebar: {
3146
'/guide/': [

lib/default-theme/NavLinks.vue

Lines changed: 68 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,26 @@
11
<template>
22
<nav class="nav-links" v-if="userLinks.length || githubLink">
33
<!-- user links -->
4-
<router-link v-for="item in userLinks"
5-
:to="item.link"
6-
:key="item.link">
7-
{{ item.text }}
8-
</router-link>
4+
<div class="nav-item" v-for="item in userLinks" :key="item.link">
5+
<div
6+
v-if="item.type === 'dropdown'"
7+
class="nav-dropdown-wrapper">
8+
<span>{{ item.text }}</span>
9+
<ul class="nav-dropdown">
10+
<li v-for="subItem in item.items">
11+
<router-link
12+
:to="subItem.link">
13+
{{ subItem.text }}
14+
</router-link>
15+
</li>
16+
</ul>
17+
</div>
18+
<router-link
19+
v-else
20+
:to="item.link">
21+
{{ item.text }}
22+
</router-link>
23+
</div>
924
<!-- github link -->
1025
<a v-if="githubLink"
1126
:href="githubLink"
@@ -26,9 +41,11 @@ export default {
2641
components: { OutboundLink },
2742
computed: {
2843
userLinks () {
29-
return (this.$site.themeConfig.nav || []).map(item => ({
30-
text: item.text,
31-
link: ensureExt(item.link)
44+
return (this.$site.themeConfig.nav || []).map(({ text, link, type, items }) => ({
45+
text,
46+
type,
47+
link: ensureExt(link),
48+
items: (items || []).map(({ text, link }) => ({ text, link: ensureExt(link) }))
3249
}))
3350
},
3451
githubLink () {
@@ -52,12 +69,52 @@ export default {
5269
.nav-links
5370
display inline-block
5471
a
55-
color inherit
56-
font-weight 500
5772
line-height 1.25rem
58-
margin-left 1.5rem
73+
color inherit
5974
&:hover, &.router-link-active
6075
color $accentColor
76+
.github-link
77+
margin-left 1.5rem
78+
.nav-item
79+
position relative
80+
display inline-block
81+
margin-left 1.5rem
82+
font-weight 500
83+
line-height 2rem
84+
.nav-dropdown-wrapper
85+
cursor pointer
86+
padding-right 15px
87+
&:after
88+
content: ''
89+
position absolute
90+
right: 0px
91+
top: calc(50% - 2px)
92+
display block
93+
border-left: 4px solid transparent
94+
border-right: 4px solid transparent
95+
border-top: 5px solid #ccc
96+
&:hover
97+
.nav-dropdown
98+
display: block
99+
.nav-dropdown
100+
display: none
101+
box-sizing: border-box;
102+
max-height: calc(100vh - 2.7rem)
103+
overflow-y: auto
104+
position: absolute
105+
top: 100%
106+
right: 0
107+
background-color: #fff
108+
padding: 10px 0
109+
border: 1px solid #ddd
110+
border-bottom-color: #ccc
111+
text-align: left
112+
border-radius: 0.25rem
113+
white-space: nowrap
114+
margin 0
115+
& > li
116+
line-height 1.7rem
117+
padding: 0 1.5rem 0 1.25rem;
61118
62119
@media (max-width: $MQMobile)
63120
.nav-links a

0 commit comments

Comments
 (0)