/// import { InternalRuleItem, Value, Values, RuleItem, ValidateMessages } from 'async-validator'; import { IMixin4Legacy } from '@mini-types/alipay'; export { Value, Values }; export type Validator = (rule: Omit, value: Value) => void | Promise; export type ValidatorRender = (form: Form) => { validator: Validator; }; export type FormRuleItem = Omit | ValidatorRender; export type Rule = FormRuleItem | FormRuleItem[]; export type Rules = Record; export type FormConfig = { rules?: Rules; initialValues?: Values; validateMessages?: ValidateMessages; }; export type ValidateStatus = 'default' | 'success' | 'error' | 'validating'; export interface ValidatorStatus { status: ValidateStatus; errors: string[]; } export interface FromItemRef { setFormData: (values: Values) => void; getFormData: () => Values; getProps: () => Record; on: (callback: (trigger: EventTrigger, value?: Value) => void) => void; } export type ValidateTrigger = 'onChange' | 'onBlur' | 'onFocus'; export type EventTrigger = ValidateTrigger | 'didUnmount' | 'deriveDataFromProps'; export declare class Form { /** * 表单初始值 */ private initialValues; /** * 原始规则,用户传入的跟之前的规则区别在于validator */ private rules; /** * 表单ref组件对象 */ private fields; /** * 验证提示模板 */ private validateMessages; /** * 表单字段 change侦听 */ private changeListeners; /** * 依赖表 */ private dependenciesMap; /** * Form构建 * @param formConfig 表单配置项 */ constructor(formConfig?: FormConfig); /** * 用户传入的rules转换成async-validator rules * @param rules 校验规则 */ private transformRules; /** * 遍历表单field对象 * @param callback */ private eachField; /** * 更新 rules * @param rules */ updateRules(rules: Rules): void; /** * 设置 rules * @param rules */ private setRules; /** * 添加表单对象 * @param ref 表单ref对象 */ addItem(ref: FromItemRef, customName?: string): void; /** * 设置表单值 * @param name 表单名称 * @param value 表单初始值 */ setFieldValue(name: string, value: Value): void; /** * 设置表单值 * @param name 表单名称 * @param value 表单初始值 */ setFieldsValue(values: Values): void; /** * 设置 initialValues,这个操作不会对页面进行修改,要是需要重置表单可跟上 reset 方法; * 这样是对于表单已经在编辑,但是需要重新initialValues的场景 * * eg: * this.setInitialValues(initialValues); * this.reset(); * * @param initialValues */ setInitialValues(initialValues: Values): void; /** * 获取对应字段名的值 * @param name * @returns */ getFieldValue(name: string): any; /** * 获取一组字段名对应的值 * @param nameList * @returns */ getFieldsValue(nameList?: string[]): Values; /** * 获取对应字段名的校验器状态 * @param name * @returns */ getFieldValidatorStatus(name: string): ValidatorStatus; /** * 获取一组字段名的校验器状态 * @param nameList * @returns */ getFieldsValidatorStatus(nameList?: string[]): Record; /** * 设置对应字段名的校验器状态 * @param name 表单名称 * @param validatorStatus 校验状态 * @returns */ setFieldValidatorStatus(name: string, validatorStatus: ValidatorStatus): void; /** * 设置一组字段名的校验器状态 * @param fieldsValidatorStatus 表单校验状态 * @returns */ setFieldsValidatorStatus(fieldsValidatorStatus: Record): void; /** * 检查对应字段是否被用户操作过 * @param name 字段名称 * @returns */ isFieldTouched(name: string): boolean; /** * 指定表单字段值更新时触发回调方法 * @param name 表单字段名称 * @param callback 回调方法 */ onValueChange(name: string, callback: (value: Value, allValues: Values) => void): void; /** * 表单字段值更新时触发回调方法 * @param name 表单字段名称 * @param callback 回调方法 */ onValuesChange(callback: (changedValues: Values, allValues: Values) => void): void; /** * 表单提交 */ submit(): Promise; /** * 表单重置 */ reset(): void; } export declare function createForm({ methods }?: { methods?: {}; }): IMixin4Legacy<{ formData: { value: Value; } & ValidatorStatus; }, Record, { emit(trigger: EventTrigger, value?: Value): void; setFormData(values: Values): void; getFormData(): { value: Value; } & ValidatorStatus; on(callback: (trigger: EventTrigger, value?: Value) => void): void; getProps: Record; }, MiniProgram.UnknownRecord, MiniProgram.UnknownRecord>;