UNPKG

mui-smart-form-builder

Version:

A reusable React component for dynamically rendering MUI forms from JSON configuration with Formik integration

64 lines 1.83 kB
import { ReactNode } from 'react'; import { SxProps, Theme } from '@mui/material/styles'; export type FieldType = 'text' | 'textarea' | 'number' | 'password' | 'checkbox' | 'multiCheckbox' | 'radio' | 'select' | 'autocomplete' | 'date' | 'time' | 'dateTime' | 'switch' | 'slider' | 'file' | 'empty'; export type FieldOption = { label: string; value: any; }; export type GridBreakpoint = { xs?: number; sm?: number; md?: number; lg?: number; xl?: number; }; export type FieldConfig = { name?: string; label?: string; type: FieldType; placeholder?: string; options?: FieldOption[] | string[]; grid?: GridBreakpoint; required?: boolean; variant?: 'outlined' | 'filled' | 'standard'; muiProps?: Record<string, any>; onChange?: (value: any, formik: any) => void; onSearch?: (searchTerm: string) => Promise<FieldOption[]>; render?: (props: { fieldProps: any; formik: any; }) => ReactNode; min?: number; max?: number; step?: number; marks?: boolean; freeSolo?: boolean; multiple?: boolean; accept?: string; }; export type ButtonConfig = { label: string; variant?: 'text' | 'outlined' | 'contained'; color?: 'primary' | 'secondary' | 'success' | 'error' | 'info' | 'warning'; type?: 'submit' | 'button' | 'reset'; onClick?: (formik: any) => void; muiProps?: Record<string, any>; }; export type SmartFormBuilderProps = { formik: any; fields: FieldConfig[]; buttons?: ButtonConfig[]; title?: string; className?: string; sx?: SxProps<Theme>; gridSpacing?: number; }; export type FieldProps = { field: FieldConfig; formik: any; value: any; error?: string; helperText?: string; onChange: (value: any) => void; }; //# sourceMappingURL=types.d.ts.map