@quantumart/mobx-form-validation-kit
Version:
mobx typescript form control validation
175 lines (174 loc) • 6.36 kB
TypeScript
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[]>;
}