@mmstack/form-validation
Version:
This is an internal library for providing localized validators :)
46 lines (45 loc) • 2.09 kB
TypeScript
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>;
};