///
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>;