From 376a7ef4125a83d18f5b8350b6e28ee2e596a280 Mon Sep 17 00:00:00 2001 From: mengxiong10 <15623530290@163.com> Date: Fri, 6 Mar 2020 16:57:06 +0800 Subject: [PATCH] feat: ignore whitespace around separator on manual range input (#416) --- __test__/date-picker.test.js | 21 ++++++++++++++++++++- src/date-picker.vue | 4 ++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/__test__/date-picker.test.js b/__test__/date-picker.test.js index f362054..6d2ccba 100644 --- a/__test__/date-picker.test.js +++ b/__test__/date-picker.test.js @@ -355,8 +355,8 @@ describe('DatePicker', () => { it('should emit pick event on first click', () => { wrapper = mount(DatePicker, { - range: true, propsData: { + range: true, open: true, defaultValue: new Date(2019, 9, 1), }, @@ -365,4 +365,23 @@ describe('DatePicker', () => { td.trigger('click'); expect(wrapper.emitted().pick[0][0]).toEqual(new Date(2019, 8, 29)); }); + + it('Ignore whitespace around separator on manual range input', () => { + const rangeSeparator = ' ~ '; + const text = '2020-02-12'; + wrapper = mount(DatePicker, { + propsData: { + range: true, + rangeSeparator: ' ~ ', + valueType: 'format', + }, + }); + const input = wrapper.find('input'); + + input.setValue(`${text} ${rangeSeparator} ${text}`); + input.trigger('change'); + input.setValue(`${text}${rangeSeparator.trim()}${text}`); + input.trigger('change'); + expect(wrapper.emitted().input).toEqual([[[text, text]], [[text, text]]]); + }); }); diff --git a/src/date-picker.vue b/src/date-picker.vue index 5ada0e4..694c5f6 100644 --- a/src/date-picker.vue +++ b/src/date-picker.vue @@ -419,14 +419,14 @@ export default { }, handleInputChange() { if (!this.editable || this.userInput === null) return; - const text = this.userInput; + const text = this.userInput.trim(); this.userInput = null; if (text === '') { this.handleClear(); return; } const date = this.range - ? text.split(this.rangeSeparator).map(v => this.parseDate(v, this.format)) + ? text.split(this.rangeSeparator.trim()).map(v => this.parseDate(v.trim(), this.format)) : this.parseDate(text, this.format); if (this.isValidValue(date)) { this.emitValue(date);