@slashid/react
Version:
React SDK for the /id platform
30 lines • 1.28 kB
TypeScript
import { ReactNode, ChangeEventHandler } from "react";
import { Validator, ValidationError } from "../domain/types";
export type FormStatus = "valid" | "invalid";
type RegisteredFieldOptions = {
defaultValue?: string;
validator?: Validator<string>;
};
type RegisterFieldFn = (fieldName: string, opts: RegisteredFieldOptions) => ChangeEventHandler<HTMLInputElement>;
type RegisterSubmitFn = (onSubmit: React.FormEventHandler<HTMLFormElement>) => React.FormEventHandler<HTMLFormElement>;
type SetErrorFn = (fieldName: string, error: ValidationError) => void;
type HasErrorFn = (fieldName: string) => boolean;
type ClearErrorFn = (fieldName: string) => void;
export interface IFormContext {
registerField: RegisterFieldFn;
registerSubmit: RegisterSubmitFn;
resetForm: () => void;
setError: SetErrorFn;
hasError: HasErrorFn;
clearError: ClearErrorFn;
values: Record<string, string>;
errors: Record<string, ValidationError>;
status: FormStatus;
}
export declare const FormContext: import("react").Context<IFormContext>;
type FormProviderProps = {
children?: ReactNode;
};
export declare const FormProvider: ({ children }: FormProviderProps) => import("react/jsx-runtime").JSX.Element;
export {};
//# sourceMappingURL=form-context.d.ts.map