mirror of
https://github.com/element-plus/element-plus.git
synced 2024-12-27 03:01:14 +08:00
123 lines
2.3 KiB
Vue
123 lines
2.3 KiB
Vue
<template>
|
|
<div class="footer-nav">
|
|
<span
|
|
v-if="leftNav"
|
|
class="footer-nav-link footer-nav-left"
|
|
@click="handleNavClick('prev')"
|
|
>
|
|
<i class="el-icon-arrow-left"></i>
|
|
{{ leftNav.title || leftNav.name }}
|
|
</span>
|
|
<span
|
|
v-if="rightNav"
|
|
class="footer-nav-link footer-nav-right"
|
|
@click="handleNavClick('next')"
|
|
>
|
|
{{ rightNav.title || rightNav.name }}
|
|
<i class="el-icon-arrow-right"></i>
|
|
</span>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import navConfig from '../nav.config.json'
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
currentComponent: null,
|
|
nav: [],
|
|
currentIndex: -1,
|
|
leftNav: null,
|
|
rightNav: null,
|
|
}
|
|
},
|
|
|
|
computed: {
|
|
lang() {
|
|
return this.$route.meta.lang
|
|
},
|
|
},
|
|
|
|
watch: {
|
|
'$route.path'() {
|
|
this.setNav()
|
|
this.updateNav()
|
|
},
|
|
},
|
|
|
|
created() {
|
|
this.setNav()
|
|
this.updateNav()
|
|
},
|
|
|
|
methods: {
|
|
setNav() {
|
|
let nav = navConfig[this.lang]
|
|
this.nav = [nav[0]].concat(nav[1].children)
|
|
nav[2].groups.map(group => group.list).forEach(list => {
|
|
this.nav = this.nav.concat(list)
|
|
})
|
|
},
|
|
|
|
updateNav() {
|
|
this.currentComponent = '/' + this.$route.path.split('/')[3]
|
|
for (let i = 0, len = this.nav.length; i < len; i++) {
|
|
if (this.nav[i].path === this.currentComponent) {
|
|
this.currentIndex = i
|
|
break
|
|
}
|
|
}
|
|
this.leftNav = this.nav[this.currentIndex - 1]
|
|
this.rightNav = this.nav[this.currentIndex + 1]
|
|
},
|
|
|
|
handleNavClick(direction) {
|
|
this.$router.push(`/${ this.lang }/component${ direction === 'prev' ? this.leftNav.path : this.rightNav.path }`)
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.footer-nav {
|
|
padding: 40px 0;
|
|
color: #333;
|
|
font-size: 14px;
|
|
|
|
&::after {
|
|
content: '';
|
|
display: block;
|
|
clear: both;
|
|
}
|
|
|
|
& i {
|
|
transition: .3s;
|
|
color: #999;
|
|
vertical-align: baseline;
|
|
}
|
|
}
|
|
|
|
.footer-nav-link {
|
|
cursor: pointer;
|
|
transition: .3s;
|
|
|
|
&:hover {
|
|
color: #409EFF;
|
|
|
|
& i {
|
|
color: #409EFF;
|
|
}
|
|
}
|
|
}
|
|
|
|
.footer-nav-left {
|
|
float: left;
|
|
margin-left: -4px;
|
|
}
|
|
|
|
.footer-nav-right {
|
|
float: right;
|
|
margin-right: -4px;
|
|
}
|
|
</style>
|