Validator Class for Form Validation - salimakhtar92/ReactJs GitHub Wiki
class Validation {
constructor(rules) {
this.validationRules = rules;
}
validate(state) {
let validation = this.valid(this.validationRules);
this.validationRules.forEach(rule => {
if(!validation[rule.field].isInvalid) {
const fieldValue = state[rule.field];
const validationMethod = rule.method;
if(validationMethod(fieldValue) !== rule.validWhen){
this.inValid(validation, rule);
}
}
});
return validation;
}
inValid(validation, rule) {
validation[rule.field] = {isInvalid: true, message: rule.message};
validation.isValid = false;
}
valid(rules) {
const validation = {};
rules.forEach(rule => {
validation[rule.field] = {isInvalid: false, message: ''};
});
return {isValid: true, ...validation};
}
}
export default Validation;
Initialisation of validator class
const validationRules = [
{
field: 'firstName',
method: (value) => Boolean(value),
validWhen: true,
message: 'Please enter the First Name'
},
{
field: 'firstName',
method: (value) => value.length > 4,
validWhen: true,
message: 'First Name should be contain atleast 5 char'
},
{
field: 'lastName',
method: (value) => Boolean(value),
validWhen: true,
message: 'Please enter the Last Name'
}
];
const validator = new Validation(validationRules);
const validationState = {
firstName: '',
lastName: ''
}
const validation = validator.validate(validationState);