UNPKG

react-form-with-constraints

Version:
44 lines (43 loc) 1.52 kB
import { assert } from './assert'; import { EventEmitter } from './EventEmitter'; import { Field } from './Field'; export var FieldEvent; (function (FieldEvent) { FieldEvent["Added"] = "FIELD_ADDED"; FieldEvent["Removed"] = "FIELD_REMOVED"; })(FieldEvent || (FieldEvent = {})); export class FieldsStore extends 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); assert(fields.length === 0 || fields.length === 1, `Cannot have more than 1 field matching '${fieldName}'`); if (fields.length === 0) { const newField = new 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()); } }