import { IListenerSet, IValidateResult, IForm, IListener, IOptionManagerOptions, IOptionManager, ISchema, IOptionManagerOptionsArray, IValidatorFunc } from './index'; export type IFieldType = string; export type IFieldStatus = 'edit' | 'preview' | 'disabled' | 'hidden'; export interface IFieldUI { [prop: string]: any; } export interface IFieldProps { [prop: string]: any; } export type IRuleTrigger = 'change' | 'blur' | 'submit'; export type IRuleStatus = 'normal' | 'error' | 'warning'; export type IRule = { trigger?: IRuleTrigger; status?: IRuleStatus; [prop: string]: any }; export type IEvent = | 'FORM_CHANGE' | 'FIELD_CHANGE' | 'VALUE_CHANGE' | 'VALID_CHANGE' | 'OPTIONS_CHANGE' | 'CHILDREN_CHANGE' | 'VALIDATE' | 'SUBMIT' | 'RESET' | 'BLUR' | 'EMPTY'; export interface IFieldParams { key: string; type?: any; status?: IFieldStatus; ui?: IFieldUI; props?: IFieldProps; rules?: IRule[]; listeners?: IListener[]; value?: any; options?: IOptionManagerOptions; } export type IFieldPurified = any; export interface IField { context: IForm; key: string; type: any; status: IFieldStatus; ui: IFieldUI; props: IFieldProps; initialType: any; initialStatus: IFieldStatus; initialUI: IFieldUI; initialProps: IFieldProps; rules: IRule[]; listeners: IListener[]; dirty: boolean; pristine: boolean; value: any; initialValue: any, valid: boolean; message: string; validStatus: IRuleStatus; optionManager: IOptionManager; options: IOptionManagerOptionsArray; initialize: (params: IFieldParams) => void; validate: (trigger?: IRuleTrigger) => Promise; setValid: (result: IValidateResult) => void; setValue: (value: any) => Promise; setProps: (props: IFieldProps) => void; setUI: (ui: IFieldUI) => void; setStatus: (status: IFieldStatus) => void; setOptions: (options: IOptionManagerOptionsArray) => void; setType: (type: any) => void; set: (state: IListenerSet) => void; unset: (state: IListenerSet) => void; getValue: () => any; blur: () => Promise; reset: () => Promise; empty: () => Promise; purify: () => IFieldPurified; onValidate: (callback: IValidatorFunc) => void; on: (event: IEvent, listener: (...args: any[]) => void) => void; emit: (event: IEvent, ...args: any[]) => void; removeListener: (event: IEvent, listener: (...args: any[]) => void) => void; triggerEvent: (event: IEvent) => void; } export interface IFieldMap { [key: string]: IFieldEnum; } export interface IFieldList { context: IForm; key: string; type: string; status: IFieldStatus; ui: IFieldUI; props: IFieldProps; initialStatus: IFieldStatus; initialUI: IFieldUI; initialProps: IFieldProps; rules: IRule[]; listeners: IListener[]; initialValue: { [key: string]: any }[]; value: { [key: string]: any }[]; valid: boolean; message: string; validStatus: IRuleStatus; titles: any[]; children: IForm[]; initialize: (params: IFieldParams) => void; copy: (index: number) => Promise; add: () => Promise; delete: (index: number) => Promise; move: (fromIndex: number, toIndex: number) => Promise; validate: (trigger?: IRuleTrigger) => Promise; childrenValidate: () => Promise; setValid: (result: IValidateResult) => void; setValue: (value: { [key: string]: any }[]) => Promise; setProps: (props: IFieldProps) => void; setUI: (ui: IFieldUI) => void; setStatus: (status: IFieldStatus) => void; set: (state: IListenerSet) => void; unset: (state: IListenerSet) => void; getValue: () => any[]; reset: () => Promise; empty: () => Promise; purify: () => IFieldPurified[]; on: (event: IEvent, listener: (...args: any[]) => void) => void; emit: (event: IEvent, ...args: any[]) => void; removeListener: (event: IEvent, listener: (...args: any[]) => void) => void; triggerEvent: (event: IEvent) => void; } export interface IFieldListParams { children: ISchema; key: string; type: string; status: IFieldStatus; props: IFieldProps; ui: IFieldUI; rules: IRule[]; listeners: IListener[]; value: { [key: string]: any }[]; } export interface IFieldGroup { context: IForm; key: string; type: string; status: IFieldStatus; ui: IFieldUI; props: IFieldProps; initialStatus: IFieldStatus; initialUI: IFieldUI; initialProps: IFieldProps; rules: IRule[]; listeners: IListener[]; value: { [key: string]: any }; initialValue: { [key: string]: any }; valid: boolean; message: string; validStatus: IRuleStatus; children: IFieldEnum[]; initialize: (params: IFieldParams) => void; validate: (trigger?: IRuleTrigger) => Promise; childrenValidate: () => Promise; setValid: (result: IValidateResult) => void; setValue: (value: { [key: string]: any }) => Promise; setProps: (props: IFieldProps) => void; setUI: (ui: IFieldUI) => void; setStatus: (status: IFieldStatus) => void; set: (state: IListenerSet) => void; unset: (state: IListenerSet) => void; getValue: () => { [key: string]: any }; reset: () => Promise; empty: () => Promise; purify: () => { [key: string]: any }; on: (event: IEvent, listener: (...args: any[]) => void) => void; emit: (event: IEvent, ...args: any[]) => void; removeListener: (event: IEvent, listener: (...args: any[]) => void) => void; triggerEvent: (event: IEvent) => void; } export interface IFieldGroupParams { children: ISchema; key: string; type: string; status: IFieldStatus; props: IFieldProps; ui: IFieldUI; rules: IRule[]; listeners: IListener[]; value: { [key: string]: any }; } export type IFieldEnum = IField | IFieldList | IFieldGroup; export type IFieldEnumParams = IFieldParams | IFieldGroupParams | IFieldListParams;