| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 | "use strict";var __assign = (this && this.__assign) || function () {    __assign = Object.assign || function(t) {        for (var s, i = 1, n = arguments.length; i < n; i++) {            s = arguments[i];            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))                t[p] = s[p];        }        return t;    };    return __assign.apply(this, arguments);};Object.defineProperty(exports, "__esModule", { value: true });var component_1 = require("../common/component");var shared_1 = require("./shared");(0, component_1.VantComponent)({    classes: ['active-class', 'toolbar-class', 'column-class'],    props: __assign(__assign({}, shared_1.pickerProps), { valueKey: {            type: String,            value: 'text',        }, toolbarPosition: {            type: String,            value: 'top',        }, defaultIndex: {            type: Number,            value: 0,        }, columns: {            type: Array,            value: [],            observer: function (columns) {                if (columns === void 0) { columns = []; }                this.simple = columns.length && !columns[0].values;                if (Array.isArray(this.children) && this.children.length) {                    this.setColumns().catch(function () { });                }            },        } }),    beforeCreate: function () {        var _this = this;        Object.defineProperty(this, 'children', {            get: function () { return _this.selectAllComponents('.van-picker__column') || []; },        });    },    methods: {        noop: function () { },        setColumns: function () {            var _this = this;            var data = this.data;            var columns = this.simple ? [{ values: data.columns }] : data.columns;            var stack = columns.map(function (column, index) {                return _this.setColumnValues(index, column.values);            });            return Promise.all(stack);        },        emit: function (event) {            var type = event.currentTarget.dataset.type;            if (this.simple) {                this.$emit(type, {                    value: this.getColumnValue(0),                    index: this.getColumnIndex(0),                });            }            else {                this.$emit(type, {                    value: this.getValues(),                    index: this.getIndexes(),                });            }        },        onChange: function (event) {            if (this.simple) {                this.$emit('change', {                    picker: this,                    value: this.getColumnValue(0),                    index: this.getColumnIndex(0),                });            }            else {                this.$emit('change', {                    picker: this,                    value: this.getValues(),                    index: event.currentTarget.dataset.index,                });            }        },        // get column instance by index        getColumn: function (index) {            return this.children[index];        },        // get column value by index        getColumnValue: function (index) {            var column = this.getColumn(index);            return column && column.getValue();        },        // set column value by index        setColumnValue: function (index, value) {            var column = this.getColumn(index);            if (column == null) {                return Promise.reject(new Error('setColumnValue: 对应列不存在'));            }            return column.setValue(value);        },        // get column option index by column index        getColumnIndex: function (columnIndex) {            return (this.getColumn(columnIndex) || {}).data.currentIndex;        },        // set column option index by column index        setColumnIndex: function (columnIndex, optionIndex) {            var column = this.getColumn(columnIndex);            if (column == null) {                return Promise.reject(new Error('setColumnIndex: 对应列不存在'));            }            return column.setIndex(optionIndex);        },        // get options of column by index        getColumnValues: function (index) {            return (this.children[index] || {}).data.options;        },        // set options of column by index        setColumnValues: function (index, options, needReset) {            if (needReset === void 0) { needReset = true; }            var column = this.children[index];            if (column == null) {                return Promise.reject(new Error('setColumnValues: 对应列不存在'));            }            var isSame = JSON.stringify(column.data.options) === JSON.stringify(options);            if (isSame) {                return Promise.resolve();            }            return column.set({ options: options }).then(function () {                if (needReset) {                    column.setIndex(0);                }            });        },        // get values of all columns        getValues: function () {            return this.children.map(function (child) { return child.getValue(); });        },        // set values of all columns        setValues: function (values) {            var _this = this;            var stack = values.map(function (value, index) {                return _this.setColumnValue(index, value);            });            return Promise.all(stack);        },        // get indexes of all columns        getIndexes: function () {            return this.children.map(function (child) { return child.data.currentIndex; });        },        // set indexes of all columns        setIndexes: function (indexes) {            var _this = this;            var stack = indexes.map(function (optionIndex, columnIndex) {                return _this.setColumnIndex(columnIndex, optionIndex);            });            return Promise.all(stack);        },    },});
 |