feat(TabbarItem): add icon-prefix prop (#5666)

This commit is contained in:
chenjiahan 2020-02-28 15:51:05 +08:00
parent 876b899fec
commit c2e1c03eb6
3 changed files with 17 additions and 3 deletions

View File

@ -20,6 +20,7 @@ export default createComponent({
icon: String, icon: String,
name: [Number, String], name: [Number, String],
info: [Number, String], info: [Number, String],
iconPrefix: String,
}, },
data() { data() {
@ -47,20 +48,31 @@ export default createComponent({
this.$emit('click', event); this.$emit('click', event);
route(this.$router, this); route(this.$router, this);
}, },
genIcon(active) {
const slot = this.slots('icon', { active });
if (slot) {
return slot;
}
if (this.icon) {
return <Icon name={this.icon} classPrefix={this.iconPrefix} />;
}
},
}, },
render() { render() {
const { icon, slots } = this;
const active = this.parent.route ? this.routeActive : this.active; const active = this.parent.route ? this.routeActive : this.active;
const color = this.parent[active ? 'activeColor' : 'inactiveColor']; const color = this.parent[active ? 'activeColor' : 'inactiveColor'];
return ( return (
<div class={bem({ active })} style={{ color }} onClick={this.onClick}> <div class={bem({ active })} style={{ color }} onClick={this.onClick}>
<div class={bem('icon')}> <div class={bem('icon')}>
{slots('icon', { active }) || (icon && <Icon name={icon} />)} {this.genIcon(active)}
<Info dot={this.dot} info={this.info} /> <Info dot={this.dot} info={this.info} />
</div> </div>
<div class={bem('text')}>{slots('default', { active })}</div> <div class={bem('text')}>{this.slots('default', { active })}</div>
</div> </div>
); );
}, },

View File

@ -179,6 +179,7 @@ export default {
|------|------|------|------| |------|------|------|------|
| name | Identifier | *number \| string* | Item index | | name | Identifier | *number \| string* | Item index |
| icon | Icon name | *string* | - | | icon | Icon name | *string* | - |
| icon-prefix `v2.5.3` | Icon className prefix | *string* | `van-icon` |
| dot | Whether to show red dot | *boolean* | - | | dot | Whether to show red dot | *boolean* | - |
| info | Content of the badge | *number \| string* | - | | info | Content of the badge | *number \| string* | - |
| url | Link | *string* | - | | url | Link | *string* | - |

View File

@ -186,6 +186,7 @@ export default {
|------|------|------|------| |------|------|------|------|
| name | 标签名称,作为匹配的标识符 | *number \| string* | 当前标签的索引值 | | name | 标签名称,作为匹配的标识符 | *number \| string* | 当前标签的索引值 |
| icon | [图标名称](#/zh-CN/icon)或图片链接| *string* | - | | icon | [图标名称](#/zh-CN/icon)或图片链接| *string* | - |
| icon-prefix `v2.5.3` | 图标类名前缀,同 Icon 组件的 [class-prefix 属性](#/zh-CN/icon#props) | *string* | `van-icon` |
| dot | 是否显示图标右上角小红点 | *boolean* | `false` | | dot | 是否显示图标右上角小红点 | *boolean* | `false` |
| info | 图标右上角徽标的内容 | *number \| string* | - | | info | 图标右上角徽标的内容 | *number \| string* | - |
| url | 点击后跳转的链接地址 | *string* | - | | url | 点击后跳转的链接地址 | *string* | - |