UNPKG

material-form-builder

Version:

A dynamic React form builder using Material UI

861 lines (787 loc) 30.2 kB
import * as React$1 from 'react'; import React__default, { Component, RefObject, HTMLProps, CSSProperties, ReactNode } from 'react'; import * as react_jsx_runtime from 'react/jsx-runtime'; import { AutocompleteProps, TextFieldProps, AutocompleteChangeReason, AutocompleteChangeDetails, CheckboxProps, InputProps as InputProps$1, FormControlProps, InputLabelProps, FormHelperTextProps, BoxProps, TypographyProps, SelectProps, SelectChangeEvent, SwitchProps, ToggleButtonGroupProps } from '@mui/material'; import { MuiPickersAdapter, PickerChangeHandlerContext, DateValidationError, DateTimePickerProps, DateTimeValidationError, TimePickerProps, TimeValidationError } from '@mui/x-date-pickers'; import { Dayjs } from 'dayjs'; import { DatePickerProps } from '@mui/x-date-pickers/DatePicker'; type AutocompleteOptionType = { label: string value: string } type AutocompleteFragType = string | number type AutocompleteValueType = AutocompleteOptionType[] | AutocompleteOptionType | undefined type AutocompleteInputValueType = AutocompleteFragType | AutocompleteFragType[] | null interface AutocompleteInputProps extends BaseInput<AutocompleteInputValueType>, Omit<AutocompleteProps<any, boolean, true, boolean, 'div'>, 'renderInput' | 'defaultValue' | 'ref'> { type: 'autocomplete' disableClearOnChangeOptions?: boolean variant?: Variant label?: string renderInput?: (params: TextFieldProps) => React.ReactNode InputProps?: TextFieldProps defaultValue?: AutocompleteInputValueType loading?: boolean } interface IState$i { value: AutocompleteValueType | null; error: boolean; } declare class AutocompleteInput extends Component<AutocompleteInputProps, IState$i> implements Omit<InputImplement<AutocompleteInputValueType>, 'onChange'> { state: IState$i; validationTimeout: any; inputRef: HTMLInputElement | undefined; shouldComponentUpdate(nextProps: AutocompleteInputProps, nextState: IState$i): boolean; private getValuesFrom; private loadingComponent; componentDidUpdate(props: AutocompleteInputProps): void; setValue(value: AutocompleteInputValueType, disableOnChangeEvent?: boolean): Promise<AutocompleteInputValueType>; getValue(): AutocompleteInputValueType; clear(withoutDefaults?: boolean): Promise<AutocompleteInputValueType>; validation(): boolean; onChange: (_: React__default.SyntheticEvent, option: any, reason: AutocompleteChangeReason, details?: AutocompleteChangeDetails<any> | undefined) => void; private onClick; click: () => void; focus: () => void; blur: () => void; private optionGetter; private getValueForCheck; private onInputBlur; private renderOption; private getOptionLabel; private isOptionEqualToValue; renderInput: (params: TextFieldProps) => React__default.ReactNode; render(): react_jsx_runtime.JSX.Element; } type CheckboxInputValueType = boolean interface CheckboxInputProps extends BaseInput<CheckboxInputValueType>, Omit<CheckboxProps, 'defaultChecked' | 'ref'> { type: 'checkbox' label?: string defaultChecked?: CheckboxInputValueType } interface IState$h { value: CheckboxInputValueType; error: boolean; } declare class CheckboxInput extends Component<CheckboxInputProps, IState$h> implements InputImplement<CheckboxInputValueType> { state: IState$h; validationTimeout: any; inputRef: HTMLInputElement | null | undefined; shouldComponentUpdate(nextProps: CheckboxInputProps, nextState: IState$h): boolean; setValue(value: CheckboxInputValueType, disableOnChangeEvent?: boolean): Promise<CheckboxInputValueType>; getValue(): CheckboxInputValueType; clear(): Promise<CheckboxInputValueType>; validation(): boolean; onChange: (event: React__default.ChangeEvent<HTMLInputElement>, checked: boolean) => void; private onClick; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type CustomInputValueType = any interface CustomInputProps extends Omit<BaseInput, 'onChangeValue' | 'ref'> { type: 'custom' element: React.ElementType allowObject?: boolean, [key: string]: any } interface IState$g { value: CustomInputValueType; error: boolean; } declare class CustomInput extends Component<CustomInputProps, IState$g> implements InputImplement<CustomInputValueType> { private elementRef; state: IState$g; setValue(value: CustomInputValueType): Promise<CustomInputValueType>; getValue(): CustomInputValueType; clear(): Promise<CustomInputValueType>; validation(): boolean; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type DateInputValueType = Dayjs | null interface DateInputProps extends BaseInput<DateInputValueType>, Omit<DatePickerProps<Dayjs, false>, 'value' | 'renderInput' | 'ref'> { type: 'date' /** * @deprecated * use LocalizationProvider wrapper instead * @docs https://mui.com/x/react-date-pickers/getting-started/#localizationprovider */ dateAdapter?: new (...args: any) => MuiPickersAdapter<Dayjs> variant?: Variant defaultValue?: DateInputValueType fullWidth?: boolean InputProps?: TextFieldProps // onChange?: (value: any, keyboardInputValue?: string) => void } interface IState$f { value: DateInputValueType; error: boolean; } declare class DateInput extends Component<DateInputProps, IState$f> implements InputImplement<DateInputValueType> { state: IState$f; validationTimeout: any; inputRef: HTMLInputElement | null | undefined; shouldComponentUpdate(nextProps: DateInputProps, nextState: IState$f): boolean; setValue(value: DateInputValueType, disableOnChangeEvent?: boolean): Promise<DateInputValueType>; getValue(): DateInputValueType; clear(): Promise<DateInputValueType>; validation(): boolean; onChange: (value: Dayjs | null, context: PickerChangeHandlerContext<DateValidationError>) => void; private onClick; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type DatetimeInputValueType = Dayjs | null interface DatetimeInputProps extends BaseInput<DatetimeInputValueType>, Omit<DateTimePickerProps<Dayjs, false>, 'value' | 'renderInput' | 'ref'> { type: 'datetime' /** * @deprecated * use LocalizationProvider wrapper instead * @docs https://mui.com/x/react-date-pickers/getting-started/#localizationprovider */ dateAdapter?: new (...args: any) => MuiPickersAdapter<Dayjs> variant?: Variant defaultValue?: DatetimeInputValueType fullWidth?: boolean InputProps?: TextFieldProps } interface IState$e { value: DatetimeInputValueType; error: boolean; } declare class DatetimeInput extends Component<DatetimeInputProps, IState$e> implements InputImplement<DatetimeInputValueType> { state: IState$e; validationTimeout: any; inputRef: HTMLInputElement | null | undefined; shouldComponentUpdate(nextProps: DatetimeInputProps, nextState: IState$e): boolean; setValue(value: DatetimeInputValueType, disableOnChangeEvent?: boolean): Promise<DatetimeInputValueType>; getValue(): DatetimeInputValueType; clear(): Promise<DatetimeInputValueType>; validation(): boolean; onChange: (value: Dayjs | null, context: PickerChangeHandlerContext<DateTimeValidationError>) => void; private onClick; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type FileInputValueType = FileList | null interface FileInputProps extends BaseInput<FileInputValueType>, Omit<InputProps$1, 'ref'> { type: 'file' label?: string defaultValue?: FileInputValueType variant?: Variant helperText?: string FormControlProps?: FormControlProps InputLabelProps?: InputLabelProps FormHelperTextProps?: FormHelperTextProps multiple?: boolean } interface IState$d { value: FileInputValueType; error: boolean; inputKey: string; } declare class FileInput extends Component<FileInputProps, IState$d> implements InputImplement<FileInputValueType> { state: IState$d; validationTimeout: any; inputIdentity: string; textHelperIdentity: string; inputRef: HTMLInputElement | undefined; constructor(props: FileInputProps); shouldComponentUpdate(nextProps: FileInputProps, nextState: IState$d): boolean; setValue(value: FileInputValueType, disableOnChangeEvent?: boolean): Promise<any>; getValue(): FileInputValueType; clear(): Promise<FileInputValueType>; validation(): boolean; onChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void; private onClick; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type GroupInputValueType = ObjectLiteral | undefined | null interface GroupInputProps extends Omit<BaseInput<GroupInputValueType>, 'onChangeValue'> { type: 'group' inputs: InputProps[] itemWrapper?: (children: JSX.Element) => JSX.Element, onChangeValue?: (data: OutputValues) => void } interface IState$c { error: boolean; value: GroupInputValueType; } declare class GroupInput extends Component<GroupInputProps, IState$c> implements InputImplement<GroupInputValueType> { state: IState$c; validationTimeout: any; builderRef: RefObject<FormBuilder>; constructor(props: GroupInputProps); setValue(values: GroupInputValueType): Promise<GroupInputValueType>; getValue(validation?: boolean): GroupInputValueType; clear(): Promise<GroupInputValueType>; validation(): boolean; onChangeValue: (data: OutputValues) => void; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type ItemsInputValueType = any; interface ItemsInputBaseProps extends Omit<BaseInput<ItemsInputValueType>, "onChangeValue"> { type: "items"; inputs: InputProps[]; renderHeader?: (addItem: Function, removeAll: Function) => JSX.Element; removeIcon?: JSX.Element | React.ReactNode | boolean; copyIcon?: JSX.Element | React.ReactNode | boolean; minItems?: number; maxItems?: number; } interface ItemsInputPropsCustomWrapper extends ItemsInputBaseProps { disableDefaultItemWrapper: true; itemWrapper: (children: JSX.Element, key: string, actions: { copyItem: () => void; removeItem: () => void }) => JSX.Element; } interface ItemsInputPropsDefaultWrapper extends ItemsInputBaseProps { disableDefaultItemWrapper?: false; itemWrapper?: (children: JSX.Element, key: string, actions: { copyItem: () => void; removeItem: () => void }) => JSX.Element; } type ItemsInputProps = ItemsInputPropsCustomWrapper | ItemsInputPropsDefaultWrapper; interface IState$b { error: boolean; items: string[]; } declare class ItemsInput extends Component<ItemsInputProps, IState$b> implements InputImplement<ItemsInputValueType> { state: IState$b; validationTimeout: any; formBuilderRef: { [key: string]: FormBuilder<any> | null; }; shouldComponentUpdate(nextProps: any, nextState: IState$b): boolean; UNSAFE_componentWillMount(): void; private sleep; setValue(values: ItemsInputValueType): Promise<ItemsInputValueType>; private setItemValue; exportFormBuilderData: () => OutputValues[]; getValue(): any; clear(): Promise<ItemsInputValueType>; validation(): boolean; getRandomKey: () => string; addItem: () => Promise<string>; copyItem: (key: string) => () => Promise<void>; removeItem: (key: string) => () => Promise<void>; removeAll: () => Promise<any>; click: () => void; focus: () => void; blur: () => void; renderItem: (key: string) => react_jsx_runtime.JSX.Element; render(): react_jsx_runtime.JSX.Element; } type MaskInputValueType = string | null interface MaskInputProps extends BaseInput<MaskInputValueType>, Omit<TextFieldProps, 'defaultValue' | 'ref'> { type: 'mask' pattern: string /** * @default _ */ char?: string defaultValue?: MaskInputValueType } interface IState$a { value: MaskInputValueType; value_when_focus: MaskInputValueType; error: boolean; } declare class MaskInput extends Component<MaskInputProps, IState$a> implements InputImplement<MaskInputValueType> { state: IState$a; validationTimeout: any; inputRef: HTMLInputElement | undefined; shouldComponentUpdate(nextProps: MaskInputProps, nextState: IState$a): boolean; setValue(value: MaskInputValueType, disableOnChangeEvent?: boolean): Promise<MaskInputValueType>; getValue(): MaskInputValueType; clear(): Promise<MaskInputValueType>; validation(): boolean; onChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void; private normalizeValue; private onClick; private onBlur; private onFocus; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type Country = { title: string; dialCode: string; mask: string; flag: string; }; type MobileInputValueType = string | null interface MobileInputProps extends BaseInput<MobileInputValueType>, Omit<TextFieldProps, 'defaultValue' | 'ref'> { type: 'mobile' defaultValue?: MobileInputValueType } interface IState$9 { value: MobileInputValueType; value_when_focus: MobileInputValueType; error: boolean; country: Country; } declare class MobileInput extends Component<MobileInputProps, IState$9> implements InputImplement<MobileInputValueType> { state: IState$9; validationTimeout: any; inputRef: HTMLInputElement | undefined; shouldComponentUpdate(nextProps: MobileInputProps, nextState: IState$9): boolean; setValue(value: MobileInputValueType, internalSet?: boolean, disableOnChangeEvent?: boolean): Promise<MobileInputValueType>; getValue(): MobileInputValueType; clear(): Promise<MobileInputValueType>; validation(): boolean; onChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void; private onClick; private onBlur; private onFocus; private normalizeValue; private onChangeCountry; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type NumberInputValueType = number | null interface NumberInputProps extends BaseInput<NumberInputValueType>, Omit<TextFieldProps, 'defaultValue' | 'ref'> { type: 'number' defaultValue?: NumberInputValueType } interface IState$8 { value: NumberInputValueType; value_when_focus: NumberInputValueType; error: boolean; } declare class NumberInput extends Component<NumberInputProps, IState$8> implements InputImplement<NumberInputValueType> { state: IState$8; validationTimeout: any; inputRef: HTMLInputElement | null | undefined; shouldComponentUpdate(nextProps: NumberInputProps, nextState: IState$8): boolean; setValue(value: NumberInputValueType, disableOnChangeEvent?: boolean): Promise<NumberInputValueType>; getValue(): NumberInputValueType; clear(): Promise<NumberInputValueType>; validation(): boolean; onChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void; private onClick; private onBlur; private onFocus; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type OtpInputValueType = string | null interface OtpInputProps extends BaseInput<OtpInputValueType>, Omit<HTMLProps<HTMLInputElement>, 'defaultValue' | 'ref'> { type: 'otp' defaultValue?: OtpInputValueType /** * @default standard */ variant?: 'outlined' | 'standard' /** * @default 4 */ digits?: number autoFocus?: boolean /** @default 55 */ height?: number /** @default 34.61 */ width?: number /** @default 1 */ borderWidth?: number /** @default 8 */ spaceBetween?: number /** @default 4 */ borderRadius?: number /** @default #0000003b */ emptyColor?: CSSProperties['color'] /** @default #1976d2 */ focusColor?: CSSProperties['color'] /** @default #68b36b */ completeColor?: CSSProperties['color'] /** * @default 400 * use digitTextProps.sx instead */ fontWeight?: number /** * @default 23 * use digitTextProps.sx instead */ fontSize?: number /** @default #323232 */ color?: CSSProperties['color'], /** * props per digit box * @default undefined */ digitBoxProps?: BoxProps, /** * */ digitTextProps?: TypographyProps } interface IState$7 { value: OtpInputValueType; value_when_focus: OtpInputValueType; error: boolean; isInputFocused: boolean; } declare class OtpInput extends Component<OtpInputProps, IState$7> implements InputImplement<OtpInputValueType> { state: IState$7; validationTimeout: any; inputRef: HTMLInputElement | undefined | null; shouldComponentUpdate(nextProps: OtpInputProps, nextState: IState$7): boolean; setValue(value: OtpInputValueType, disableOnChangeEvent?: boolean): Promise<OtpInputValueType>; getValue(): OtpInputValueType; clear(): Promise<OtpInputValueType>; validation(): boolean; onChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void; private onClick; private onBlur; private onFocus; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type PasswordInputValueType = string | null interface PasswordInputProps extends BaseInput<PasswordInputValueType>, Omit<TextFieldProps, 'defaultValue' | 'ref'> { type: 'password' defaultValue?: PasswordInputValueType } interface IState$6 { value: PasswordInputValueType; value_when_focus: PasswordInputValueType; error: boolean; showPassword: boolean; } declare class PasswordInput extends Component<PasswordInputProps, IState$6> implements InputImplement<PasswordInputValueType> { state: IState$6; validationTimeout: any; inputRef: HTMLInputElement | null | undefined; shouldComponentUpdate(nextProps: PasswordInputProps, nextState: IState$6): boolean; setValue(value: PasswordInputValueType, disableOnChangeEvent?: boolean): Promise<PasswordInputValueType>; getValue(): PasswordInputValueType; clear(): Promise<PasswordInputValueType>; validation(): boolean; onChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void; private onClick; private onBlur; private onFocus; private handleClickShowPassword; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type SelectInputValueType = any type SelectOptionType = { label: string | JSX.Element value: any } interface SelectInputProps extends BaseInput<SelectInputValueType>, Omit<SelectProps, 'defaultValue' | 'ref'> { type: 'select' options: SelectOptionType[] defaultValue?: SelectInputValueType listSubheaderText?: string loading?: boolean } interface IState$5 { value: SelectInputValueType; error: boolean; } declare class SelectInput extends Component<SelectInputProps, IState$5> implements InputImplement<SelectInputValueType> { state: IState$5; validationTimeout: any; inputRef: HTMLInputElement | null | undefined; shouldComponentUpdate(nextProps: SelectInputProps, nextState: IState$5): boolean; componentDidUpdate(props: SelectInputProps): void; setValue(value: SelectInputValueType, disableOnChangeEvent?: boolean): Promise<SelectInputValueType>; getValue(): SelectInputValueType; clear(): Promise<SelectInputValueType>; validation(): boolean; onChange: (event: SelectChangeEvent<any>, child: React__default.ReactNode) => void; private onOpen; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type SwitchInputValueType = boolean interface SwitchInputProps extends BaseInput<SwitchInputValueType>, Omit<SwitchProps, 'defaultChecked' | 'ref'> { type: 'switch' label?: string defaultChecked?: SwitchInputValueType } interface IState$4 { value: SwitchInputValueType; error: boolean; } declare class SwitchInput extends Component<SwitchInputProps, IState$4> implements InputImplement<SwitchInputValueType> { state: IState$4; validationTimeout: any; inputRef: HTMLInputElement | null | undefined; shouldComponentUpdate(nextProps: SwitchInputProps, nextState: IState$4): boolean; setValue(value: SwitchInputValueType, disableOnChangeEvent?: boolean): Promise<SwitchInputValueType>; getValue(): SwitchInputValueType; clear(): Promise<SwitchInputValueType>; validation(): boolean; onChange: (event: React__default.ChangeEvent<HTMLInputElement>, checked: boolean) => void; private onClick; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type TextInputValueType = string | null; interface TextInputProps extends BaseInput<TextInputValueType>, Omit<TextFieldProps, "defaultValue" | "ref"> { type: "text"; autoDirection?: boolean; defaultValue?: TextInputValueType; } interface IState$3 { value: TextInputValueType; value_when_focus: TextInputValueType; error: boolean; } declare class TextInput extends Component<TextInputProps, IState$3> implements InputImplement<TextInputValueType> { state: IState$3; validationTimeout: any; inputRef: HTMLInputElement | undefined; shouldComponentUpdate(nextProps: TextInputProps, nextState: IState$3): boolean; setValue(value: TextInputValueType, disableOnChangeEvent?: boolean): Promise<TextInputValueType>; getValue(): TextInputValueType; clear(): Promise<TextInputValueType>; validation(): boolean; onChange: (event: React__default.ChangeEvent<HTMLInputElement>) => void; private onClick; private onBlur; private onFocus; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type TimeInputValueType = Dayjs | null interface TimeInputProps extends BaseInput<TimeInputValueType>, Omit<TimePickerProps<Dayjs, false>, 'value' | 'ref'> { type: 'time' /** * @deprecated * use LocalizationProvider wrapper instead * @docs https://mui.com/x/react-date-pickers/getting-started/#localizationprovider */ dateAdapter?: new (...args: any) => MuiPickersAdapter<Dayjs> variant?: Variant defaultValue?: TimeInputValueType fullWidth?: boolean InputProps?: TextFieldProps } interface IState$2 { value: TimeInputValueType; error: boolean; } declare class TimeInput extends Component<TimeInputProps, IState$2> implements InputImplement<TimeInputValueType> { state: IState$2; validationTimeout: any; shouldComponentUpdate(nextProps: TimeInputProps, nextState: IState$2): boolean; setValue(value: TimeInputValueType, disableOnChangeEvent?: boolean): Promise<TimeInputValueType>; getValue(): TimeInputValueType; clear(): Promise<TimeInputValueType>; validation(): boolean; onChange: (value: Dayjs | null, context: PickerChangeHandlerContext<TimeValidationError>) => void; private onClick; inputRef: HTMLInputElement | null | undefined; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type ToggleInputValueType = string | string[] | null type ToggleInputOptionType = { label: string | ReactNode value: any } interface ToggleInputProps extends BaseInput<ToggleInputValueType>, Omit<ToggleButtonGroupProps, 'defaultValue' | 'ref'> { type: 'toggle' options: ToggleInputOptionType[] defaultValue?: ToggleInputValueType exclusive?: boolean label?: string enforceValueSet?: boolean } interface IState$1 { value: ToggleInputValueType; error: boolean; } declare class ToggleInput extends Component<ToggleInputProps, IState$1> implements InputImplement<ToggleInputValueType> { state: IState$1; validationTimeout: any; inputRef: HTMLInputElement | undefined; shouldComponentUpdate(nextProps: ToggleInputProps, nextState: IState$1): boolean; setValue(value: ToggleInputValueType, disableOnChangeEvent?: boolean): Promise<ToggleInputValueType>; getValue(): ToggleInputValueType; clear(): Promise<ToggleInputValueType>; validation(): boolean; onChange: (_: React__default.MouseEvent<HTMLElement>, value: ToggleInputValueType) => void; click: () => void; focus: () => void; blur: () => void; render(): react_jsx_runtime.JSX.Element; } type InputProps = | TextInputProps | NumberInputProps | ItemsInputProps | CustomInputProps | CheckboxInputProps | MobileInputProps | OtpInputProps | PasswordInputProps | SelectInputProps | DateInputProps | TimeInputProps | DatetimeInputProps | MaskInputProps | FileInputProps | AutocompleteInputProps | ToggleInputProps | GroupInputProps | SwitchInputProps type Input = | TextInput | NumberInput | ItemsInput | CustomInput | CheckboxInput | MobileInput | OtpInput | PasswordInput | SelectInput | DateInput | TimeInput | DatetimeInput | MaskInput | FileInput | AutocompleteInput | ToggleInput | GroupInput | SwitchInput; type InputRefs<TValues extends ObjectLiteral> = { [K in keyof TValues]: InputImplement<TValues[K]> } type ObjectLiteral = { [key: string]: any } type Variant = 'standard' | 'filled' | 'outlined' interface InputActions<ValueType = any> { setValue: (data: ValueType) => Promise<ValueType> getValue: () => Promise<ValueType> clear: () => Promise<ValueType> click: () => Promise<any> focus: () => Promise<any> blur: () => Promise<any> copy?: () => Promise<any> } interface BaseInput<ValueType = any> { selector: string required?: boolean /** * @default true */ visible?: ((e: any) => boolean | undefined) | boolean wrapper?: (children: JSX.Element, actions: InputActions<ValueType>) => JSX.Element /** * listen for changes to update component from external state or resource * @examples * updateListener: { * disabled: this.state.isDisabled * } * * */ updateListener?: Array<string | null | number | undefined | boolean> | { [key: number | string]: string | null | number | undefined | boolean } onChangeValue?: (value: ValueType) => void getMutator?: (value: any) => any setMutator?: (value: any) => any formatter?: (value: any) => any _call_parent_for_update?: () => Promise<boolean> ref?: any, reactKey?: string } interface InputImplement<ValueType> { setValue: (data: ValueType, disableOnChangeEvent?: boolean) => Promise<ValueType> getValue: (validation?: boolean) => ValueType clear: () => Promise<ValueType> validation?: () => boolean click?: () => void focus?: () => void blur?: () => void } type OutputValues<T = ObjectLiteral> = { data: T validation: { status: boolean inputs: Array<any> }, api: { refs: InputRefs<T> } } type BuilderValue<T = any> = OutputValues<T> | undefined type WrapperElement = JSX.Element type WrapperActions<T = any> = InputActions<T> interface FormBuilderImplements { getValues: (validation: boolean) => OutputValues; setValues: (values: ObjectLiteral) => Promise<void>; clear: () => Promise<void>; } interface IState { isMounted: boolean; time: number | null; inInternalSettingProcess: boolean; } interface FormBuilderProps { inputs: InputProps[]; onChange?: Function; onMount?: Function; } declare class FormBuilder<TValues extends ObjectLiteral = ObjectLiteral> extends Component<FormBuilderProps, IState> implements FormBuilderImplements { state: IState; private _typecheck_only; private inputRefs; private inputs; private defaultValues; private didMountEvent; componentDidMount(): void; componentWillUnmount(): void; componentDidUpdate(): void; getValues: (validation?: boolean) => OutputValues; private setObjectValues; private setNormalValue; private setValue; setValues: (value: ObjectLiteral) => Promise<any>; private syncSetValues; clear: () => Promise<any>; private lastVisibilityOfInputs; private checkVisibility; private onUpdateInputs; private executeAction; private renderInput; render(): JSX.Element; } declare function useFormBuilder<TValues extends ObjectLiteral>(): { ref: React$1.RefObject<FormBuilder<TValues>>; getValues: (validation?: boolean) => OutputValues<TValues>; getBuilder: (validation?: boolean) => OutputValues<TValues>; setValues: (values: Partial<TValues>) => Promise<any>; clear: () => Promise<any>; }; export { CheckboxInput, CustomInput, DateInput, DatetimeInput, FileInput, FormBuilder, GroupInput, ItemsInput, MaskInput, MobileInput, NumberInput, OtpInput, PasswordInput, SelectInput, SwitchInput, TextInput, TimeInput, ToggleInput, FormBuilder as default, useFormBuilder }; export type { AutocompleteInputProps, AutocompleteOptionType, AutocompleteValueType, BuilderValue, CheckboxInputProps, CheckboxInputValueType, CustomInputProps, CustomInputValueType, DateInputProps, DateInputValueType, DatetimeInputProps, DatetimeInputValueType, FileInputProps, FileInputValueType, GroupInputProps, GroupInputValueType, Input, InputActions, InputImplement, InputProps, ItemsInputProps, ItemsInputValueType, MaskInputProps, MaskInputValueType, MobileInputProps, MobileInputValueType, NumberInputProps, NumberInputValueType, OtpInputProps, OtpInputValueType, OutputValues, PasswordInputProps, PasswordInputValueType, SelectInputProps, SelectInputValueType, TextInputProps, TextInputValueType, TimeInputProps, TimeInputValueType, ToggleInputProps, ToggleInputValueType, WrapperActions, WrapperElement };