react-form-with-constraints
Version:
Simple form validation for React
48 lines (47 loc) • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FieldsStore = exports.FieldEvent = void 0;
const assert_1 = require("./assert");
const EventEmitter_1 = require("./EventEmitter");
const Field_1 = require("./Field");
var FieldEvent;
(function (FieldEvent) {
FieldEvent["Added"] = "FIELD_ADDED";
FieldEvent["Removed"] = "FIELD_REMOVED";
})(FieldEvent = exports.FieldEvent || (exports.FieldEvent = {}));
class FieldsStore extends EventEmitter_1.EventEmitter {
constructor() {
super(...arguments);
this.fields = new Array();
}
getField(fieldName) {
const fields = this.fields.filter(_field => _field.name === fieldName);
return fields.length === 1 ? fields[0] : undefined;
}
addField(fieldName) {
const fields = this.fields.filter(_field => _field.name === fieldName);
(0, assert_1.assert)(fields.length === 0 || fields.length === 1, `Cannot have more than 1 field matching '${fieldName}'`);
if (fields.length === 0) {
const newField = new Field_1.Field(fieldName);
this.fields.push(newField);
this.emitSync(FieldEvent.Added, newField);
}
else {
}
}
removeField(fieldName) {
const fields = this.fields.filter(_field => _field.name === fieldName);
const index = this.fields.indexOf(fields[0]);
if (index > -1) {
this.fields.splice(index, 1);
this.emitSync(FieldEvent.Removed, fieldName);
}
}
isValid() {
return this.fields.every(field => field.isValid());
}
hasFeedbacks() {
return this.fields.some(field => field.hasFeedbacks());
}
}
exports.FieldsStore = FieldsStore;