Commit d9ff845f63632050909fe394184b2bdaf976c545
1 parent
2fb29fae
Emit input event in mounted if parsed value diffs
Showing
1 changed file
with
8 additions
and
5 deletions
Show diff stats
src/components/date-picker/picker.vue
| @@ -135,9 +135,6 @@ | @@ -135,9 +135,6 @@ | ||
| 135 | }, | 135 | }, |
| 136 | default: 'bottom-start' | 136 | default: 'bottom-start' |
| 137 | }, | 137 | }, |
| 138 | - options: { | ||
| 139 | - type: Object | ||
| 140 | - }, | ||
| 141 | transfer: { | 138 | transfer: { |
| 142 | type: Boolean, | 139 | type: Boolean, |
| 143 | default: false | 140 | default: false |
| @@ -250,7 +247,7 @@ | @@ -250,7 +247,7 @@ | ||
| 250 | typeof this.options.disabledDate === 'function' && | 247 | typeof this.options.disabledDate === 'function' && |
| 251 | this.options.disabledDate; | 248 | this.options.disabledDate; |
| 252 | const valueToTest = isArrayValue ? newDate : newDate[0]; | 249 | const valueToTest = isArrayValue ? newDate : newDate[0]; |
| 253 | - const isDisabled = disabledDateFn && disabledDateFn(valueToTest) | 250 | + const isDisabled = disabledDateFn && disabledDateFn(valueToTest); |
| 254 | 251 | ||
| 255 | if (newValue !== oldValue && !isDisabled) { | 252 | if (newValue !== oldValue && !isDisabled) { |
| 256 | this.emitChange(); | 253 | this.emitChange(); |
| @@ -375,10 +372,16 @@ | @@ -375,10 +372,16 @@ | ||
| 375 | publicValue(now, before){ | 372 | publicValue(now, before){ |
| 376 | const newValue = JSON.stringify(now); | 373 | const newValue = JSON.stringify(now); |
| 377 | const oldValue = JSON.stringify(before); | 374 | const oldValue = JSON.stringify(before); |
| 378 | - if (newValue !== oldValue) this.$emit('input', now); // to update v-model | 375 | + const shouldEmitInput = newValue !== oldValue || typeof now !== typeof before; |
| 376 | + if (shouldEmitInput) this.$emit('input', now); // to update v-model | ||
| 379 | }, | 377 | }, |
| 380 | }, | 378 | }, |
| 381 | mounted () { | 379 | mounted () { |
| 380 | + const initialValue = this.value; | ||
| 381 | + const parsedValue = this.publicValue; | ||
| 382 | + if (typeof initialValue !== typeof parsedValue || JSON.stringify(initialValue) !== JSON.stringify(parsedValue)){ | ||
| 383 | + this.$emit('input', this.publicValue); // to update v-model | ||
| 384 | + } | ||
| 382 | if (this.open !== null) this.visible = this.open; | 385 | if (this.open !== null) this.visible = this.open; |
| 383 | } | 386 | } |
| 384 | }; | 387 | }; |