react-signal-forms
Version:
A forms library focusing on performance and modular extensibility.
25 lines • 1.56 kB
TypeScript
/// <reference types="react" />
import { Field, FieldCollection } from ".";
import { FieldContextCollection } from "./fieldContext";
import { FieldBase } from "./fields";
import { ExpandFormContextProperties, SignalFormPlugin } from "./plugins/types";
import { FormValues } from "./types";
export declare const useFormContext: () => IFormContext<FormValues, []>;
export type IFormContextLike<TForm = FormValues, TParentForm extends IFormContextLike = any, TPlugins extends SignalFormPlugin[] = []> = {
fields: FieldContextCollection<TForm, TPlugins>;
parent: TParentForm;
} & ExpandFormContextProperties<TPlugins>;
export type IFormContext<TForm = FormValues, TPlugins extends SignalFormPlugin[] = []> = IFormContextLike<TForm, any, TPlugins> & {
fieldSpecifications: FieldCollection<TForm>;
plugins: Array<SignalFormPlugin>;
isSubmitting: boolean;
peekValues(): FormValues;
setValues(values: FormValues): void;
submit(values: FormValues): Promise<void>;
};
export declare function useFormContextProvider(fields: FieldCollection, plugins: Array<SignalFormPlugin<any, any, any>>, onSubmit?: (values: FormValues) => Promise<void>, initialValues?: FormValues): {
formContext: import("react").MutableRefObject<IFormContext<FormValues, []>>;
ContextProvider: import("react").Provider<IFormContext<FormValues, []>>;
};
export declare function addFieldExtensions(formContext: IFormContextLike, field: Field<any, string, FieldBase<any>>, plugins: SignalFormPlugin<any, any, any>[]): void;
//# sourceMappingURL=formContext.d.ts.map