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

45 lines
1.2 KiB
TypeScript
Raw Normal View History

2023-01-25 20:03:22 +00:00
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;
2023-01-26 16:15:59 +00:00
if (value != null && typeof value === 'string' && value.length > length)
2023-01-25 20:03:22 +00:00
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`,
};
};
}