37
modules/angular2/src/directives/class.js
vendored
Normal file
37
modules/angular2/src/directives/class.js
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
import {Decorator} from 'angular2/src/core/annotations/annotations';
|
||||
import {isPresent} from 'angular2/src/facade/lang';
|
||||
import {DOM} from 'angular2/src/dom/dom_adapter';
|
||||
import {NgElement} from 'angular2/src/core/dom/element';
|
||||
|
||||
@Decorator({
|
||||
selector: '[class]',
|
||||
bind: {
|
||||
'iterableChanges': 'class | keyValDiff'
|
||||
}
|
||||
})
|
||||
export class CSSClass {
|
||||
_domEl;
|
||||
constructor(ngEl: NgElement) {
|
||||
this._domEl = ngEl.domElement;
|
||||
}
|
||||
|
||||
_toggleClass(className, enabled) {
|
||||
if (enabled) {
|
||||
DOM.addClass(this._domEl, className);
|
||||
} else {
|
||||
DOM.removeClass(this._domEl, className);
|
||||
}
|
||||
}
|
||||
|
||||
set iterableChanges(changes) {
|
||||
if (isPresent(changes)) {
|
||||
changes.forEachAddedItem((record) => { this._toggleClass(record.key, record.currentValue); });
|
||||
changes.forEachChangedItem((record) => { this._toggleClass(record.key, record.currentValue); });
|
||||
changes.forEachRemovedItem((record) => {
|
||||
if (record.previousValue) {
|
||||
DOM.removeClass(this._domEl, record.key);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user