From 6ee73f7715ab30928b93d0e01d1cfdb40ccf6e6d Mon Sep 17 00:00:00 2001 From: wacky6 Date: Wed, 3 May 2017 17:32:38 +0800 Subject: [PATCH] DatePicker: fix, add test for default-value --- packages/date-picker/src/picker.vue | 4 +-- test/unit/specs/date-picker.spec.js | 38 +++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/date-picker/src/picker.vue b/packages/date-picker/src/picker.vue index 6724cca31..8bcd2bebf 100644 --- a/packages/date-picker/src/picker.vue +++ b/packages/date-picker/src/picker.vue @@ -354,7 +354,7 @@ export default { handleClickIcon() { if (this.readonly || this.disabled) return; if (this.showClose) { - this.currentValue = ''; + this.currentValue = this.$options.defaultValue || ''; this.showClose = false; } else { this.pickerVisible = !this.pickerVisible; @@ -431,7 +431,7 @@ export default { }, mountPicker() { - this.panel.defaultValue = this.currentValue; + this.panel.defaultValue = this.defaultValue || this.currentValue; this.picker = new Vue(this.panel).$mount(); this.picker.popperClass = this.popperClass; this.popperElm = this.picker.$el; diff --git a/test/unit/specs/date-picker.spec.js b/test/unit/specs/date-picker.spec.js index ac375cbe8..214f91472 100644 --- a/test/unit/specs/date-picker.spec.js +++ b/test/unit/specs/date-picker.spec.js @@ -202,6 +202,44 @@ describe('DatePicker', () => { }, DELAY); }); + it('default value', done => { + const toDateStr = date => { + let d = new Date(date); + return `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`; + }; + let today = new Date(); + let nextMonth = new Date(today); + nextMonth.setDate(1); + if (nextMonth.getMonth() === 12) { + nextMonth.setFullYear(today.getFullYear + 1); + nextMonth.setMonth(1); + } else { + nextMonth.setMonth(today.getMonth() + 1); + } + let nextMonthStr = toDateStr(nextMonth); + + vm = createVue({ + template: ``, + data() { + return { + value: '' + }; + } + }, true); + + const input = vm.$el.querySelector('input'); + + input.focus(); + setTimeout(_ => { + const $el = vm.$refs.compo.picker.$el; + $el.querySelector('td.current').click(); + setTimeout(_ => { + expect(vm.value).to.equal(nextMonthStr); + }); + done(); + }); + }); + describe('keydown', () => { let input; let keyDown = function(el, keyCode) {