From 12907adee73237d56e13cbd2a663385cdd471a38 Mon Sep 17 00:00:00 2001 From: mxie <15623530290@163.com> Date: Fri, 28 Sep 2018 15:52:16 +0800 Subject: [PATCH] fix: when select time picker option close popup (#154) --- src/calendar.vue | 8 ++++++-- src/index.vue | 4 ++-- src/panel/time.js | 8 +++++++- test/index.spec.js | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/calendar.vue b/src/calendar.vue index 593efe2..d867358 100644 --- a/src/calendar.vue +++ b/src/calendar.vue @@ -64,7 +64,8 @@ :value="value" :disabled-time="isDisabledTime" :time-type="timeType" - @select="selectTime" /> + @select="selectTime" + @pick="pickTime" /> @@ -323,7 +324,10 @@ export default { this.showPanelDate() }, selectTime (time) { - this.$emit('select-time', time) + this.$emit('select-time', time, false) + }, + pickTime (time) { + this.$emit('select-time', time, true) }, changeCalendarYear (year) { this.now = new Date(year, this.calendarMonth) diff --git a/src/index.vue b/src/index.vue index b85d8e5..4f63c5d 100644 --- a/src/index.vue +++ b/src/index.vue @@ -365,9 +365,9 @@ export default { this.updateDate() } }, - selectTime (time) { + selectTime (time, close) { this.currentValue = time - this.updateDate() + this.updateDate() && close && this.closePopup() }, selectStartTime (time) { this.selectStartDate(time) diff --git a/src/panel/time.js b/src/panel/time.js index d2a819e..9d29a84 100644 --- a/src/panel/time.js +++ b/src/panel/time.js @@ -44,6 +44,12 @@ export default { } this.$emit('select', new Date(time)) }, + pickTime (time) { + if (typeof this.disabledTime === 'function' && this.disabledTime(time)) { + return + } + this.$emit('pick', new Date(time)) + }, getTimeSelectOptions () { const result = [] const options = this.timePickerOptions @@ -96,7 +102,7 @@ export default { 'actived': pickHours === this.currentHours && pickMinutes === this.currentMinutes, 'disabled': disabledTime && disabledTime(time) }} - onClick={this.selectTime.bind(this, time)}>{picker.label} + onClick={this.pickTime.bind(this, time)}>{picker.label} ) }) return ( diff --git a/test/index.spec.js b/test/index.spec.js index 110d137..f641aeb 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -609,7 +609,7 @@ describe('time-panel', () => { cells.at(0).trigger('click') const emitted = wrapper.emitted() expect(emitted).toEqual({ - select: [[new Date(2018, 5, 5, 1)]] + pick: [[new Date(2018, 5, 5, 1)]] }) }) })