import FormDatum from '../../utils/Datum/Form'; import { FormError } from '../../utils/errors'; import React from 'react'; import { Rule } from '../Rule/type'; export interface FormItemChildrenFuncParams { form: FormInstance; value: any; onChange: (value: any, ...args: any[]) => void; error: undefined | Error; } export interface FormItemProps extends Pick { className?: string; label?: React.ReactNode; labelAlign?: 'top' | 'right'; labelWidth?: number | string; required?: boolean; tip?: React.ReactNode; children: React.ReactNode | ((params: FormItemChildrenFuncParams) => React.ReactNode); style?: React.CSSProperties; grid?: number | { width?: number; offset?: number; responsive?: number; }; rules?: Rule[]; name?: string | string[]; defaultValue?: any; flow?: string[] | true; noStyle?: boolean; beforeChange?: (value: any, prevValue: any, form: FormInstance) => any; collectErrorInRoot?: boolean; } export interface FormItemErrorListContext { onUpdateRootErrors?: (id: string, error: Error) => void; } export interface IFormItemProps extends FormItemProps { formDatum: FormDatum; } export interface FormItemContextProps extends Pick { hasItemError?: boolean; } export interface FormContextProps { formDatum: FormDatum; disabled?: boolean; labelAlign?: 'top' | 'right' | 'left'; labelWidth?: string | number; animation?: boolean; preserve?: boolean; } export interface FormProps = {}> extends Omit, 'value' | 'onChange' | 'defaultValue' | 'onSubmit' | 'onError'> { className?: string; disabled?: boolean; defaultValue?: Partial; inline?: boolean; onError?: (error: any) => void; onReset?: () => void; onSubmit?: (value: T) => void; scrollToError?: boolean; style?: React.CSSProperties; labelAlign?: 'top' | 'right' | 'left'; labelWidth?: string | number; onChange?: (changeValues: Partial | T, value: T) => void; removeUndefined?: boolean; errors?: Record; animation?: boolean; form?: FormInstance; preserve?: boolean; } export interface FormHelpProps extends Pick { error?: Error; tip?: React.ReactNode; } export interface FieldSetChildrenFuncParams { onAppend(value: Value): void; onRemove(): void; onInsert(index: number, value: Value): void; list: any[]; index: number; value: any; } export interface FieldSetProps extends Pick { defaultValue?: Value[]; emptyRender?: (insert: (value: Value) => void) => React.ReactNode; name: string; rules?: Rule[]; children: React.ReactNode | ((params: FieldSetChildrenFuncParams) => React.ReactNode); flow?: string[]; preserve?: boolean; } export interface IFieldSetProps extends FieldSetProps { formDatum: FormDatum; } export interface FieldSetContextProps { path?: string; } export declare type WithFlowProps = IFieldSetProps | IFormItemProps; export interface WithFlowOutputProps { onFlowUpdateBind: (update: () => void) => void; } interface DatumSetParams { name: string | string[]; value: any; } export interface IDatumSetParams extends DatumSetParams { FOR_INTERNAL_USE_DISPATCH_CHANGE?: boolean; publishToChildrenItem?: boolean; } interface DatumSetErrorParams { name: string | string[]; error: FormError | Error | string; } export interface FormInstance { get(name: string | string[]): any; getValue(): Value; set(params: DatumSetParams): void; setValue(value: Partial): void; setError(params: DatumSetErrorParams): void; setFormError(errors: Record): void; validate(name: any): any; validateForm(names?: string[]): Promise; reset(names?: string[]): void; submit(): void; } export interface InternalFormInstance extends FormInstance { GET_INTERNAL_FORM_DATUM(): FormDatum; } export {};