react-form-with-constraints
Version:
Simple form validation for React
44 lines (43 loc) • 1.52 kB
JavaScript
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());
}
}