Commit 72f225e9387d289ca323b9d834a5f2bde86ca93f
1 parent
22ff9a62
Fix date manual input so it falls back to old value when parser don't parse the input
Showing
1 changed file
with
3 additions
and
3 deletions
Show diff stats
src/components/date-picker/picker.vue
@@ -255,8 +255,9 @@ | @@ -255,8 +255,9 @@ | ||
255 | this.options.disabledDate; | 255 | this.options.disabledDate; |
256 | const valueToTest = isArrayValue ? newDate : newDate[0]; | 256 | const valueToTest = isArrayValue ? newDate : newDate[0]; |
257 | const isDisabled = disabledDateFn && disabledDateFn(valueToTest); | 257 | const isDisabled = disabledDateFn && disabledDateFn(valueToTest); |
258 | + const isValidDate = newDate.reduce((valid, date) => valid && date instanceof Date, true); | ||
258 | 259 | ||
259 | - if (newValue !== oldValue && !isDisabled) { | 260 | + if (newValue !== oldValue && !isDisabled && isValidDate) { |
260 | this.emitChange(); | 261 | this.emitChange(); |
261 | this.internalValue = newDate; | 262 | this.internalValue = newDate; |
262 | } else { | 263 | } else { |
@@ -324,7 +325,7 @@ | @@ -324,7 +325,7 @@ | ||
324 | } | 325 | } |
325 | } | 326 | } |
326 | } else if (typeof val === 'string' && type.indexOf('time') !== 0){ | 327 | } else if (typeof val === 'string' && type.indexOf('time') !== 0){ |
327 | - val = parser(val, format) || val; | 328 | + val = parser(val, format) || null; |
328 | } | 329 | } |
329 | 330 | ||
330 | return (isRange || this.multiple) ? (val || []) : [val]; | 331 | return (isRange || this.multiple) ? (val || []) : [val]; |
@@ -344,7 +345,6 @@ | @@ -344,7 +345,6 @@ | ||
344 | } | 345 | } |
345 | }, | 346 | }, |
346 | onPick(dates, visible = false) { | 347 | onPick(dates, visible = false) { |
347 | - | ||
348 | if (this.multiple){ | 348 | if (this.multiple){ |
349 | const allDates = [...this.internalValue, dates].filter(Boolean); | 349 | const allDates = [...this.internalValue, dates].filter(Boolean); |
350 | const timeStamps = allDates.map(date => date.getTime()).filter((ts, i, arr) => arr.indexOf(ts) === i); // filter away duplicates | 350 | const timeStamps = allDates.map(date => date.getTime()).filter((ts, i, arr) => arr.indexOf(ts) === i); // filter away duplicates |