UNPKG

@capdilla/react-d-form

Version:

React, React Native form builder

79 lines (71 loc) 1.52 kB
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 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 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 }