import React, { Dispatch, ReactElement, ReactNode, Ref, RefObject, SetStateAction, ElementType } from 'react'; import { Obj, OverridableProps, Size } from '../../types'; import { FieldPath } from '../../utils'; import { FieldError, FormItem, FormItemProps, FormItemRef } from './formItem'; import { FormRelatable } from './formRelatable'; import { DescriptionsProps, DescriptionsSharedProps } from '../descriptions'; import { GridOwnProps } from '../grid'; export type FormValue = Obj; export type FormSharedProps = { /** 必填字段的标记,默认为`*` */ requiredMark?: ReactNode; /** variant为"grid"或"table"时会渲染Descriptions组件,并传递variant属性,默认为`grid` */ variant?: 'plain' | 'grid' | 'table'; size?: Size; }; interface FormOwnProps extends FormSharedProps, DescriptionsSharedProps, GridOwnProps { ref?: Ref>; /** 最外层元素的ref,默认{@link ref}属性已经被{@link FormRef}取代 */ wrapperRef?: Ref; initialValue?: V; onChange?(field: FieldPath, value: any, formValue: V): void; onFinish?(value: V): any; items?: (FormItemProps & Obj)[]; descriptionsProps?: DescriptionsProps; } export type FormProps = OverridableProps, C>; type FormContext = { inForm?: boolean; itemsContainer?: Map; formRef?: RefObject | null>; }; declare const FormContext: React.Context>; export declare function useFormContext(): FormContext; type FormValueContext = { formValue?: V; setFieldValue?(field: FieldPath, value: any, silent?: boolean): void; }; declare const FormValueContext: React.Context>; export declare function useFormValueContext(): FormValueContext; export declare function useFormStyleContext(): FormSharedProps; export type FormRef = { submit(): Promise; getFieldValue(field: FieldPath): T; getFormValue(): V; getFieldError(field: FieldPath): FieldError | undefined; getFormErrors(): { [p: string]: FieldError; }; setFormValue: Dispatch>; mergeFormValue(value: Partial): void; setFieldValue(field: FieldPath, value: any): void; resetForm(): void; resetField(field: FieldPath): void; isFormTouched(): boolean; isFieldTouched(field: FieldPath): boolean; /** @private 用于dataGrid内的filterBubbleContent组件的"重置"功能 */ _resetFieldAndCallChange(field: FieldPath): void; }; export declare const Form: { (props: FormProps): ReactElement; Item: typeof FormItem; Relatable: typeof FormRelatable; }; export {};