import React from 'react'; import { WrappedFormUtils, ValidationRule, FormComponentProps } from 'asp-antd-compatible/lib/form/Form'; import { ColProps } from 'asp-antd-compatible/lib/grid/col'; export interface FormUtils extends WrappedFormUtils { /** * 通过Promise方式进行校验 */ validateFieldsPromise: () => Promise<{ errors: any; values: V; }>; } declare type EditorComponent = { /** * 组件的唯一名称 */ name: string; /** * 当前的组件实列 */ component: JSX.Element; }; declare type Rule = { /** * 组件的唯一名称 */ name: string; /** * 当前组件的校验规则 */ rules?: ValidationRule[]; }; declare type Props = { /** * 语义话脚本来进行布局 * * ------------------------ * 1. 表示当前列的名称 * 2. 表示当前表单的输入类型 * 3. 表示当前表单占用第几格 * - 如果不写第4个参数,则表示占用剩下的空间 * ------------------------ * * [name input] [name input] [name input] * [name input] [name input] [name input] */ script: string; form?: WrappedFormUtils; labelCol?: ColProps; onSubmit?: React.FormEventHandler; wrapperCol?: ColProps; rules?: Rule[]; rowSpace: number; initialValues?: any; /** * 注册的组件信息,所有注册的组件都可以在语义化脚本中进行布局操作 */ components?: EditorComponent[]; refExt?: Function | any; style?: React.CSSProperties; /** * 表格数据改变后触发的事件。 */ onValuesChange?: (changedValues: any, allValues: any) => void; }; declare type State = {}; declare class FormItemProps { name?: string; span?: number; label?: string; rules?: ValidationRule[]; labelCol?: ColProps; wrapperCol?: ColProps; initialValue?: any; component?: EditorComponent | undefined; } /** * 可进行脚本语义化的form表单 */ declare class Form extends React.Component { static defaultProps: { components: never[]; labelCol: { md: { span: number; }; }; wrapperCol: { md: { span: number; }; }; rowSpace: number; }; /** * 创建Form对象 */ static create(): import("asp-antd-compatible/lib/form/interface").ConnectedComponentClass, "script" | "style" | "components" | "refExt" | "wrappedComponentRef" | "onSubmit" | "labelCol" | "wrapperCol" | "rules" | "rowSpace" | "initialValues" | "onValuesChange">>; state: {}; components: EditorComponent[]; rules: Rule[]; constructor(props: Props & FormComponentProps); render(): JSX.Element; componentDidMount(): void; renderFormItems(): JSX.Element[]; protected getPropsComponents(): EditorComponent[]; protected getRulesComponents(): Rule[]; /** * 将脚本信息,转换为json对象 */ protected getScriptToJsonArray(): FormItemProps[][]; } declare const ScriptForm: import("asp-antd-compatible/lib/form/interface").ConnectedComponentClass, "script" | "style" | "components" | "refExt" | "wrappedComponentRef" | "onSubmit" | "labelCol" | "wrapperCol" | "rules" | "rowSpace" | "initialValues" | "onValuesChange">>; export { ScriptForm as Form };