MCPcopy Create free account
hub / github.com/apache/cloudstack / classDirective

Function classDirective

tools/ngui/static/js/lib/angular.js:12537–12592  ·  view source on GitHub ↗
(name, selector)

Source from the content-addressed store, hash-verified

12535}];
12536
12537function classDirective(name, selector) {
12538 name = 'ngClass' + name;
12539 return ngDirective(function(scope, element, attr) {
12540 var oldVal = undefined;
12541
12542 scope.$watch(attr[name], ngClassWatchAction, true);
12543
12544 attr.$observe('class', function(value) {
12545 var ngClass = scope.$eval(attr[name]);
12546 ngClassWatchAction(ngClass, ngClass);
12547 });
12548
12549
12550 if (name !== 'ngClass') {
12551 scope.$watch('$index', function($index, old$index) {
12552 var mod = $index & 1;
12553 if (mod !== old$index & 1) {
12554 if (mod === selector) {
12555 addClass(scope.$eval(attr[name]));
12556 } else {
12557 removeClass(scope.$eval(attr[name]));
12558 }
12559 }
12560 });
12561 }
12562
12563
12564 function ngClassWatchAction(newVal) {
12565 if (selector === true || scope.$index % 2 === selector) {
12566 if (oldVal && !equals(newVal,oldVal)) {
12567 removeClass(oldVal);
12568 }
12569 addClass(newVal);
12570 }
12571 oldVal = copy(newVal);
12572 }
12573
12574
12575 function removeClass(classVal) {
12576 if (isObject(classVal) && !isArray(classVal)) {
12577 classVal = map(classVal, function(v, k) { if (v) return k });
12578 }
12579 element.removeClass(isArray(classVal) ? classVal.join(' ') : classVal);
12580 }
12581
12582
12583 function addClass(classVal) {
12584 if (isObject(classVal) && !isArray(classVal)) {
12585 classVal = map(classVal, function(v, k) { if (v) return k });
12586 }
12587 if (classVal) {
12588 element.addClass(isArray(classVal) ? classVal.join(' ') : classVal);
12589 }
12590 }
12591 });
12592}
12593
12594/**

Callers 1

angular.jsFile · 0.85

Calls 4

ngDirectiveFunction · 0.85
ngClassWatchActionFunction · 0.85
addClassFunction · 0.85
removeClassFunction · 0.85

Tested by

no test coverage detected