@data-driven-forms/react-form-renderer
Version:
React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.
42 lines (41 loc) • 1.55 kB
TypeScript
import { ReactNode } from 'react';
import { FieldMetaState, FieldInputProps, UseFieldConfig } from 'react-final-form';
import { ValidatorDefinition } from './validator-helpers';
import { ValidatorFunction } from '../validators/validators';
import { AnyObject } from '../common-types';
import { DataType } from '../data-types/data-types';
export interface ValidatorType extends Object {
type: string;
message?: ReactNode;
}
export interface UseFieldApiConfig extends AnyObject {
name: string;
validate?: (ValidatorDefinition | ValidatorFunction)[];
skipRegistration?: boolean;
useWarnings?: boolean;
resolveProps?: (props: any, fieldProps: any, formOptions: any) => any;
initializeOnMount?: boolean;
component?: string;
render?: any;
clearOnUnmount?: boolean;
dataType?: DataType;
FieldProps?: any;
clearedValue?: any;
initialValue?: any;
value?: any;
type?: string;
}
export interface UseFieldApiComponentConfig extends UseFieldConfig<any> {
name: string;
}
export interface Meta<FieldValue> extends FieldMetaState<FieldValue> {
warning?: any;
}
export interface UseFieldApiProps<FieldValue, T extends HTMLElement = HTMLElement> extends AnyObject {
input: FieldInputProps<FieldValue, T>;
meta: Meta<FieldValue>;
arrayValidator?: ValidatorFunction;
}
export type BaseFieldProps<P = {}> = UseFieldApiConfig & P;
declare const useFieldApi: ({ name, resolveProps, skipRegistration, ...props }: UseFieldApiConfig) => UseFieldApiProps<any>;
export default useFieldApi;