File tree Expand file tree Collapse file tree 3 files changed +34
-2
lines changed
Expand file tree Collapse file tree 3 files changed +34
-2
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' vee-validate ' : patch
3+ ---
4+
5+ fix: reset form should merge values closes #4320
Original file line number Diff line number Diff line change @@ -1050,8 +1050,8 @@ function useFormInitialValues<TValues extends GenericObject>(
10501050 const originalInitialValues = ref < PartialDeep < TValues > > ( deepCopy ( values ) ) as Ref < PartialDeep < TValues > > ;
10511051
10521052 function setInitialValues ( values : PartialDeep < TValues > , updateFields = false ) {
1053- initialValues . value = deepCopy ( values ) ;
1054- originalInitialValues . value = deepCopy ( values ) ;
1053+ initialValues . value = merge ( deepCopy ( initialValues . value ) || { } , deepCopy ( values ) ) ;
1054+ originalInitialValues . value = merge ( deepCopy ( originalInitialValues . value ) || { } , deepCopy ( values ) ) ;
10551055
10561056 if ( ! updateFields ) {
10571057 return ;
Original file line number Diff line number Diff line change @@ -719,6 +719,33 @@ describe('useForm()', () => {
719719 expect ( meta . validated ) . toBe ( false ) ;
720720 } ) ;
721721
722+ // #4320
723+ test ( 'Initial values are merged with previous values to ensure meta.dirty is stable' , async ( ) => {
724+ let meta ! : Ref < FieldMeta < any > > ;
725+
726+ mountWithHoc ( {
727+ setup ( ) {
728+ const { resetForm, meta : fm } = useForm ( ) ;
729+ useField ( 'name' ) ;
730+ useField ( 'email' ) ;
731+
732+ meta = fm ;
733+
734+ onMounted ( ( ) => {
735+ resetForm ( { values : { name : 'test' } } ) ;
736+ } ) ;
737+
738+ return { } ;
739+ } ,
740+ template : `
741+ <div></div>
742+ ` ,
743+ } ) ;
744+
745+ await flushPromises ( ) ;
746+ expect ( meta . value . dirty ) . toBe ( false ) ;
747+ } ) ;
748+
722749 // #3991
723750 test ( 'initial value should not be mutable if nested field model is used' , async ( ) => {
724751 let model ! : Ref < { name : string } > ;
You can’t perform that action at this time.
0 commit comments