1
1
import { nextTick , reactive , ref , unref } from 'vue'
2
+ import setWith from 'lodash.setwith'
2
3
import { VALIDATION_MODE } from '../shared/constant'
3
4
import type { FieldError , FieldErrors } from '../types/errors'
4
5
import type { Field , FieldElement , FieldValues , Fields } from '../types/filed'
@@ -50,11 +51,7 @@ export function creatFormControl<TFieldValues extends FieldValues = FieldValues>
50
51
51
52
const _formState = reactive < TFormState > ( {
52
53
get isDirty ( ) {
53
- if ( isEmptyObject ( _formState . dirtyFields ) ) {
54
- return false
55
- }
56
-
57
- return true
54
+ return ! isEmptyObject ( _formState . dirtyFields )
58
55
} ,
59
56
isValidating : false ,
60
57
dirtyFields : { } as FieldNamesMarkedBoolean < TFieldValues > ,
@@ -81,7 +78,7 @@ export function creatFormControl<TFieldValues extends FieldValues = FieldValues>
81
78
}
82
79
83
80
const _setFormStateError = ( fieldName : FieldsKey , error : FieldError ) => {
84
- set ( _formState . errors , fieldName , error )
81
+ setWith ( _formState . errors , fieldName , error )
85
82
}
86
83
87
84
const _getFormStateError = ( fieldName ?: FieldsKey ) => fieldName ? get ( _formState . errors , fieldName ) : _formState . errors
@@ -418,9 +415,9 @@ export function creatFormControl<TFieldValues extends FieldValues = FieldValues>
418
415
} = options
419
416
420
417
const defaultVal = options ?. value
421
- || get ( _defaultValues , fieldName as string )
422
- || get ( _fieldArrayDefaultValues , ( fieldName as string ) . split ( '.' ) . find ( item => isNumber ( parseInt ( item ) ) ) )
423
- || ''
418
+ || get ( _defaultValues , fieldName as string )
419
+ || get ( _fieldArrayDefaultValues , ( fieldName as string ) . split ( '.' ) . find ( item => isNumber ( parseInt ( item ) ) ) )
420
+ || ''
424
421
425
422
if ( ! field ) {
426
423
_setFields ( fieldName , {
@@ -460,12 +457,12 @@ export function creatFormControl<TFieldValues extends FieldValues = FieldValues>
460
457
}
461
458
}
462
459
463
- const handleValueChange = async ( input : InputEvent | any ) => {
460
+ const handleValueChange = ( input : InputEvent | any ) => {
464
461
field . inputValue . value = ( input ?. target as any ) ?. value || input || ''
465
462
466
463
_handleAllDirtyFieldsOperate ( fieldName )
467
464
if ( validationModeBeforeSubmit . isOnChange ) {
468
- await _onChange ( fieldName )
465
+ _onChange ( fieldName )
469
466
}
470
467
}
471
468
0 commit comments