react-form-krafter
Version:
A flexible form engine for React powered by Standard Schema
34 lines (33 loc) • 881 B
TypeScript
import { ComponentType } from 'react';
import { BaseField } from './field.types';
import { FieldMethods } from './form.types';
export type RegisterField<T> = BaseField & {
value: T;
error: string | null;
isTouched: boolean;
isDirty: boolean;
isFocused: boolean;
isDefaultValue: boolean;
isPristine: boolean;
isBlurred: boolean;
isDisabled: boolean;
isErrorVisible: boolean;
};
export type RegisterFieldRenderProps<T> = {
field: RegisterField<T>;
methods: FieldMethods;
};
export type RegisterComponent<T> = {
type: string;
render: ComponentType<RegisterFieldRenderProps<T>>;
};
export type RegisterSettings = Partial<{
updateDebounce: number;
labels: Partial<{
required: string;
}>;
}>;
export type RegisterContext<T> = {
components: RegisterComponent<T>[];
settings?: RegisterSettings | null;
};