From 5bb76eff08fab8c4ce0451b77076b251aa9a9056 Mon Sep 17 00:00:00 2001 From: Giovanni Gonzaga Date: Fri, 11 Feb 2022 12:21:35 +0100 Subject: [PATCH 1/3] 2.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4d85c8e..2543a4c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@buildo/formo", - "version": "2.0.0-beta.9", + "version": "2.0.0", "main": "lib/index.js", "license": "MIT", "files": [ From 92ccbeb83605452ee0120982f0c848716e45b03a Mon Sep 17 00:00:00 2001 From: Giovanni Gonzaga Date: Tue, 29 Mar 2022 12:43:43 +0200 Subject: [PATCH 2/3] add failing test --- test/useFormo.test.ts | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/useFormo.test.ts b/test/useFormo.test.ts index 04f59c4..cec93c4 100644 --- a/test/useFormo.test.ts +++ b/test/useFormo.test.ts @@ -677,4 +677,44 @@ describe("formo", () => { expect(onSubmit).toHaveBeenLastCalledWith("token"); }); }); + + test("formErrors are reset before next onSubmit", async () => { + const { result } = renderHook(() => + useFormo( + { + initialValues: { + username: "username", + }, + fieldValidators: (_) => ({ + username: validators.validator((u) => + u === "invalid" ? failure("InvalidUsername") : success(u) + ), + }), + }, + { + onSubmit: ({ username }) => + username === "username" + ? Promise.resolve(failure(["FormError"])) + : Promise.resolve(success(null)), + } + ) + ); + + await act(async () => { + await result.current.handleSubmit(); + }); + + expect(result.current.formErrors).toEqual(["FormError"]); + + await act(async () => { + await result.current.fieldProps("username").onChange("invalid"); + await result.current.handleSubmit(); + }); + + // form error should have been reset + expect(result.current.formErrors).toEqual(undefined); + expect(result.current.fieldProps("username").issues).toEqual([ + "InvalidUsername", + ]); + }); }); From 556646da2fa28341011fe59868f3ad5ab5e60fce Mon Sep 17 00:00:00 2001 From: Giovanni Gonzaga Date: Tue, 29 Mar 2022 12:43:55 +0200 Subject: [PATCH 3/3] reset form errors before next submit --- src/useFormo.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/useFormo.ts b/src/useFormo.ts index 160627c..c0940b1 100644 --- a/src/useFormo.ts +++ b/src/useFormo.ts @@ -876,6 +876,7 @@ export function useFormo< async function handleSubmit(): Promise> { setAllTouched(); + setFormErrors(undefined); dispatch({ type: "setSubmitting", isSubmitting: true }); setSubmissionCount((count) => count + 1); try {