@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
TypeScript
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;