UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

1 lines 15.8 kB
{"version":3,"sources":["model.js"],"names":[],"mappings":"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","file":"angular2/src/forms/model.js","sourcesContent":["import {isPresent} from 'angular2/src/facade/lang';\nimport {Observable, EventEmitter, ObservableWrapper} from 'angular2/src/facade/async';\nimport {StringMap, StringMapWrapper, ListWrapper, List} from 'angular2/src/facade/collection';\nimport {Validators} from './validators';\n\n/**\n * Indicates that a Control is valid, i.e. that no errors exist in the input value.\n *\n * @exportedAs angular2/forms\n */\nexport const VALID = \"VALID\";\n\n/**\n * Indicates that a Control is invalid, i.e. that an error exists in the input value.\n *\n * @exportedAs angular2/forms\n */\nexport const INVALID = \"INVALID\";\n\n//interface IControl {\n// get value():any;\n// validator:Function;\n// get status():string;\n// get valid():boolean;\n// get errors():Map;\n// get pristine():boolean;\n// get dirty():boolean;\n// updateValue(value:any){}\n// setParent(parent){}\n//}\n\n/**\n * Omitting from external API doc as this is really an abstract internal concept.\n */\nexport class AbstractControl {\n _value:any;\n _status:string;\n _errors:StringMap;\n _pristine:boolean;\n _parent:any; /* ControlGroup | ControlArray */\n validator:Function;\n\n _valueChanges:EventEmitter;\n\n constructor(validator:Function) {\n this.validator = validator;\n this._pristine = true;\n }\n\n get value():any {\n return this._value;\n }\n\n get status():string {\n return this._status;\n }\n\n get valid():boolean {\n return this._status === VALID;\n }\n\n get errors():StringMap {\n return this._errors;\n }\n\n get pristine():boolean {\n return this._pristine;\n }\n\n get dirty():boolean {\n return ! this.pristine;\n }\n\n get valueChanges():Observable {\n return this._valueChanges;\n }\n\n setParent(parent){\n this._parent = parent;\n }\n\n _updateParent() {\n if (isPresent(this._parent)){\n this._parent._updateValue();\n }\n }\n}\n\n/**\n * Defines a part of a form that cannot be divided into other controls.\n *\n * `Control` is one of the three fundamental building blocks used to define forms in Angular, along with \n * {@link ControlGroup} and {@link ControlArray}.\n *\n * @exportedAs angular2/forms\n */\nexport class Control extends AbstractControl {\n constructor(value:any, validator:Function = Validators.nullValidator) {\n super(validator);\n this._setValueErrorsStatus(value);\n this._valueChanges = new EventEmitter();\n }\n\n updateValue(value:any):void {\n this._setValueErrorsStatus(value);\n this._pristine = false;\n\n ObservableWrapper.callNext(this._valueChanges, this._value);\n\n this._updateParent();\n }\n\n _setValueErrorsStatus(value) {\n this._value = value;\n this._errors = this.validator(this);\n this._status = isPresent(this._errors) ? INVALID : VALID;\n }\n}\n\n/**\n * Defines a part of a form, of fixed length, that can contain other controls.\n *\n * A ControlGroup aggregates the values and errors of each {@link Control} in the group. Thus, if one of the controls \n * in a group is invalid, the entire group is invalid. Similarly, if a control changes its value, the entire group \n * changes as well.\n *\n * `ControlGroup` is one of the three fundamental building blocks used to define forms in Angular, along with \n * {@link Control} and {@link ControlArray}. {@link ControlArray} can also contain other controls, but is of variable \n * length.\n *\n * @exportedAs angular2/forms\n */\nexport class ControlGroup extends AbstractControl {\n controls:StringMap;\n _optionals:StringMap;\n\n constructor(controls:StringMap, optionals:StringMap = null, validator:Function = Validators.group) {\n super(validator);\n this.controls = controls;\n this._optionals = isPresent(optionals) ? optionals : {};\n\n this._valueChanges = new EventEmitter();\n\n this._setParentForControls();\n this._setValueErrorsStatus();\n }\n\n include(controlName:string):void {\n StringMapWrapper.set(this._optionals, controlName, true);\n this._updateValue();\n }\n\n exclude(controlName:string):void {\n StringMapWrapper.set(this._optionals, controlName, false);\n this._updateValue();\n }\n\n contains(controlName:string):boolean {\n var c = StringMapWrapper.contains(this.controls, controlName);\n return c && this._included(controlName);\n }\n\n _setParentForControls() {\n StringMapWrapper.forEach(this.controls, (control, name) => {\n control.setParent(this);\n });\n }\n\n _updateValue() {\n this._setValueErrorsStatus();\n this._pristine = false;\n\n ObservableWrapper.callNext(this._valueChanges, this._value);\n\n this._updateParent();\n }\n\n _setValueErrorsStatus() {\n this._value = this._reduceValue();\n this._errors = this.validator(this);\n this._status = isPresent(this._errors) ? INVALID : VALID;\n }\n\n _reduceValue() {\n return this._reduceChildren({}, (acc, control, name) => {\n acc[name] = control.value;\n return acc;\n });\n }\n\n _reduceChildren(initValue:any, fn:Function) {\n var res = initValue;\n StringMapWrapper.forEach(this.controls, (control, name) => {\n if (this._included(name)) {\n res = fn(res, control, name);\n }\n });\n return res;\n }\n\n _included(controlName:string):boolean {\n var isOptional = StringMapWrapper.contains(this._optionals, controlName);\n return !isOptional || StringMapWrapper.get(this._optionals, controlName);\n }\n}\n\n/**\n * Defines a part of a form, of variable length, that can contain other controls.\n *\n * A `ControlArray` aggregates the values and errors of each {@link Control} in the group. Thus, if one of the controls \n * in a group is invalid, the entire group is invalid. Similarly, if a control changes its value, the entire group \n * changes as well.\n *\n * `ControlArray` is one of the three fundamental building blocks used to define forms in Angular, along with \n * {@link Control} and {@link ControlGroup}. {@link ControlGroup} can also contain other controls, but is of fixed \n * length.\n *\n * @exportedAs angular2/forms\n */\nexport class ControlArray extends AbstractControl {\n controls:List;\n\n constructor(controls:List<AbstractControl>, validator:Function = Validators.array) {\n super(validator);\n this.controls = controls;\n\n this._valueChanges = new EventEmitter();\n\n this._setParentForControls();\n this._setValueErrorsStatus();\n }\n\n at(index:number):AbstractControl {\n return this.controls[index];\n }\n\n push(control:AbstractControl):void {\n ListWrapper.push(this.controls, control);\n control.setParent(this);\n this._updateValue();\n }\n\n insert(index:number, control:AbstractControl):void {\n ListWrapper.insert(this.controls, index, control);\n control.setParent(this);\n this._updateValue();\n }\n\n removeAt(index:number):void {\n ListWrapper.removeAt(this.controls, index);\n this._updateValue();\n }\n\n get length():number {\n return this.controls.length;\n }\n\n _updateValue() {\n this._setValueErrorsStatus();\n this._pristine = false;\n\n ObservableWrapper.callNext(this._valueChanges, this._value);\n\n this._updateParent();\n }\n\n _setParentForControls() {\n ListWrapper.forEach(this.controls, (control) => {\n control.setParent(this);\n });\n }\n\n _setValueErrorsStatus() {\n this._value = ListWrapper.map(this.controls, (c) => c.value);\n this._errors = this.validator(this);\n this._status = isPresent(this._errors) ? INVALID : VALID;\n }\n}\n"]}