UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

1 lines 12.4 kB
{"version":3,"sources":["directives.js"],"names":[],"mappings":"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","file":"angular2/src/forms/directives.es6","sourcesContent":["import {View, Component, Decorator, Ancestor, onChange, PropertySetter} from 'angular2/angular2';\nimport {Optional} from 'angular2/di';\nimport {isBlank, isPresent, isString, CONST} from 'angular2/src/facade/lang';\nimport {StringMapWrapper, ListWrapper} from 'angular2/src/facade/collection';\nimport {ControlGroup, Control} from './model';\nimport {Validators} from './validators';\n\n//export interface ControlValueAccessor {\n// writeValue(value):void{}\n// set onChange(fn){}\n//}\n\n/**\n * The default accessor for writing a value and listening to changes that is used by a {@link Control} directive.\n *\n * This is the default strategy that Angular uses when no other accessor is applied.\n *\n * # Example\n * ```\n * <input type=\"text\" [control]=\"loginControl\">\n * ```\n *\n * @exportedAs angular2/forms\n */\n@Decorator({\n selector: '[control]',\n hostListeners: {\n 'change' : 'onChange($event.target.value)',\n 'input' : 'onChange($event.target.value)'\n }\n})\nexport class DefaultValueAccessor {\n _setValueProperty:Function;\n onChange:Function;\n\n constructor(@PropertySetter('value') setValueProperty:Function) {\n this._setValueProperty = setValueProperty;\n this.onChange = (_) => {};\n }\n\n writeValue(value) {\n this._setValueProperty(value);\n }\n}\n\n/**\n * The accessor for writing a value and listening to changes on a checkbox input element.\n *\n *\n * # Example\n * ```\n * <input type=\"checkbox\" [control]=\"rememberLogin\">\n * ```\n *\n * @exportedAs angular2/forms\n */\n@Decorator({\n selector: 'input[type=checkbox][control]',\n hostListeners: {\n 'change' : 'onChange($event.target.checked)'\n }\n})\nexport class CheckboxControlValueAccessor {\n _setCheckedProperty:Function;\n onChange:Function;\n\n constructor(cd:ControlDirective, @PropertySetter('checked') setCheckedProperty:Function) {\n this._setCheckedProperty = setCheckedProperty;\n this.onChange = (_) => {};\n cd.valueAccessor = this; //ControlDirective should inject CheckboxControlDirective\n }\n\n writeValue(value) {\n this._setCheckedProperty(value);\n }\n}\n\n/**\n * Binds a control to a DOM element.\n *\n * # Example\n *\n * In this example, we bind the control to an input element. When the value of the input element changes, the value of\n * the control will reflect that change. Likewise, if the value of the control changes, the input element reflects that\n * change.\n *\n * Here we use {@link FormDirectives}, rather than importing each form directive individually, e.g.\n * `ControlDirective`, `ControlGroupDirective`. This is just a shorthand for the same end result.\n *\n * ```\n * @Component({selector: \"login-comp\"})\n * @View({\n * directives: [FormDirectives],\n * inline: \"<input type='text' [control]='loginControl'>\"\n * })\n * class LoginComp {\n * loginControl:Control;\n *\n * constructor() {\n * this.loginControl = new Control('');\n * }\n * }\n *\n * ```\n *\n * @exportedAs angular2/forms\n */\n@Decorator({\n lifecycle: [onChange],\n selector: '[control]',\n properties: {\n 'controlOrName' : 'control'\n }\n})\nexport class ControlDirective {\n _groupDirective:ControlGroupDirective;\n\n controlOrName:any;\n valueAccessor:any; //ControlValueAccessor\n\n validator:Function;\n\n constructor(@Optional() @Ancestor() groupDirective:ControlGroupDirective, valueAccessor:DefaultValueAccessor) {\n this._groupDirective = groupDirective;\n this.controlOrName = null;\n this.valueAccessor = valueAccessor;\n this.validator = Validators.nullValidator;\n }\n\n // TODO: vsavkin this should be moved into the constructor once static bindings\n // are implemented\n onChange(_) {\n this._initialize();\n }\n\n _initialize() {\n if(isPresent(this._groupDirective)) {\n this._groupDirective.addDirective(this);\n }\n\n var c = this._control();\n c.validator = Validators.compose([c.validator, this.validator]);\n\n this._updateDomValue();\n this._setUpUpdateControlValue();\n }\n\n _updateDomValue() {\n this.valueAccessor.writeValue(this._control().value);\n }\n\n _setUpUpdateControlValue() {\n this.valueAccessor.onChange = (newValue) => this._control().updateValue(newValue);\n }\n\n _control() {\n if (isString(this.controlOrName)) {\n return this._groupDirective.findControl(this.controlOrName);\n } else {\n return this.controlOrName;\n }\n }\n}\n\n/**\n * Binds a control group to a DOM element.\n *\n * # Example\n *\n * In this example, we bind the control group to the form element, and we bind the login and password controls to the\n * login and password elements.\n *\n * Here we use {@link FormDirectives}, rather than importing each form directive individually, e.g.\n * `ControlDirective`, `ControlGroupDirective`. This is just a shorthand for the same end result.\n *\n * ```\n * @Component({selector: \"login-comp\"})\n * @View({\n * directives: [FormDirectives],\n * inline: \"<form [control-group]='loginForm'>\" +\n * \"Login <input type='text' control='login'>\" +\n * \"Password <input type='password' control='password'>\" +\n * \"<button (click)=\"onLogin()\">Login</button>\" +\n * \"</form>\"\n * })\n * class LoginComp {\n * loginForm:ControlGroup;\n *\n * constructor() {\n * this.loginForm = new ControlGroup({\n * login: new Control(\"\"),\n * password: new Control(\"\")\n * });\n * }\n *\n * onLogin() {\n * // this.loginForm.value\n * }\n * }\n *\n * ```\n *\n * @exportedAs angular2/forms\n */\n@Decorator({\n selector: '[control-group]',\n properties: {\n 'controlGroup' : 'control-group'\n }\n})\nexport class ControlGroupDirective {\n _groupDirective:ControlGroupDirective;\n _controlGroupName:string;\n\n _controlGroup:ControlGroup;\n _directives:List<ControlDirective>;\n\n constructor(@Optional() @Ancestor() groupDirective:ControlGroupDirective) {\n this._groupDirective = groupDirective;\n this._directives = ListWrapper.create();\n }\n\n set controlGroup(controlGroup) {\n if (isString(controlGroup)) {\n this._controlGroupName = controlGroup;\n } else {\n this._controlGroup = controlGroup;\n }\n this._updateDomValue();\n }\n\n _updateDomValue() {\n ListWrapper.forEach(this._directives, (cd) => cd._updateDomValue());\n }\n\n addDirective(c:ControlDirective) {\n ListWrapper.push(this._directives, c);\n }\n\n findControl(name:string):any {\n return this._getControlGroup().controls[name];\n }\n\n _getControlGroup():ControlGroup {\n if (isPresent(this._controlGroupName)) {\n return this._groupDirective.findControl(this._controlGroupName)\n } else {\n return this._controlGroup;\n }\n }\n}\n\n/**\n *\n * A list of all the form directives used as part of a `@View` annotation.\n *\n * This is a shorthand for importing them each individually.\n *\n * @exportedAs angular2/forms\n */\n// todo(misko): rename to lover case as it is not a Type but a var.\nexport var FormDirectives = [\n ControlGroupDirective, ControlDirective, CheckboxControlValueAccessor, DefaultValueAccessor\n];\n"]}