UNPKG

@quantumart/mobx-form-validation-kit

Version:
175 lines (174 loc) 6.36 kB
import { IReactionDisposer } from 'mobx'; import { ControlTypes } from './сontrol-types'; import { ValidationEvent } from './validation-event'; import { ValidationEventTypes } from './validation-event-types'; import { IDictionary } from './idictionary'; import { Delegate } from './delegate'; export declare type UpdateValidValueHandler<TEntity> = (val: TEntity) => void; export declare type ValidatorsFunction<TAbstractControl extends AbstractControl> = (control: TAbstractControl) => Promise<ValidationEvent[]>; export declare type ControlsCollection = IDictionary<AbstractControl>; export declare abstract class AbstractControl { /** * Type * / Тип контрола */ readonly type: ControlTypes; protected inProcessing: boolean; /** * Validation in progress * / В процессе анализа */ abstract processing: boolean; private isActiveFunc; /** * Error checking is disabled (control is always valid) * / Проверка ошибок отключена (контрол всегда валиден) */ get disabled(): boolean; /** * Error checking enabled * / Проверка ошибок включена */ get active(): boolean; /** * Valid * / Валидные данные */ get valid(): boolean; /** * Invalid * / Невалидные данные */ abstract invalid: boolean; /** * The value has not changed * / Значение не изменялось */ get pristine(): boolean; /** * Value changed * / Значение изменялось */ abstract dirty: boolean; /** * The field was out of focus * / Поле не было в фокусе */ get untouched(): boolean; /** * The field was in focus * / Поле было в фокусе */ abstract touched: boolean; /** * The field is now in focus * / Поле сейчас в фокусе */ abstract focused: boolean; private _serverErrors; /** * Additional (server) errors * / Дополнительтные (серверные) ошибки */ get serverErrors(): string[]; /** * Additional (server) errors * / Дополнительтные (серверные) ошибки */ set serverErrors(value: string[]); /** * Errors list * / Список ошибок */ errors: ValidationEvent[]; /** * The field contains errors * / Присутствуют ошибки */ hasErrors(): boolean; /** * Warnings messages list * / Список сообщений с типом "Внимание" */ warnings: ValidationEvent[]; /** * The field contains warnings messages * / Присутствуют сообщения с типом "Внимание" */ hasWarnings(): boolean; /** * Informations messages list * / Сообщения с типом "Информационные сообщения" */ informationMessages: ValidationEvent[]; /** * The field contains informations messages * / Присутствуют сообщения с типом "Информационные сообщения" */ hasInformationMessages(): boolean; /** * Successes messages list * / Сообщения с типом "успешная валидация" */ successes: ValidationEvent[]; /** * The field contains successes * / Присутствуют сообщения с типом "успешная валидация" */ hasSuccesses(): boolean; /** * Max message level * / Максимальный уровень сообщения */ get maxEventLevel(): ValidationEventTypes; /** * Set marker "value changed" * / Изменяет состояния маркета "данные изменены" */ abstract setDirty(dirty: boolean): this; /** * Set marker "field was out of focus" * / Изменяет состояния маркета "значение было в фокусе" */ abstract setTouched(touched: boolean): this; /** * Field for transferring additional information * / Поле для передачи дополнительной информации (в логике не участвует) */ additionalData: any; element: HTMLElement | null; /** * Callback function of on change * / Сообщает факт изменения данных */ onChange: Delegate<AbstractControl>; constructor( /** * Function enable validation by condition (always enabled by default) * / Функция включение валидаций по условию (по умолчанию включено всегда) */ activate: (() => boolean) | null | undefined, additionalData: any, type: ControlTypes); /** * Dispose (call in unmount react control) * / Вызвать при удалении контрола */ dispose(): void; /** * Get error by key * / Получить ошибку по ключу */ error: (key: string) => ValidationEvent | undefined; private newRequestValidation; private lastValidators; private lastValidationFunction; protected reactionOnValidatorDisposers: IReactionDisposer[]; protected onValidation: <TAbstractControl extends AbstractControl>(validators: ValidatorsFunction<TAbstractControl>[], onValidationFunction: () => void, afterCheck: () => void) => Promise<void>; /** * Waiting for end of validation * Ожидание окончания проверки */ wait(): Promise<void>; abstract executeAsyncValidation(validator: (control: this) => Promise<ValidationEvent[]>): Promise<ValidationEvent[]>; abstract runInAction(action: () => void): void; protected baseExecuteAsyncValidation: (validator: (control: this) => Promise<ValidationEvent[]>, onValidationFunction: () => void) => Promise<ValidationEvent[]>; }