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"
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>
0 commit comments