react-form-with-constraints
Version:
Simple form validation for React
42 lines (41 loc) • 1.48 kB
JavaScript
import { clearArray } from './clearArray';
import { FieldFeedbackType } from './FieldFeedbackType';
export class Field {
constructor(name) {
this.name = name;
this.validations = [];
}
addOrReplaceValidation(validation) {
const i = this.validations.findIndex(_validation => _validation.key === validation.key);
if (i > -1)
this.validations[i] = validation;
else
this.validations.push(validation);
}
clearValidations() {
clearArray(this.validations);
}
hasFeedbacksOfType(type, fieldFeedbacksKey) {
return this.validations.some(fieldFeedback => (fieldFeedbacksKey === undefined ||
fieldFeedback.key.startsWith(`${fieldFeedbacksKey}.`)) &&
fieldFeedback.type === type &&
fieldFeedback.show === true);
}
hasErrors(fieldFeedbacksKey) {
return this.hasFeedbacksOfType(FieldFeedbackType.Error, fieldFeedbacksKey);
}
hasWarnings(fieldFeedbacksKey) {
return this.hasFeedbacksOfType(FieldFeedbackType.Warning, fieldFeedbacksKey);
}
hasInfos(fieldFeedbacksKey) {
return this.hasFeedbacksOfType(FieldFeedbackType.Info, fieldFeedbacksKey);
}
hasFeedbacks(fieldFeedbacksKey) {
return (this.hasErrors(fieldFeedbacksKey) ||
this.hasWarnings(fieldFeedbacksKey) ||
this.hasInfos(fieldFeedbacksKey));
}
isValid() {
return !this.hasErrors();
}
}