64 lines
2.0 KiB
JavaScript
64 lines
2.0 KiB
JavaScript
(0, require("../common/component").VantComponent)({
|
|
classes: [ "main-item-class", "content-item-class", "main-active-class", "content-active-class", "main-disabled-class", "content-disabled-class" ],
|
|
props: {
|
|
items: Array,
|
|
mainActiveIndex: {
|
|
type: Number,
|
|
value: 0
|
|
},
|
|
activeId: {
|
|
type: [ Number, String ]
|
|
},
|
|
maxHeight: {
|
|
type: Number,
|
|
value: 300
|
|
}
|
|
},
|
|
data: {
|
|
subItems: [],
|
|
mainHeight: 0,
|
|
itemHeight: 0
|
|
},
|
|
watch: {
|
|
items: function() {
|
|
var t = this;
|
|
this.updateSubItems().then(function() {
|
|
t.updateMainHeight();
|
|
});
|
|
},
|
|
maxHeight: function() {
|
|
this.updateItemHeight(this.data.subItems), this.updateMainHeight();
|
|
},
|
|
mainActiveIndex: "updateSubItems"
|
|
},
|
|
methods: {
|
|
onSelectItem: function(t) {
|
|
var e = t.currentTarget.dataset.item;
|
|
e.disabled || this.$emit("click-item", e);
|
|
},
|
|
onClickNav: function(t) {
|
|
var e = t.currentTarget.dataset.index;
|
|
this.data.items[e].disabled || this.$emit("click-nav", {
|
|
index: e
|
|
});
|
|
},
|
|
updateSubItems: function() {
|
|
var t = this.data, e = (t.items[t.mainActiveIndex] || {}).children, i = void 0 === e ? [] : e;
|
|
return this.updateItemHeight(i), this.set({
|
|
subItems: i
|
|
});
|
|
},
|
|
updateMainHeight: function() {
|
|
var t = this.data, e = t.items, i = void 0 === e ? [] : e, a = t.subItems, s = void 0 === a ? [] : a, n = Math.max(44 * i.length, 44 * s.length);
|
|
this.set({
|
|
mainHeight: Math.min(n, this.data.maxHeight)
|
|
});
|
|
},
|
|
updateItemHeight: function(t) {
|
|
var e = Math.min(44 * t.length, this.data.maxHeight);
|
|
return this.set({
|
|
itemHeight: e
|
|
});
|
|
}
|
|
}
|
|
}); |