未验证 提交 0c9d8549 编写于 作者: X xiaohuapunk 提交者: GitHub

Create picker.js

add picker component
上级 c10346b7
import {
emitter
} from '../mixins'
function getPicker (weex) {
const picker = weex.requireModule('picker')
const mode = {
SELECTOR: 'selector',
TIME: 'time',
DATE: 'date'
}
return {
name: 'Picker',
mixins: [emitter],
props: {
range: {
type: Array,
default () {
return []
}
},
rangeKey: {
type: String,
default: ''
},
value: {
type: [Number, String],
default: 0
},
mode: {
type: String,
default: mode.SELECTOR,
validator (val) {
return Object.values(mode).indexOf(val) >= 0
}
},
start: {
type: String,
default () {
if (this.mode === mode.TIME) {
return '00:00'
}
if (this.mode === mode.DATE) {
const year = (new Date()).getFullYear() - 100
return year + '-01-01'
}
return ''
}
},
end: {
type: String,
default () {
if (this.mode === mode.TIME) {
return '23:59'
}
if (this.mode === mode.DATE) {
const year = (new Date()).getFullYear() + 100
return year + '-12-31'
}
return ''
}
},
disabled: {
type: [Boolean, String],
default: false
}
},
methods: {
onClick () {
let data
let method
switch (this.mode) {
case mode.SELECTOR:
method = 'pick'
data = {
index: Number(this.value) || 0,
items: this.range.map(item => typeof item === 'object' ? item[this.rangeKey] || '' : item)
}
break
case mode.DATE:
method = 'pickDate'
data = {
value: this.value,
min: this.start,
max: this.end
}
break
case mode.TIME:
method = 'pickTime'
data = {
value: this.value
}
break
}
picker[method](data, event => {
if (event.result === 'success') {
const value = event.data
this.$trigger('change', {
value
})
}
else {
this.$trigger('cancel')
}
})
}
},
render (createElement) {
const event = {}
if (!this.disabled) {
event.click = this.onClick
}
return createElement('div', this._g({
on: event
}, this.$listener), this.$slots.default, 2)
}
}
}
export default function init (Vue, weex) {
Vue.component('picker', getPicker(weex))
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册