feat(view): reimplemented property setters using change detection

This commit is contained in:
vsavkin
2015-04-21 11:47:53 -07:00
parent 8a92a1f13e
commit 8ccafb0524
36 changed files with 510 additions and 469 deletions

View File

@ -1,4 +1,4 @@
import {Component, View, Attribute, PropertySetter} from 'angular2/angular2';
import {Component, View, Attribute} from 'angular2/angular2';
import {isPresent} from 'angular2/src/facade/lang';
import {KEY_SPACE} from 'angular2_material/src/core/constants'
import {KeyboardEvent} from 'angular2/src/facade/browser';
@ -11,6 +11,12 @@ import {KeyboardEvent} from 'angular2/src/facade/browser';
},
hostListeners: {
'keydown': 'onKeydown($event)'
},
hostProperties: {
'tabindex': 'tabindex',
'role': 'attr.role',
'checked': 'attr.aria-checked',
'disabled_': 'attr.aria-disabled'
}
})
@View({
@ -19,38 +25,21 @@ import {KeyboardEvent} from 'angular2/src/facade/browser';
})
export class MdCheckbox {
/** Whether this checkbox is checked. */
checked_: boolean;
checked: boolean;
/** Whether this checkbox is disabled. */
disabled_: boolean;
/** Setter for `aria-checked` attribute. */
ariaCheckedSetter: Function;
/** Setter for `role` attribute. */
role: string;
/** Setter for `aria-disabled` attribute. */
ariaDisabledSetter: Function;
/** Setter for tabindex */
tabindex: any;
constructor(
@Attribute('tabindex') tabindex: string,
@PropertySetter('tabindex') tabindexSetter: Function,
@PropertySetter('attr.role') roleSetter: Function,
@PropertySetter('attr.aria-checked') ariaCheckedSetter: Function,
@PropertySetter('attr.aria-disabled') ariaDisabledSetter: Function) {
this.ariaCheckedSetter = ariaCheckedSetter;
this.ariaDisabledSetter = ariaDisabledSetter;
roleSetter('checkbox');
constructor(@Attribute('tabindex') tabindex: string) {
this.role = 'checkbox';
this.checked = false;
tabindexSetter(isPresent(tabindex) ? tabindex : '0');
}
get checked() {
return this.checked_;
}
set checked(value) {
this.checked_ = value;
this.ariaCheckedSetter(value);
this.tabindex = isPresent(tabindex) ? tabindex : '0';
}
get disabled() {
@ -59,7 +48,6 @@ export class MdCheckbox {
set disabled(value) {
this.disabled_ = isPresent(value) && value !== false;
this.ariaDisabledSetter(this.disabled_);
}
onKeydown(event: KeyboardEvent) {
@ -76,6 +64,5 @@ export class MdCheckbox {
}
this.checked = !this.checked;
this.ariaCheckedSetter(this.checked);
}
}