react-define-form
Version:
React define form offers alternative typescript bindings for [react-final-form](https://github.com/final-form/react-final-form). It requires you to "define" a form type, specifying the type of the form data.
23 lines (22 loc) • 1.16 kB
TypeScript
/// <reference types="react" />
import { AnyObject, Config, Decorator, FormState, FormSubscription } from 'define-form';
import RenderableProps from './RenderableProps';
export interface SubsetFormApi<FormData extends AnyObject> {
batch: (fn: () => void) => void;
blur: (name: keyof FormData) => void;
change: <TKey extends keyof FormData>(name: keyof FormData, value: FormData[TKey]) => void;
focus: (name: keyof FormData) => void;
initialize: (values: Readonly<FormData>) => void;
mutators?: {
[key: string]: Function;
};
reset: () => void;
}
export interface FormRenderProps<FormData extends AnyObject, ErrorValue = any> extends FormState<FormData, ErrorValue>, SubsetFormApi<FormData> {
batch: (fn: () => void) => void;
handleSubmit: (event?: React.SyntheticEvent<HTMLFormElement>) => void;
}
export default interface FormProps<FormData extends AnyObject, FormDataParsed extends AnyObject, ErrorValue = any> extends Config<FormData, FormDataParsed, ErrorValue>, RenderableProps<FormRenderProps<FormData, ErrorValue>> {
subscription?: FormSubscription;
decorators?: Decorator<FormData, ErrorValue>[];
}