48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
import { VantComponent } from '../common/component';
|
|
VantComponent({
|
|
props: {
|
|
info: null,
|
|
name: null,
|
|
icon: String,
|
|
dot: Boolean
|
|
},
|
|
relation: {
|
|
name: 'tabbar',
|
|
type: 'ancestor'
|
|
},
|
|
data: {
|
|
active: false
|
|
},
|
|
methods: {
|
|
onClick() {
|
|
if (this.parent) {
|
|
this.parent.onChange(this);
|
|
}
|
|
this.$emit('click');
|
|
},
|
|
updateFromParent() {
|
|
const { parent } = this;
|
|
if (!parent) {
|
|
return;
|
|
}
|
|
const index = parent.children.indexOf(this);
|
|
const parentData = parent.data;
|
|
const { data } = this;
|
|
const active = (data.name || index) === parentData.active;
|
|
const patch = {};
|
|
if (active !== data.active) {
|
|
patch.active = active;
|
|
}
|
|
if (parentData.activeColor !== data.activeColor) {
|
|
patch.activeColor = parentData.activeColor;
|
|
}
|
|
if (parentData.inactiveColor !== data.inactiveColor) {
|
|
patch.inactiveColor = parentData.inactiveColor;
|
|
}
|
|
return Object.keys(patch).length > 0
|
|
? this.set(patch)
|
|
: Promise.resolve();
|
|
}
|
|
}
|
|
});
|