import { FormItemControl } from "./form-item-control"; import type { FormItemControlArgs, FormItemControlOptions } from "./form-item-control"; import type { Rule } from "ant-design-vue/lib/form"; import type { VNode } from "vue"; import type { BuildInValidator } from "./validator"; export declare class FormItem { protected static readonly defaultFormItemOptions: FormItemOptions; constructor(options: Pick & Partial>, control: FormItemControlArgs); options: FormItemOptions; /** * 表单项控件对象. 用于描述表单项的控件类型, 控件值, 控件属性, 事件等. */ control: FormItemControl; get value(): TYPE; set value(value: TYPE); onValueChange: (value: TYPE) => void; /** * 将该表单项控件的值赋值到指定的表单数据对象中. * @param data */ assignToFormData(data: Record): void; /** * 重置表单项控件值为初始值. */ reset(): void; /** * 创建表单项控件对象 * @param options * @param args * @protected */ protected buildFormItemControl(options: Partial>, ...args: Array): FormItemControl; } export interface FormItemOptions { /** * 表单项名称, 用于表单项的唯一标识. * **必填项** */ name: string; /** * 表单项标签 */ label: string; /** * 表单项是否必填 */ rules: Array & { validator?: (...args: any) => any; buildInValidator?: BuildInValidator; }>; required: boolean; /** * @deprecated 无法解决映射到多个未定义属性时的双向绑定问题. * 表单项控件的值如何映射到表单绑定的 data 中. 默认为该表单项的 name 属性值. * * * 当值为字符串时, 表示映射到 data 中的字段名. * * 当值为函数时, 可自定义映射逻辑. 函数参数为表单项控件的值和表单项控件的原始数据. * ```typescript * // 将表单项控件的值映射到 data 中的 field1 字段 * valueMapTo: (value) => { * data["field1"] = value; * } * ``` */ valueMapTo: string | ((value: TYPE, rawData: Record, options: FormItemOptions) => void); /** * 表单项标签后缀 */ labelSuffix?: (props: { field: FormItem; }) => Array | VNode; /** * 表单项标签前缀 */ labelPrefix?: (props: { field: FormItem; }) => Array | VNode; events: Record; slots: Record; }