diff --git a/CHANGE.md b/CHANGE.md index ebf1cace..eb4c71f0 100644 --- a/CHANGE.md +++ b/CHANGE.md @@ -1,7 +1,7 @@ ### Button 可以考虑是否支持 @click,而不用 @click.native ### Input -使用 v-model +使用 v-model,增加 on-input-change // todo 考虑更名 ### RadioGroup 使用 v-model ### Radio @@ -44,4 +44,5 @@ Caspanel 的 sublist 从 prop -> data ### Select model 改为 value,支持 v-model ### Page -class 改为 className \ No newline at end of file +class 改为 className +### DatePicker diff --git a/README.md b/README.md index 942732d5..b1d1bc83 100644 --- a/README.md +++ b/README.md @@ -27,14 +27,14 @@ - [ ] Table - [x] Select - [x] Slider -- [ ] DatePicker -- [ ] TimePicker +- [x] DatePicker +- [x] TimePicker - [x] Cascader -- [ ] Transfer +- [x] Transfer - [x] InputNumber - [x] Rate - [x] Upload -- [ ] Form +- [x] Form - [x] Alert - [x] Card - [ ] Message diff --git a/examples/app.vue b/examples/app.vue index 3e790f68..60183faf 100644 --- a/examples/app.vue +++ b/examples/app.vue @@ -47,6 +47,8 @@ li + li { border-left: solid 1px #bbb; padding-left: 10px; margin-left: 10px; }
  • Backtop
  • Page
  • Transfer
  • +
  • Date
  • +
  • Form
  • diff --git a/examples/main.js b/examples/main.js index 99accb3b..99f08700 100644 --- a/examples/main.js +++ b/examples/main.js @@ -42,12 +42,12 @@ const router = new VueRouter({ component: require('./routers/checkbox.vue') }, { - path: '/steps', - component: require('./routers/steps.vue') + path: '/steps', + component: require('./routers/steps.vue') }, { - path: '/timeline', - component: require('./routers/timeline.vue') + path: '/timeline', + component: require('./routers/timeline.vue') }, { path: '/switch', @@ -152,7 +152,15 @@ const router = new VueRouter({ { path: '/transfer', component: require('./routers/transfer.vue') - } + }, + { + path: '/date', + component: require('./routers/date.vue') + }, + { + path: '/form', + component: require('./routers/form.vue') + }, ] }); diff --git a/examples/routers/date.vue b/examples/routers/date.vue index ab2476fa..4d1751c1 100644 --- a/examples/routers/date.vue +++ b/examples/routers/date.vue @@ -1,14 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/routers/form.vue b/examples/routers/form.vue index ba1484e1..472b44ec 100644 --- a/examples/routers/form.vue +++ b/examples/routers/form.vue @@ -1,21 +1,17 @@ @@ -23,27 +19,30 @@ export default { data () { return { - formValidate: { - input: '123', - ajax: true + formInline: { + user: '', + password: '' }, - ruleValidate: { - + ruleInline: { + user: [ + { required: true, message: '请填写用户名', trigger: 'blur' } + ], + password: [ + { required: true, message: '请填写密码', trigger: 'blur' }, + { type: 'string', min: 6, message: '密码长度不能小于6位', trigger: 'blur' } + ] } } }, methods: { - handleSubmit (name) { + handleSubmit(name) { this.$refs[name].validate((valid) => { if (valid) { - this.$Message.success('提交成功!'); + console.log('success'); } else { - this.$Message.error('表单验证失败!'); + console.log('fail') } }) - }, - handleReset (name) { - this.$refs[name].resetFields(); } } } diff --git a/src/components/date-picker/base/confirm.vue b/src/components/date-picker/base/confirm.vue index 551174c4..00f1e445 100644 --- a/src/components/date-picker/base/confirm.vue +++ b/src/components/date-picker/base/confirm.vue @@ -4,8 +4,8 @@ - {{ t('i.datepicker.clear') }} - {{ t('i.datepicker.ok') }} + {{ t('i.datepicker.clear') }} + {{ t('i.datepicker.ok') }} diff --git a/src/components/date-picker/picker/date-picker.js b/src/components/date-picker/picker/date-picker.js index 8e0a33c4..c6b67dae 100644 --- a/src/components/date-picker/picker/date-picker.js +++ b/src/components/date-picker/picker/date-picker.js @@ -23,11 +23,11 @@ export default { value: {} }, created () { - if (!this.value) { + if (!this.currentValue) { if (this.type === 'daterange' || this.type === 'datetimerange') { - this.value = ['','']; + this.currentValue = ['','']; } else { - this.value = ''; + this.currentValue = ''; } } diff --git a/src/components/date-picker/picker/time-picker.js b/src/components/date-picker/picker/time-picker.js index b0f77c03..7925596a 100644 --- a/src/components/date-picker/picker/time-picker.js +++ b/src/components/date-picker/picker/time-picker.js @@ -24,11 +24,11 @@ export default { value: {} }, created () { - if (!this.value) { + if (!this.currentValue) { if (this.type === 'timerange') { - this.value = ['','']; + this.currentValue = ['','']; } else { - this.value = ''; + this.currentValue = ''; } } this.panel = getPanel(this.type); diff --git a/src/components/form/form-item.vue b/src/components/form/form-item.vue index bb44f6fc..d64c9b65 100644 --- a/src/components/form/form-item.vue +++ b/src/components/form/form-item.vue @@ -3,7 +3,9 @@
    -
    {{ validateMessage }}
    + +
    {{ validateMessage }}
    +
    @@ -11,6 +13,7 @@ // https://github.com/ElemeFE/element/blob/dev/packages/form/src/form-item.vue import AsyncValidator from 'async-validator'; + import Emitter from '../../mixins/emitter'; const prefixCls = 'ivu-form-item'; @@ -38,6 +41,8 @@ } export default { + name: 'FormItem', + mixins: [ Emitter ], props: { label: { type: String, @@ -206,9 +211,9 @@ this.validate('change'); } }, - ready () { + mounted () { if (this.prop) { - this.$dispatch('on-form-item-add', this); + this.dispatch('iForm', 'on-form-item-add', this); Object.defineProperty(this, 'initialValue', { value: this.fieldValue @@ -229,7 +234,7 @@ } }, beforeDestroy () { - this.$dispatch('on-form-item-remove', this); + this.dispatch('iForm', 'on-form-item-remove', this); } }; \ No newline at end of file diff --git a/src/components/form/form.vue b/src/components/form/form.vue index 65eeec8a..98f4614c 100644 --- a/src/components/form/form.vue +++ b/src/components/form/form.vue @@ -82,15 +82,15 @@ this.validate(); } }, - events: { - 'on-form-item-add' (field) { + created () { + this.$on('on-form-item-add', (field) => { if (field) this.fields.push(field); return false; - }, - 'on-form-item-remove' (field) { + }); + this.$on('on-form-item-remove', (field) => { if (field.prop) this.fields.splice(this.fields.indexOf(field), 1); return false; - } + }); } }; \ No newline at end of file diff --git a/src/components/input/input.vue b/src/components/input/input.vue index eb87d804..33982e2a 100644 --- a/src/components/input/input.vue +++ b/src/components/input/input.vue @@ -19,7 +19,8 @@ @keyup.enter="handleEnter" @focus="handleFocus" @blur="handleBlur" - @input="handleInput"> + @input="handleInput" + @change="handleChange">