2020-06-09 16:17:23 +08:00

110 lines
3.9 KiB
JavaScript

var e = require("../common/component"), t = require("./shared");
(0, e.VantComponent)({
classes: [ "active-class", "toolbar-class", "column-class" ],
props: Object.assign({}, t.pickerProps, {
valueKey: {
type: String,
value: "text"
},
defaultIndex: {
type: Number,
value: 0
},
columns: {
type: Array,
value: [],
observer: function() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
this.simple = e.length && !e[0].values, this.children = this.selectAllComponents(".van-picker__column"),
Array.isArray(this.children) && this.children.length && this.setColumns().catch(function() {});
}
}
}),
beforeCreate: function() {
this.children = [];
},
methods: {
noop: function() {},
setColumns: function() {
var e = this, t = this.data, n = (this.simple ? [ {
values: t.columns
} ] : t.columns).map(function(t, n) {
return e.setColumnValues(n, t.values);
});
return Promise.all(n);
},
emit: function(e) {
var t = e.currentTarget.dataset.type;
this.simple ? this.$emit(t, {
value: this.getColumnValue(0),
index: this.getColumnIndex(0)
}) : this.$emit(t, {
value: this.getValues(),
index: this.getIndexes()
});
},
onChange: function(e) {
this.simple ? this.$emit("change", {
picker: this,
value: this.getColumnValue(0),
index: this.getColumnIndex(0)
}) : this.$emit("change", {
picker: this,
value: this.getValues(),
index: e.currentTarget.dataset.index
});
},
getColumn: function(e) {
return this.children[e];
},
getColumnValue: function(e) {
var t = this.getColumn(e);
return t && t.getValue();
},
setColumnValue: function(e, t) {
var n = this.getColumn(e);
return null == n ? Promise.reject("setColumnValue: 对应列不存在") : n.setValue(t);
},
getColumnIndex: function(e) {
return (this.getColumn(e) || {}).data.currentIndex;
},
setColumnIndex: function(e, t) {
var n = this.getColumn(e);
return null == n ? Promise.reject("setColumnIndex: 对应列不存在") : n.setIndex(t);
},
getColumnValues: function(e) {
return (this.children[e] || {}).data.options;
},
setColumnValues: function(e, t) {
var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], s = this.children[e];
return null == s ? Promise.reject("setColumnValues: 对应列不存在") : JSON.stringify(s.data.options) === JSON.stringify(t) ? Promise.resolve() : s.set({
options: t
}).then(function() {
n && s.setIndex(0);
});
},
getValues: function() {
return this.children.map(function(e) {
return e.getValue();
});
},
setValues: function(e) {
var t = this, n = e.map(function(e, n) {
return t.setColumnValue(n, e);
});
return Promise.all(n);
},
getIndexes: function() {
return this.children.map(function(e) {
return e.data.currentIndex;
});
},
setIndexes: function(e) {
var t = this, n = e.map(function(e, n) {
return t.setColumnIndex(n, e);
});
return Promise.all(n);
}
}
});