feat(cli): support switch lang
This commit is contained in:
@@ -30,10 +30,10 @@
|
||||
</transition>
|
||||
</span>
|
||||
</li>
|
||||
<!--
|
||||
<li v-if="config.nav.lang" class="van-doc-header__top-nav-item">
|
||||
<a class="van-doc-header__cube" :href="langLink">{{ config.nav.lang.text }}</a>
|
||||
</li> -->
|
||||
|
||||
<li v-if="langLabel && langLink" class="van-doc-header__top-nav-item">
|
||||
<a class="van-doc-header__cube" :href="langLink">{{ langLabel }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -53,7 +53,8 @@ export default {
|
||||
props: {
|
||||
lang: String,
|
||||
config: Object,
|
||||
versions: Array
|
||||
versions: Array,
|
||||
langConfigs: Array
|
||||
},
|
||||
|
||||
data() {
|
||||
@@ -64,8 +65,20 @@ export default {
|
||||
|
||||
computed: {
|
||||
langLink() {
|
||||
const { lang } = this.config.nav;
|
||||
return `#${this.$route.path.replace(lang.from, lang.to)}`;
|
||||
return `#${this.$route.path.replace(this.lang, this.anotherLang.lang)}`;
|
||||
},
|
||||
|
||||
langLabel() {
|
||||
return this.anotherLang.label;
|
||||
},
|
||||
|
||||
anotherLang() {
|
||||
const items = this.langConfigs.filter(item => item.lang !== this.lang);
|
||||
if (items.length) {
|
||||
return items[0];
|
||||
}
|
||||
|
||||
return {};
|
||||
},
|
||||
|
||||
searchConfig() {
|
||||
|
||||
@@ -9,7 +9,8 @@ export default {
|
||||
name: 'van-doc-simulator',
|
||||
|
||||
props: {
|
||||
src: String
|
||||
src: String,
|
||||
lang: String
|
||||
},
|
||||
|
||||
data() {
|
||||
@@ -32,6 +33,12 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
lang(val) {
|
||||
location.hash = `#${location.hash.replace(this.lang, val)}`;
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
window.addEventListener('scroll', () => {
|
||||
this.scrollTop = window.scrollY;
|
||||
|
||||
@@ -4,21 +4,16 @@
|
||||
:lang="lang"
|
||||
:config="config"
|
||||
:versions="versions"
|
||||
:lang-configs="langConfigs"
|
||||
@switch-version="$emit('switch-version', $event)"
|
||||
/>
|
||||
<doc-nav :base="base" :nav-config="config.nav" />
|
||||
<doc-container :has-simulator="!!(simulator || simulators.length)">
|
||||
<doc-container :has-simulator="!!simulator ">
|
||||
<doc-content>
|
||||
<slot />
|
||||
</doc-content>
|
||||
</doc-container>
|
||||
<doc-simulator v-if="simulator" :src="simulator" />
|
||||
<doc-simulator
|
||||
v-for="(url, index) in simulators"
|
||||
v-show="index === currentSimulator"
|
||||
:src="url"
|
||||
:key="url"
|
||||
/>
|
||||
<doc-simulator v-if="simulator" :src="simulator" :lang="lang" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -43,16 +38,13 @@ export default {
|
||||
props: {
|
||||
lang: String,
|
||||
versions: Array,
|
||||
currentSimulator: Number,
|
||||
simulator: String,
|
||||
langConfigs: Array,
|
||||
currentSimulator: Number,
|
||||
config: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
simulators: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
base: {
|
||||
type: String,
|
||||
default: ''
|
||||
|
||||
Reference in New Issue
Block a user