DynamicFormFieldProps

interface DynamicFormFieldProps {
    name: string,
    label: string,
    type: 'text' | 'password' | 'number' | 'email' | 'checkbox' | 'toggle' | 'select' | 'date' | 'time' | 'datetime' | 'hidden' | 'textarea' | 'json',
    value?: FormValue,
    placeholder?: string,

    renderField?: (data: IFormData, onValueChange: (value: any) => void) => React.ReactNode

    // show hide fields
    show?: (data: IFormData) => boolean


    // for select
    options?: Array<{ label: string | number, value: string | number }>,
    getOptions?: (data: IFormData) => Array<{ label: string | number, value: string | number }>

    // for numbers 
    allowZero?: boolean
    allowNegative?: boolean,

    // a formatter function on value change 
    formatter?: (value: any) => any

    validate?: {
        required?: boolean // default is false 
        allowEmptyString?: boolean // trim value. only for string values 
        minLength?: number
        maxLength?: number
        regExp?: RegExp
        allowZero?: boolean // only applicable to numbers 
        allowNegative?: boolean,
        minVal?: number
        maxVal?: number
        customValidateFunction?: (value: any, data: IFormData) => { valid: boolean, error?: string }// this is to give a custom validate function, which takes the value and return a boolean indicating value is valid or not
    },
}

Usage

import {DynamicFormFieldProps} from 'uxp/components';

Last updated