You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.9 KiB
76 lines
1.9 KiB
5 years ago
|
import baseComponent from '../helpers/baseComponent'
|
||
|
import classNames from '../helpers/classNames'
|
||
|
import { getSelectIndex } from '../popup-select/utils'
|
||
|
|
||
|
const defaults = {
|
||
|
prefixCls: 'wux-select',
|
||
|
value: '',
|
||
|
options: [],
|
||
|
multiple: false,
|
||
|
max: -1,
|
||
|
toolbar: {
|
||
|
title: '请选择',
|
||
|
cancelText: '取消',
|
||
|
confirmText: '确定',
|
||
|
},
|
||
|
onChange() {},
|
||
|
onConfirm() {},
|
||
|
onCancel() {},
|
||
|
}
|
||
|
|
||
|
function runCallbacks(method, values, vm) {
|
||
|
const { value } = values
|
||
|
const { options, multiple } = vm.data
|
||
|
const index = getSelectIndex(options, value, multiple)
|
||
|
if (typeof vm.fns[method] === 'function') {
|
||
|
vm.fns[method].call(vm, value, index, options)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
baseComponent({
|
||
|
useFunc: true,
|
||
|
data: defaults,
|
||
|
methods: {
|
||
|
/**
|
||
|
* 打开
|
||
|
*/
|
||
|
open(opts = {}) {
|
||
|
const options = this.$$mergeOptionsAndBindMethods(Object.assign({}, defaults, opts, {
|
||
|
max: parseInt(opts.max),
|
||
|
}))
|
||
|
this.$$setData({ visible: true, ...options })
|
||
|
},
|
||
|
/**
|
||
|
* 关闭
|
||
|
*/
|
||
|
close(callback) {
|
||
|
this.select = this.select || this.selectComponent('#wux-popup-select')
|
||
|
this.select && this.select.close(callback)
|
||
|
},
|
||
|
/**
|
||
|
* 点击确定按钮时的回调函数
|
||
|
*/
|
||
|
onConfirm(e) {
|
||
|
return runCallbacks('onConfirm', e.detail, this)
|
||
|
},
|
||
|
/**
|
||
|
* 点击取消按钮时的回调函数
|
||
|
*/
|
||
|
onCancel(e) {
|
||
|
return runCallbacks('onCancel', e.detail, this)
|
||
|
},
|
||
|
/**
|
||
|
* 每列数据选择变化后的回调函数
|
||
|
*/
|
||
|
onValueChange(e) {
|
||
|
return runCallbacks('onChange', e.detail, this)
|
||
|
},
|
||
|
/**
|
||
|
* 当显隐状态变化时回调函数
|
||
|
*/
|
||
|
onVisibleChange(e) {
|
||
|
this.$$setData({ visible: e.detail.visible })
|
||
|
},
|
||
|
},
|
||
|
})
|