homemanager-fe/src/components/form/validators.ts

45 lines
1.2 KiB
TypeScript

import { FormValidatorFn } from './validator.types';
export function MinLength(length: number, message?: string): FormValidatorFn {
return (_: string, value: unknown) => {
let isValid = true;
if (value != null && typeof value === 'string' && value.length < length)
isValid = false;
return {
isValid,
message: message || `Must be at least ${length} characters long`,
};
};
}
export function MaxLength(length: number, message?: string): FormValidatorFn {
return (_: string, value: unknown) => {
let isValid = true;
if (value != null && typeof value === 'string' && value.length > length)
isValid = false;
return {
isValid,
message: message || `Must be less than ${length} characters long`,
};
};
}
export function IsRequired(message?: string): FormValidatorFn {
return (_: string, value: unknown) => {
return {
isValid: !!value,
message: message || `Field is required`,
};
};
}
export function IsEmail(message?: string): FormValidatorFn {
return (_: string, value: unknown) => {
let isValid = value != null && /\S+@\S+\.\S+/.test(value as string);
return {
isValid,
message: message || `Must be a valid email address`,
};
};
}