UNPKG

@data-driven-forms/react-form-renderer

Version:

React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.

56 lines (55 loc) 1.85 kB
import React, { ReactNode } from 'react'; import { FormState, FormApi } from 'final-form'; import Field from '../common-types/field'; export interface ActionResolution { visible?: boolean; set?: object | ((formState: FormState<Record<string, any>>, getFieldState: FormApi['getFieldState']) => object); } export type InnerWhenFunction = (currentField: string) => string; export type WhenFunction = (currentField: string) => string | string[] | InnerWhenFunction[]; export interface ConditionProp { when?: string | string[] | WhenFunction | InnerWhenFunction[]; is?: any; isNotEmpty?: boolean; isEmpty?: boolean; pattern?: string | RegExp; flags?: string; notMatch?: any; greaterThan?: number; greaterThanOrEqualTo?: number; lessThan?: number; lessThanOrEqualTo?: number; then?: ActionResolution; else?: ActionResolution; or?: ConditionProp | ConditionProp[]; and?: ConditionProp | ConditionProp[]; not?: ConditionProp | ConditionProp[]; } export interface ConditionDefinition extends ConditionProp { mappedAttributes?: { is?: string[]; when?: string[]; set?: string[]; }; or?: ConditionProp | ConditionProp[]; and?: ConditionProp | ConditionProp[]; not?: ConditionProp | ConditionProp[]; sequence?: ConditionProp[]; } interface ConditionState { sets: object[]; initial: boolean; } interface ConditionAction { type: 'formResetted' | 'rememberSets'; sets?: object[]; } export interface ConditionProps { values?: object; children: ReactNode; condition?: ConditionDefinition | ConditionDefinition[]; field: Field; } export declare const reducer: (state: ConditionState, { type, sets }: ConditionAction) => ConditionState; declare const Condition: React.FC<ConditionProps>; export default Condition;