From 27b84a8053072c57bf10df30b790a6479075fd9d Mon Sep 17 00:00:00 2001 From: Vedanta Somnathe Date: Sat, 15 Mar 2025 13:43:35 -0500 Subject: [PATCH 1/2] setup 2 options in the form-options directly for running a validator on first-submission and consequent submissions --- packages/form-core/src/FormApi.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/form-core/src/FormApi.ts b/packages/form-core/src/FormApi.ts index e4810fd7f..74ed67bf2 100644 --- a/packages/form-core/src/FormApi.ts +++ b/packages/form-core/src/FormApi.ts @@ -281,6 +281,15 @@ export interface FormOptions< TOnSubmit, TOnSubmitAsync > + /** + * Specifies which validation type to use on the first submission attempt + */ + validationOnFirstAttempt?: ValidationCause; + + /** + * Specifies which validation type to use on subsequent submission attempts + */ + validationOnConsequentAttempts?: ValidationCause; /** * A function to be called when the form is submitted, what should happen once the user submits a valid form returns `any` or a promise `Promise` */ @@ -1500,7 +1509,12 @@ export class FormApi< this.baseStore.setState((prev) => ({ ...prev, isSubmitting: false })) } - await this.validateAllFields('submit') + // + const validationType = this.state.submissionAttempts === 0 + ? this.options.validationOnFirstAttempt ?? 'submit' + : this.options.validationOnConsequentAttempts ?? 'submit'; + + await this.validateAllFields(validationType) if (!this.state.isFieldsValid) { done() @@ -1511,7 +1525,7 @@ export class FormApi< return } - await this.validate('submit') + await this.validate(validationType) // Fields are invalid, do not submit if (!this.state.isValid) { From 9559bc1a9ccbd9afefdd704483d3dfdd8907f78b Mon Sep 17 00:00:00 2001 From: Vedanta Somnathe Date: Sat, 15 Mar 2025 13:58:39 -0500 Subject: [PATCH 2/2] submission attempts 0 -> 1 --- packages/form-core/src/FormApi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/form-core/src/FormApi.ts b/packages/form-core/src/FormApi.ts index 74ed67bf2..e972c3b7c 100644 --- a/packages/form-core/src/FormApi.ts +++ b/packages/form-core/src/FormApi.ts @@ -1510,7 +1510,7 @@ export class FormApi< } // - const validationType = this.state.submissionAttempts === 0 + const validationType = this.state.submissionAttempts === 1 ? this.options.validationOnFirstAttempt ?? 'submit' : this.options.validationOnConsequentAttempts ?? 'submit';