@@ -3529,4 +3529,81 @@ describe('edge cases and error handling', () => {
35293529 field . handleChange ( undefined )
35303530 expect ( field . state . value ) . toBeUndefined ( )
35313531 } )
3532+
3533+ it ( 'should run listener onReset when field.reset() is called' , ( ) => {
3534+ const form = new FormApi ( {
3535+ defaultValues : {
3536+ name : 'test' ,
3537+ } ,
3538+ } )
3539+
3540+ let triggered : string | undefined
3541+ const field = new FieldApi ( {
3542+ form,
3543+ name : 'name' ,
3544+ listeners : {
3545+ onReset : ( { value } ) => {
3546+ triggered = value
3547+ } ,
3548+ } ,
3549+ } )
3550+
3551+ form . mount ( )
3552+ field . mount ( )
3553+ field . setValue ( 'changed' )
3554+ field . reset ( )
3555+
3556+ expect ( triggered ) . toStrictEqual ( 'test' )
3557+ } )
3558+
3559+ it ( 'should not run onReset listener when form.reset() is called directly' , ( ) => {
3560+ const form = new FormApi ( {
3561+ defaultValues : {
3562+ name : 'test' ,
3563+ } ,
3564+ } )
3565+
3566+ const onReset = vi . fn ( )
3567+ const field = new FieldApi ( {
3568+ form,
3569+ name : 'name' ,
3570+ listeners : {
3571+ onReset,
3572+ } ,
3573+ } )
3574+
3575+ form . mount ( )
3576+ field . mount ( )
3577+ form . reset ( )
3578+
3579+ expect ( onReset ) . not . toHaveBeenCalled ( )
3580+ } )
3581+
3582+ it ( 'should provide value and fieldApi in the onReset listener' , ( ) => {
3583+ const form = new FormApi ( {
3584+ defaultValues : {
3585+ name : 'test' ,
3586+ } ,
3587+ } )
3588+
3589+ let capturedFieldApi : any
3590+ let capturedValue : string | undefined
3591+ const field = new FieldApi ( {
3592+ form,
3593+ name : 'name' ,
3594+ listeners : {
3595+ onReset : ( { value, fieldApi } ) => {
3596+ capturedValue = value
3597+ capturedFieldApi = fieldApi
3598+ } ,
3599+ } ,
3600+ } )
3601+
3602+ form . mount ( )
3603+ field . mount ( )
3604+ field . reset ( )
3605+
3606+ expect ( capturedValue ) . toStrictEqual ( 'test' )
3607+ expect ( capturedFieldApi ) . toBe ( field )
3608+ } )
35323609} )
0 commit comments