clean(forms): cleanup

This commit is contained in:
vsavkin
2015-02-25 12:54:27 -08:00
parent f27e538e2c
commit cf9cb61665
6 changed files with 32 additions and 34 deletions

View File

@ -68,11 +68,8 @@ class StringMapWrapper {
m.forEach((k, v) => fn(v, k));
}
static HashMap merge(HashMap a, HashMap b) {
var m = {};
a.forEach((k, v) => m[k] = v);
var m = new HashMap.from(a);
b.forEach((k, v) => m[k] = v);
return m;
}
static bool isEmpty(Map m) => m.isEmpty;

View File

@ -9,6 +9,7 @@ export const INVALID = "INVALID";
// get value():any;
// validator:Function;
// get status():string;
// get valid():boolean;
// get errors():Map;
// get active():boolean {}
// updateValue(value:any){}
@ -19,19 +20,19 @@ export class Control {
_value:any;
_status:string;
_errors;
_updated:boolean;
_dirty:boolean;
_parent:ControlGroup;
validator:Function;
constructor(value:any, validator:Function = nullValidator) {
this._value = value;
this.validator = validator;
this._updated = true;
this._dirty = true;
}
updateValue(value:any) {
this._value = value;
this._updated = true;
this._dirty = true;
this._updateParent();
}
@ -63,8 +64,8 @@ export class Control {
}
_updateIfNeeded() {
if (this._updated) {
this._updated = false;
if (this._dirty) {
this._dirty = false;
this._errors = this.validator(this);
this._status = isPresent(this._errors) ? INVALID : VALID;
}
@ -81,14 +82,14 @@ export class ControlGroup {
_value:any;
_status:string;
_errors;
_updated:boolean;
_dirty:boolean;
validator:Function;
controls;
constructor(controls, validator:Function = controlGroupValidator) {
this.controls = controls;
this.validator = validator;
this._updated = true;
this._dirty = true;
this._setParentForControls();
}
@ -119,8 +120,8 @@ export class ControlGroup {
}
_updateIfNeeded() {
if (this._updated) {
this._updated = false;
if (this._dirty) {
this._dirty = false;
this._value = this._reduceValue();
this._errors = this.validator(this);
this._status = isPresent(this._errors) ? INVALID : VALID;
@ -138,7 +139,7 @@ export class ControlGroup {
}
_controlChanged() {
this._updated = true;
this._dirty = true;
}
}

View File

@ -1,8 +1,6 @@
import {isBlank, isPresent} from 'angular2/src/facade/lang';
import {List, ListWrapper, StringMapWrapper} from 'angular2/src/facade/collection';
import {Decorator} from 'angular2/core';
import {ControlGroup, Control, ControlDirective} from 'angular2/forms';
import {ControlDirective} from 'angular2/forms';
import * as validators from 'angular2/forms';
@Decorator({

View File

@ -25,7 +25,12 @@ export function controlGroupValidator(c:ControlGroup) {
var res = {};
StringMapWrapper.forEach(c.controls, (control, name) => {
if (control.active && isPresent(control.errors)) {
res[name] = control.errors;
StringMapWrapper.forEach(control.errors, (value, error) => {
if (! StringMapWrapper.contains(res, error)) {
res[error] = [];
}
ListWrapper.push(res[error], control);
});
}
});
return StringMapWrapper.isEmpty(res) ? null : res;