react-hook-form
Version:
Performant, flexible and extensible forms library for React Hooks
43 lines • 2.12 kB
TypeScript
import { INPUT_VALIDATION_RULES } from '../constants';
import { Message } from './errors';
import { FieldValues } from './fields';
import { FieldPath, FieldPathValue } from './path';
export type ValidationValue = boolean | number | string | RegExp;
export type ValidationRule<TValidationValue extends ValidationValue = ValidationValue> = TValidationValue | ValidationValueMessage<TValidationValue>;
export type ValidationValueMessage<TValidationValue extends ValidationValue = ValidationValue> = {
value: TValidationValue;
message: Message;
};
export type ValidateResult = Message | Message[] | boolean | undefined;
export type Validate<TFieldValue, TFormValues> = (value: TFieldValue, formValues: TFormValues) => ValidateResult | Promise<ValidateResult>;
export type RegisterOptions<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = Partial<{
required: Message | ValidationRule<boolean>;
min: ValidationRule<number | string>;
max: ValidationRule<number | string>;
maxLength: ValidationRule<number>;
minLength: ValidationRule<number>;
validate: Validate<FieldPathValue<TFieldValues, TFieldName>, TFieldValues> | Record<string, Validate<FieldPathValue<TFieldValues, TFieldName>, TFieldValues>>;
value: FieldPathValue<TFieldValues, TFieldName>;
setValueAs: (value: any) => any;
shouldUnregister?: boolean;
onChange?: (event: any) => void;
onBlur?: (event: any) => void;
disabled: boolean;
deps: FieldPath<TFieldValues> | FieldPath<TFieldValues>[];
}> & ({
pattern?: ValidationRule<RegExp>;
valueAsNumber?: false;
valueAsDate?: false;
} | {
pattern?: undefined;
valueAsNumber?: false;
valueAsDate?: true;
} | {
pattern?: undefined;
valueAsNumber?: true;
valueAsDate?: false;
});
export type InputValidationRules = typeof INPUT_VALIDATION_RULES;
export type MaxType = InputValidationRules['max'] | InputValidationRules['maxLength'];
export type MinType = InputValidationRules['min'] | InputValidationRules['minLength'];
//# sourceMappingURL=validator.d.ts.map