react-form-with-constraints
Version:
Simple form validation for React
46 lines (45 loc) • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Field = void 0;
const clearArray_1 = require("./clearArray");
const FieldFeedbackType_1 = require("./FieldFeedbackType");
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() {
(0, clearArray_1.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_1.FieldFeedbackType.Error, fieldFeedbacksKey);
}
hasWarnings(fieldFeedbacksKey) {
return this.hasFeedbacksOfType(FieldFeedbackType_1.FieldFeedbackType.Warning, fieldFeedbacksKey);
}
hasInfos(fieldFeedbacksKey) {
return this.hasFeedbacksOfType(FieldFeedbackType_1.FieldFeedbackType.Info, fieldFeedbacksKey);
}
hasFeedbacks(fieldFeedbacksKey) {
return (this.hasErrors(fieldFeedbacksKey) ||
this.hasWarnings(fieldFeedbacksKey) ||
this.hasInfos(fieldFeedbacksKey));
}
isValid() {
return !this.hasErrors();
}
}
exports.Field = Field;