Skip to content

Commit

Permalink
Add submitCount and submitSucceded to form meta
Browse files Browse the repository at this point in the history
  • Loading branch information
mrix committed Dec 26, 2023
1 parent f9cd0bc commit d0334df
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 0 deletions.
4 changes: 4 additions & 0 deletions packages/core/src/types/FormController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import {
formChanged,
formErrors,
formMeta,
formSubmitCount,
formSubmitSucceded,
formSubmitted,
formSubmitting,
formTouched,
Expand All @@ -29,6 +31,8 @@ export class FormController<TData, TError> {
public readonly submitted: L.Lens<FormState<TData, TError>, boolean> = formSubmitted<TData, TError>();
public readonly submitting: L.Lens<FormState<TData, TError>, boolean> = formSubmitting<TData, TError>();
public readonly validating: L.Lens<FormState<TData, TError>, boolean> = formValidating<TData, TError>();
public readonly submitCount: L.Lens<FormState<TData, TError>, number> = formSubmitCount<TData, TError>();
public readonly submitSucceded: L.Lens<FormState<TData, TError>, boolean> = formSubmitSucceded<TData, TError>();

private current: FormState<TData, TError>;
private initial: FormState<TData, TError>;
Expand Down
3 changes: 3 additions & 0 deletions packages/core/src/types/FormMeta.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,7 @@ export type FormMeta = {
readonly submitted: boolean;
readonly submitting: boolean;
readonly validating: boolean;

readonly submitCount: number;
readonly submitSucceded: boolean;
};
8 changes: 8 additions & 0 deletions packages/core/src/utils/lenses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,14 @@ export function formValidating<TData, TError>(): L.Lens<FormState<TData, TError>
return pipe(formMeta<TData, TError>(), L.prop('validating'));
}

export function formSubmitSucceded<TData, TError>(): L.Lens<FormState<TData, TError>, boolean> {
return pipe(formMeta<TData, TError>(), L.prop('submitSucceded'));
}

export function formSubmitCount<TData, TError>(): L.Lens<FormState<TData, TError>, number> {
return pipe(formMeta<TData, TError>(), L.prop('submitCount'));
}

export function formValues<TData, TError>(): L.Lens<FormState<TData, TError>, TData> {
const form = L.id<FormState<TData, TError>>();
return pipe(form, L.prop('values'));
Expand Down
3 changes: 3 additions & 0 deletions packages/react/src/hooks/useForm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,7 @@ const DEFAULT_FORM_META: FormMeta = {
submitted: false,
submitting: false,
validating: false,

submitCount: 0,
submitSucceded: false,
};

0 comments on commit d0334df

Please sign in to comment.