import { Observable } from "rxjs"; import { ValidatorFn, ValidationErrors, AbstractControl as AbstractControlBase, AsyncValidatorFn } from "@angular/forms"; export declare type ValueProvider = (value?: TValue) => TResult; /** * Generic representation of Angular's AbstractControl */ export interface AbstractControl extends AbstractControlBase { value: TValue; } export declare const CustomValidators: { emailRegex: RegExp; /** * Triggers validation of related controls by specified predicate. * * @param control Control that triggers validation * @param predicate Related controls predicate */ triggerValidation: (control: AbstractControl, predicate: (siblingControl: AbstractControl) => boolean) => void; /** * Custom validation that requires non empty string values * * @param control AbstractControl * @returns Validation function */ required(control: AbstractControl): ValidationErrors | null; minDate(minDate: Date): ValidatorFn; minOrEqualDate(minOrEqualDate: Date): ValidatorFn; maxDate(maxDate: Date): ValidatorFn; maxOrEqualDate(maxOrEqualDate: Date): ValidatorFn; custom(valid: boolean): ValidatorFn; async(valid: Observable | Promise): AsyncValidatorFn; native(input?: HTMLInputElement): ValidatorFn; }; export interface ValidationItemConstructor { value: TResult | ValueProvider; text?: string; } /** * Contains validation data provider and provides generic method to validate AbstractControl */ export declare class ValidationItem implements ValidationItemConstructor { /** * Validation data provider */ value: TResult | ValueProvider; /** * Validation error text */ text?: string; constructor(props: Partial>); /** * Gets constant value if possible or executes provider function * * @param controlValue Actual AbstractControl value * @returns Validation data */ getValue(controlValue?: TValue): TResult; /** * Returns AbstractControl validation function based on provided validator and validation data * * @param validator AbstractControl validator * @param onValidationComplete Validation completed hook * @returns AbstractControl validation function */ validate(validator: (value: TResult) => ValidatorFn, onValidationComplete?: (control: AbstractControl, validationErrors: ValidationErrors | null) => void): ValidatorFn; /** * Returns AbstractControl async validation function based on provided validator and validation data * * @param validator AbstractControl validator * @param onValidationComplete Validation completed hook * @returns AbstractControl validation function */ validateAsync(validator: (value: TResult) => AsyncValidatorFn, onValidationComplete?: (control: AbstractControl, validationErrors: ValidationErrors | null) => void): AsyncValidatorFn; } export declare type ValidationConstructor = Partial<{ [K in keyof Validation]: Partial[K]>; }>; /** * Contains Field's available validation components */ export declare class Validation { [key: string]: ValidationItem | undefined; required?: ValidationItem; requiredTrue?: ValidationItem; minLength?: ValidationItem; maxLength?: ValidationItem; min?: ValidationItem; max?: ValidationItem; minDate?: ValidationItem; minOrEqualDate?: ValidationItem; maxDate?: ValidationItem; maxOrEqualDate?: ValidationItem; pattern?: ValidationItem; custom?: ValidationItem; async?: ValidationItem | Promise>; native?: ValidationItem; constructor(props: ValidationConstructor); /** * Builds AbstractControl validators based on Validation object * * @param validation * @returns */ static getValidators(validation: Validation): ValidatorFn[]; /** * Builds AbstractControl async validators based on Validation object * * @param validation * @returns */ static getAsyncValidators(validation: Validation): AsyncValidatorFn[]; }