UNPKG

@mmstack/form-validation

Version:

This is an internal library for providing localized validators :)

46 lines (45 loc) 2.09 kB
import { Validator } from '../validator.type'; import { createIsDateValidator } from './is-date'; import { createMaxDateValidator } from './max-date'; import { createMinDateValidator } from './min-date'; import { defaultFormatDate } from './util'; export type DateMessageFactories = { min: Parameters<typeof createMinDateValidator>[0]; max: Parameters<typeof createMaxDateValidator>[0]; isDate: Parameters<typeof createIsDateValidator>[0]; }; export type DateValidatorOptions = { required?: boolean; min?: Date | string; max?: Date | string; mustBe?: Date | string | null; not?: Date | string | null; oneOf?: (Date | string | null)[]; notOneOf?: (Date | string | null)[]; messageOptions?: { label?: string; }; }; export declare function createDateValidators<TDate = Date>(factories?: Partial<DateMessageFactories>, toDate?: (date: string | TDate) => Date, formatDate?: typeof defaultFormatDate, locale?: string, generalValidators?: { required: <T>(label?: string) => Validator<T>; mustBe: <T>(value: T, valueLabel?: string, matcher?: (a: T, b: T) => boolean) => Validator<T>; mustBeNull: <T>() => Validator<T>; not: <T>(value: T, valueLabel?: string, matcher?: (a: T, b: T) => boolean) => Validator<T>; oneOf: <T>(values: T[], toLabel?: (value: T) => string, identity?: (a: T) => string, delimiter?: string) => Validator<T>; notOneOf: <T>(values: T[], toLabel?: (value: T) => string, identity?: (a: T) => string, delimiter?: string) => Validator<T>; }, merger?: <T>(validators: Validator<T>[]) => ((value: T) => string) & { resolve: (mergedError: string) => { error: string; tooltip: string; }; }): { all: (opt: DateValidatorOptions) => ((value: TDate | null) => string) & { resolve: (mergedError: string) => { error: string; tooltip: string; }; }; min: (date: string | TDate) => Validator<string | TDate | null>; max: (date: string | TDate) => Validator<string | TDate | null>; isDate: () => Validator<string | TDate | null>; };