UNPKG

react-form-with-constraints

Version:
48 lines (47 loc) 1.75 kB
"use strict"; 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;