From 80fc7024f84f49450998db1f7ef6477a35b04795 Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 25 Oct 2019 17:15:50 +0800 Subject: [PATCH] fix(DatetimePicker): incorrecrt initial value when use min-date and filter (#4837) --- src/datetime-picker/shared.js | 4 ++++ src/datetime-picker/test/date-picker.spec.js | 25 ++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/datetime-picker/shared.js b/src/datetime-picker/shared.js index 4ba3b887f..a247c11bb 100644 --- a/src/datetime-picker/shared.js +++ b/src/datetime-picker/shared.js @@ -60,6 +60,10 @@ export const TimePickerMixin = { mounted() { this.updateColumnValue(); + + this.$nextTick(() => { + this.updateInnerValue(); + }); }, methods: { diff --git a/src/datetime-picker/test/date-picker.spec.js b/src/datetime-picker/test/date-picker.spec.js index fca326e97..633508e9e 100644 --- a/src/datetime-picker/test/date-picker.spec.js +++ b/src/datetime-picker/test/date-picker.spec.js @@ -110,3 +110,28 @@ test('dynamic set value', () => { expect(wrapper.emitted('confirm')[0][0].getFullYear()).toEqual(2019); expect(wrapper.emitted('confirm')[1][0].getFullYear()).toEqual(2025); }); + +test('use min-date with filter', async () => { + const minDate = new Date(2030, 0, 0, 0, 3); + const maxDate = new Date(2040, 0, 0, 0, 0); + + const wrapper = mount(DatePicker, { + propsData: { + minDate, + maxDate, + value: new Date(2020, 0, 0, 0, 0), + filter(type, values) { + if (type === 'minute') { + return values.filter(value => value % 30 === 0); + } + + return values; + } + } + }); + + await later(); + + wrapper.find('.van-picker__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[0][0]).toEqual(new Date(2030, 0, 0, 0, 30)); +});