Skip to content
This repository was archived by the owner on Jan 8, 2025. It is now read-only.

Commit 10875e5

Browse files
authored
feat: add versions config (#57)
1 parent 2ca9973 commit 10875e5

File tree

2 files changed

+74
-9
lines changed

2 files changed

+74
-9
lines changed

packages/varlet-vue2-cli/site/pc/components/AppHeader.vue

Lines changed: 66 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,30 @@
66
</div>
77

88
<div class="varlet-site-header__tail">
9+
<div
10+
class="varlet-site-header__versions"
11+
@mouseenter="isOpenVersionsMenu = true"
12+
@mouseleave="isOpenVersionsMenu = false"
13+
v-if="versionItems"
14+
>
15+
<span style="font-size: 14px;">{{ currentVersion }}</span>
16+
<var-site-icon name="chevron-down" />
17+
<transition name="fade">
18+
<div
19+
class="varlet-site-header__animation-list varlet-site-header__animation-versions var-site-elevation--5"
20+
v-show="isOpenVersionsMenu"
21+
:style="{ pointerEvents: isOpenVersionsMenu ? 'auto' : 'none' }"
22+
>
23+
<var-site-cell
24+
v-for="(value, key) in nonEmptyVersions"
25+
v-ripple
26+
:key="key"
27+
@click.native="open(value)"
28+
>{{ key }}
29+
</var-site-cell>
30+
</div>
31+
</transition>
32+
</div>
933
<a
1034
class="varlet-site-header__link"
1135
target="_blank"
@@ -41,23 +65,23 @@
4165
</div>
4266
<div
4367
class="varlet-site-header__language"
44-
@mouseenter="isOpenMenu = true"
45-
@mouseleave="isOpenMenu = false"
68+
@mouseenter="isOpenLanguageMenu = true"
69+
@mouseleave="isOpenLanguageMenu = false"
4670
v-if="languages"
4771
>
4872
<var-site-icon name="translate" size="26px" />
4973
<var-site-icon name="chevron-down" />
5074
<transition name="fade">
5175
<div
52-
class="varlet-site-header__language-list var-site-elevation--5"
53-
v-show="isOpenMenu"
54-
:style="{ pointerEvents: isOpenMenu ? 'auto' : 'none' }"
76+
class="varlet-site-header__animation-list var-site-elevation--5"
77+
v-show="isOpenLanguageMenu"
78+
:style="{ pointerEvents: isOpenLanguageMenu ? 'auto' : 'none' }"
5579
>
5680
<var-site-cell
5781
v-for="(value, key) in nonEmptyLanguages"
5882
v-ripple
5983
:key="key"
60-
:class="{ 'varlet-site-header__language-list--active': language === key }"
84+
:class="{ 'varlet-site-header__animation-list--active': language === key }"
6185
@click.native="handleLanguageChange(key)"
6286
>
6387
{{ value }}
@@ -88,6 +112,9 @@ export default defineComponent({
88112
computed: {
89113
nonEmptyLanguages() {
90114
return removeEmpty(this.languages)
115+
},
116+
nonEmptyVersions() {
117+
return removeEmpty(this.versionItems)
91118
}
92119
},
93120
@@ -96,11 +123,14 @@ export default defineComponent({
96123
redirect: get(config, 'pc.redirect'),
97124
themesKey: get(config, 'themesKey'),
98125
languages: get(config, 'pc.header.i18n'),
126+
currentVersion: get(config, 'pc.header.version.current'),
127+
versionItems: get(config, 'pc.header.version.items'),
99128
playground: get(config, 'pc.header.playground'),
100129
github: get(config, 'pc.header.github'),
101130
darkMode: get(config, 'pc.header.darkMode'),
102131
currentThemes: getBrowserThemes(get(config, 'themesKey')),
103-
isOpenMenu: false,
132+
isOpenLanguageMenu: false,
133+
isOpenVersionsMenu: false
104134
}),
105135
106136
created() {
@@ -114,6 +144,12 @@ export default defineComponent({
114144
},
115145
116146
methods: {
147+
open(value) {
148+
setTimeout(() => {
149+
window.location.href = value
150+
}, 350);
151+
},
152+
117153
backRoot() {
118154
const { language: lang } = getPCLocationInfo()
119155
this.$router.replace(`/${lang}${this.redirect}`)
@@ -122,7 +158,7 @@ export default defineComponent({
122158
handleLanguageChange(language) {
123159
const { menuName } = getPCLocationInfo()
124160
this.$router.replace(`/${language}/${menuName}`)
125-
this.isOpenMenu = false
161+
this.isOpenLanguageMenu = false
126162
},
127163
128164
setCurrentThemes(themes) {
@@ -240,6 +276,23 @@ export default defineComponent({
240276
}
241277
}
242278
279+
&__versions {
280+
border-radius: 3px;
281+
height: 40px;
282+
display: flex;
283+
align-items: center;
284+
padding-right: 10px;
285+
padding-left: 18px;
286+
position: relative;
287+
cursor: pointer;
288+
transition: background-color 0.25s;
289+
margin-right: 6px;
290+
291+
&:hover {
292+
background: var(--site-config-color-nav-button-hover-background);
293+
}
294+
}
295+
243296
&__link {
244297
border-radius: 50%;
245298
width: 42px;
@@ -278,7 +331,7 @@ export default defineComponent({
278331
}
279332
}
280333
281-
&__language-list {
334+
&__animation-list {
282335
background: var(--site-config-color-bar);
283336
cursor: pointer;
284337
color: var(--site-config-color-text);
@@ -300,6 +353,10 @@ export default defineComponent({
300353
background: var(--site-config-color-pc-language-active-background);
301354
color: var(--site-config-color-pc-language-active);
302355
}
356+
357+
&__animation-versions {
358+
left: -7px;
359+
}
303360
}
304361
}
305362
</style>

packages/varlet-vue2-ui/varlet.config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ module.exports = {
44
baidu: 'https://hm.baidu.com/hm.js?5c628ce58967c90ff4dd9c8803d930fa',
55
},
66
pc: {
7+
header: {
8+
version: {
9+
current: 'Vue 2',
10+
items: {
11+
'Vue 3': 'https://varlet-varletjs.vercel.app/',
12+
},
13+
},
14+
},
715
menu: [
816
{
917
text: {

0 commit comments

Comments
 (0)