import React from 'react'; import { IProps } from '@uiw/utils'; import { FormItemProps } from './FormItem'; import './style/form.less'; export interface FormProps extends IProps, Omit, 'onChange' | 'onSubmit' | 'children'> { prefixCls?: string; fields?: Record>; onSubmit?: (state: FormSubmitProps, event: React.FormEvent) => any; afterSubmit?: (result: FormAfterSubmitProps) => any; onChange?: (state: FormState) => void; onSubmitError?: (evn: any) => any; resetOnSubmit?: boolean; children?: (handle: FormChildrenProps) => JSX.Element; } export interface FormState { submitting: boolean; initial: Record; current: FormState['initial']; errors: Record; } export interface FormFieldsProps extends Omit, 'children'> { name?: string; children?: ((handle: FormChildrenProps) => JSX.Element) | JSX.Element; help?: React.ReactNode; labelFor?: string; inline?: boolean; checked?: boolean; initialValue?: string | number | T; required?: boolean; validator?: (currentValue: any) => any; } export interface FormSubmitProps { initial: FormState['initial']; current: FormState['current']; } export interface FormAfterSubmitProps { state: FormState; response: any; reset: () => void; } export interface FormChildrenProps { onChange?: (env: React.BaseSyntheticEvent, list?: string[]) => void; onSubmit?: (env: React.FormEvent) => void; fields?: Record; resetForm?: () => void; canSubmit?: () => boolean; state?: FormState; } export type FormElementProps = { id?: string; name?: string; value?: string | boolean; checked?: boolean; onChange?: (env: React.BaseSyntheticEvent, list?: string[]) => void; }; export type FormRefType = Record<'onSubmit' | 'resetForm' | 'getFieldValues' | 'setFields' | 'getError' | 'setFieldValue', Function>; declare const _default: React.ForwardRefExoticComponent & React.RefAttributes>; export default _default;