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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@ -69,6 +69,9 @@ class StringMapWrapper {
|
||||
static void set(Map map, key, value) {
|
||||
map[key] = value;
|
||||
}
|
||||
static void delete(Map m, k) {
|
||||
m.remove(k);
|
||||
}
|
||||
static void forEach(Map m, fn(v, k)) {
|
||||
m.forEach((k, v) => fn(v, k));
|
||||
}
|
||||
|
@ -62,6 +62,7 @@ export class StringMapWrapper {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
static delete(map, key) { delete map[key]; }
|
||||
static forEach(map, callback) {
|
||||
for (var prop in map) {
|
||||
if (map.hasOwnProperty(prop)) {
|
||||
|
Reference in New Issue
Block a user