@capdilla/react-d-form
Version:
React, React Native form builder
60 lines (59 loc) • 1.6 kB
TypeScript
import React from 'react';
import Regexs from '../lib/regex';
export interface Field<T> {
name: keyof T;
label?: string;
placeholder?: string;
type: 'Input' | 'Select' | 'DatePicker' | 'DateTimePicker' | 'Switch' | 'TextArea' | 'Label' | 'RadioButtons' | 'Null' | 'Divider' | any;
value?: any;
props?: any;
component?: (formData: T, defaultState: T, onChange: (data: any, field?: keyof T) => void, showValidations: boolean) => React.ReactElement;
validation?: Validation<T>;
[key: string]: any;
}
export declare type CustomResult = {
valid: boolean;
errorMessage: string;
};
export interface Validation<T> {
required?: boolean;
regexType?: keyof typeof Regexs;
errorMessage?: string;
custom?: (values: T) => boolean | CustomResult;
}
export interface Fields<T> {
div?: string;
fields: ((values: T) => Field<T>[]) | Field<T>[];
}
export declare type DefaultState = {
[key: string]: any;
};
export interface FormData<T> {
data: T;
validation: {
isFormValid: boolean;
};
}
export interface Props<T> {
fields: Fields<T>[];
onFormChange?: (formData: FormData<T>) => void;
showValidation?: boolean;
defaultState?: T;
parseState?: Function;
executeChangeOnBlur?: boolean;
}
export interface FormComponent {
label?: string;
value?: any;
onChange: (value: any) => any;
name: string;
placeholder?: string;
props?: any;
validation?: any;
showValidation?: boolean;
usedFields?: string[];
error?: {
content: string;
};
validationForm: any;
}