54 lines
1.6 KiB
JavaScript
Raw Normal View History

2020-06-09 16:17:23 +08:00
var e = require("../common/component"), t = require("../mixins/safe-area");
(0, e.VantComponent)({
mixins: [ (0, t.safeArea)() ],
relation: {
name: "tabbar-item",
type: "descendant",
linked: function(e) {
this.children = this.children || [], this.children.push(e), this.setActiveItem();
},
unlinked: function(e) {
this.children = this.children || [], this.children = this.children.filter(function(t) {
return t !== e;
}), this.setActiveItem();
}
},
props: {
active: Number,
activeColor: String,
fixed: {
type: Boolean,
value: !0
},
zIndex: {
type: Number,
value: 1
}
},
watch: {
active: function(e) {
this.currentActive = e, this.setActiveItem();
}
},
created: function() {
this.currentActive = this.data.active;
},
methods: {
setActiveItem: function() {
var e = this;
return Array.isArray(this.children) && this.children.length ? Promise.all(this.children.map(function(t, i) {
return t.setActive({
active: i === e.currentActive,
color: e.data.activeColor
});
})) : Promise.resolve();
},
onChange: function(e) {
var t = this, i = (this.children || []).indexOf(e);
i !== this.currentActive && -1 !== i && (this.currentActive = i, this.setActiveItem().then(function() {
t.$emit("change", i);
}));
}
}
});