mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
[bugfix] Tab: title slot render (#1212)
This commit is contained in:
parent
3fa49cdd3e
commit
9b01710556
@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div :class="b('pane')" v-show="isSelected">
|
||||
<slot v-if="inited" />
|
||||
<div v-if="$slots.title" ref="title">
|
||||
<slot name="title" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -45,6 +48,12 @@ export default create({
|
||||
this.parent.tabs.push(this);
|
||||
},
|
||||
|
||||
mounted() {
|
||||
if (this.$slots.title) {
|
||||
this.parent.renderTitle(this.$refs.title, this.index);
|
||||
}
|
||||
},
|
||||
|
||||
destroyed() {
|
||||
this.parent.tabs.splice(this.index, 1);
|
||||
}
|
||||
|
@ -12,15 +12,19 @@ exports[`renders demo correctly 1`] = `
|
||||
<div class="van-tabs__content">
|
||||
<div class="van-tab__pane">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -35,27 +39,35 @@ exports[`renders demo correctly 1`] = `
|
||||
<div class="van-tabs__content">
|
||||
<div class="van-tab__pane">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -70,15 +82,19 @@ exports[`renders demo correctly 1`] = `
|
||||
<div class="van-tabs__content">
|
||||
<div class="van-tab__pane">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -93,15 +109,19 @@ exports[`renders demo correctly 1`] = `
|
||||
<div class="van-tabs__content">
|
||||
<div class="van-tab__pane">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -116,15 +136,19 @@ exports[`renders demo correctly 1`] = `
|
||||
<div class="van-tabs__content">
|
||||
<div class="van-tab__pane">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -139,15 +163,19 @@ exports[`renders demo correctly 1`] = `
|
||||
<div class="van-tabs__content">
|
||||
<div class="van-tab__pane">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -162,9 +190,23 @@ exports[`renders demo correctly 1`] = `
|
||||
<div class="van-tabs__content">
|
||||
<div class="van-tab__pane">
|
||||
<!---->
|
||||
<div>
|
||||
<div>
|
||||
<i class="van-icon van-icon-more-o" style="color:undefined;">
|
||||
<!---->
|
||||
</i>选项
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<div>
|
||||
<div>
|
||||
<i class="van-icon van-icon-more-o" style="color:undefined;">
|
||||
<!---->
|
||||
</i>选项
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -179,15 +221,19 @@ exports[`renders demo correctly 1`] = `
|
||||
<div class="van-tabs__content">
|
||||
<div class="van-tab__pane">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
<div class="van-tab__pane" style="display:none;">
|
||||
<!---->
|
||||
<!---->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -19,8 +19,7 @@
|
||||
}"
|
||||
@click="onClick(index)"
|
||||
>
|
||||
<van-node v-if="tab.$slots.title" :node="tab.$slots.title" />
|
||||
<span class="van-ellipsis" v-else>{{ tab.title }}</span>
|
||||
<span class="van-ellipsis" ref="title">{{ tab.title }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -34,7 +33,6 @@
|
||||
import create from '../utils/create';
|
||||
import { raf } from '../utils/raf';
|
||||
import { on, off } from '../utils/event';
|
||||
import VanNode from '../utils/node';
|
||||
import scrollUtils from '../utils/scroll';
|
||||
import Touch from '../mixins/touch';
|
||||
|
||||
@ -43,10 +41,6 @@ export default create({
|
||||
|
||||
mixins: [Touch],
|
||||
|
||||
components: {
|
||||
VanNode
|
||||
},
|
||||
|
||||
model: {
|
||||
prop: 'active'
|
||||
},
|
||||
@ -261,6 +255,14 @@ export default create({
|
||||
}
|
||||
};
|
||||
animate();
|
||||
},
|
||||
|
||||
// render title slot of child tab
|
||||
renderTitle(el, index) {
|
||||
this.$nextTick(() => {
|
||||
const title = this.$refs.title[index];
|
||||
title.parentNode.replaceChild(el, title);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -1,13 +0,0 @@
|
||||
/**
|
||||
* VNode helper
|
||||
*/
|
||||
export default {
|
||||
name: 'van-node',
|
||||
functional: true,
|
||||
props: {
|
||||
node: Array
|
||||
},
|
||||
render(h, ctx) {
|
||||
return ctx.props.node;
|
||||
}
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user