@@ -167,6 +167,11 @@ class FormStore {
167167 /** Flag to preserve field values after unmount */
168168 private _preserve = false ;
169169
170+ private _submitCount = 0 ;
171+ private _isSubmitting = false ;
172+ private _isSubmitted = false ;
173+ private _isSubmitSuccessful = false ;
174+
170175 constructor ( ) {
171176 this . rebindMiddlewares ( ) ;
172177 }
@@ -318,14 +323,40 @@ class FormStore {
318323 * Gets current form state including validation status
319324 */
320325 private getFormState ( ) {
326+ const errors = Object . fromEntries ( this . _errors ) ;
327+ const warnings = Object . fromEntries ( this . _warnings ) ;
328+
329+ const dirtyFields = Object . fromEntries ( Array . from ( this . _dirty ) . map ( k => [ k , true ] ) ) ;
330+
331+ const touchedFields = Object . fromEntries ( Array . from ( this . _touched ) . map ( k => [ k , true ] ) ) ;
332+
333+ const validatingFields = Object . fromEntries ( Array . from ( this . _validating ) . map ( k => [ k , true ] ) ) ;
334+
335+ const validatedFields = Object . fromEntries ( Array . from ( this . _validated ) . map ( k => [ k , true ] ) ) ;
336+
321337 return {
322- errors : Object . fromEntries ( this . _errors ) ,
338+ dirtyFields,
339+ // meta maps
340+ errors,
341+
323342 initialValues : this . _initial ,
343+ // booleans
324344 isDirty : this . _dirty . size > 0 ,
345+ isSubmitSuccessful : this . _isSubmitSuccessful ,
346+ isSubmitted : this . _isSubmitted ,
347+ isSubmitting : this . _isSubmitting ,
325348 isValid : Array . from ( this . _errors . values ( ) ) . every ( arr => ! arr ?. length ) ,
349+
326350 isValidating : this . _validating . size > 0 ,
351+ // counters
352+ submitCount : this . _submitCount ,
353+ touchedFields,
354+ validatedFields,
355+ validatingFields,
356+ // raw values
327357 values : this . _store ,
328- warnings : Object . fromEntries ( this . _warnings )
358+
359+ warnings
329360 } ;
330361 }
331362
@@ -1181,9 +1212,19 @@ class FormStore {
11811212 * Calls onFinish if validation passes, onFinishFailed if it fails
11821213 */
11831214 private submit = ( ) => {
1215+ this . _isSubmitted = true ;
1216+ this . _isSubmitting = true ;
1217+ this . _submitCount ++ ;
1218+
11841219 this . validateFields ( ) . then ( ok => {
1185- if ( ok ) this . _callbacks . onFinish ?.( this . _store ) ;
1186- else this . _callbacks . onFinishFailed ?.( this . buildFailedPayload ( ) ) ;
1220+ this . _isSubmitting = false ;
1221+ if ( ok ) {
1222+ this . _isSubmitSuccessful = true ;
1223+ this . _callbacks . onFinish ?.( this . _store ) ;
1224+ } else {
1225+ this . _isSubmitSuccessful = false ;
1226+ this . _callbacks . onFinishFailed ?.( this . buildFailedPayload ( ) ) ;
1227+ }
11871228 } ) ;
11881229 } ;
11891230
0 commit comments