Skip to content

Commit 97c2bbd

Browse files
committed
Feat: Improve onReset to get the new values provided by resetForm
1 parent 0e0cf9e commit 97c2bbd

File tree

3 files changed

+36
-3
lines changed

3 files changed

+36
-3
lines changed

packages/formik/src/Formik.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,8 @@ export function useFormik<Values extends FormikValues = FormikValues>({
406406
if (props.onReset) {
407407
const maybePromisedOnReset = (props.onReset as any)(
408408
state.values,
409-
imperativeMethods
409+
imperativeMethods,
410+
values
410411
);
411412

412413
if (isPromise(maybePromisedOnReset)) {

packages/formik/src/types.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ export interface FormikConfig<Values> extends FormikSharedConfig {
214214
/**
215215
* Reset handler
216216
*/
217-
onReset?: (values: Values, formikHelpers: FormikHelpers<Values>) => void;
217+
onReset?: (values: Values, formikHelpers: FormikHelpers<Values>, newValues?: Values) => void;
218218

219219
/**
220220
* Submission handler

packages/formik/test/Formik.test.tsx

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1009,7 +1009,39 @@ describe('<Formik>', () => {
10091009
setSubmitting: expect.any(Function),
10101010
setTouched: expect.any(Function),
10111011
setValues: expect.any(Function),
1012-
})
1012+
}),
1013+
InitialValues
1014+
);
1015+
});
1016+
1017+
it('should call onReset with values and actions and new initial values when form is reset with values', () => {
1018+
const onReset = jest.fn();
1019+
const { getProps } = renderFormik({
1020+
initialValues: InitialValues,
1021+
onSubmit: noop,
1022+
onReset,
1023+
});
1024+
1025+
const newInitialValues = { name: 'jared', age: 31,}
1026+
1027+
act(() => {
1028+
getProps().resetForm({values: newInitialValues});
1029+
});
1030+
1031+
expect(onReset).toHaveBeenCalledWith(
1032+
InitialValues,
1033+
expect.objectContaining({
1034+
resetForm: expect.any(Function),
1035+
setErrors: expect.any(Function),
1036+
setFieldError: expect.any(Function),
1037+
setFieldTouched: expect.any(Function),
1038+
setFieldValue: expect.any(Function),
1039+
setStatus: expect.any(Function),
1040+
setSubmitting: expect.any(Function),
1041+
setTouched: expect.any(Function),
1042+
setValues: expect.any(Function),
1043+
}),
1044+
newInitialValues
10131045
);
10141046
});
10151047

0 commit comments

Comments
 (0)