MCPcopy Index your code
hub / github.com/angular-ui/ui-grid / classDirective

Function classDirective

lib/test/angular/1.4.3/angular.js:22375–22492  ·  view source on GitHub ↗
(name, selector)

Source from the content-addressed store, hash-verified

22373});
22374
22375function classDirective(name, selector) {
22376 name = 'ngClass' + name;
22377 return ['$animate', function($animate) {
22378 return {
22379 restrict: 'AC',
22380 link: function(scope, element, attr) {
22381 var oldVal;
22382
22383 scope.$watch(attr[name], ngClassWatchAction, true);
22384
22385 attr.$observe('class', function(value) {
22386 ngClassWatchAction(scope.$eval(attr[name]));
22387 });
22388
22389
22390 if (name !== 'ngClass') {
22391 scope.$watch('$index', function($index, old$index) {
22392 // jshint bitwise: false
22393 var mod = $index & 1;
22394 if (mod !== (old$index & 1)) {
22395 var classes = arrayClasses(scope.$eval(attr[name]));
22396 mod === selector ?
22397 addClasses(classes) :
22398 removeClasses(classes);
22399 }
22400 });
22401 }
22402
22403 function addClasses(classes) {
22404 var newClasses = digestClassCounts(classes, 1);
22405 attr.$addClass(newClasses);
22406 }
22407
22408 function removeClasses(classes) {
22409 var newClasses = digestClassCounts(classes, -1);
22410 attr.$removeClass(newClasses);
22411 }
22412
22413 function digestClassCounts(classes, count) {
22414 // Use createMap() to prevent class assumptions involving property
22415 // names in Object.prototype
22416 var classCounts = element.data('$classCounts') || createMap();
22417 var classesToUpdate = [];
22418 forEach(classes, function(className) {
22419 if (count > 0 || classCounts[className]) {
22420 classCounts[className] = (classCounts[className] || 0) + count;
22421 if (classCounts[className] === +(count > 0)) {
22422 classesToUpdate.push(className);
22423 }
22424 }
22425 });
22426 element.data('$classCounts', classCounts);
22427 return classesToUpdate.join(' ');
22428 }
22429
22430 function updateClasses(oldClasses, newClasses) {
22431 var toAdd = arrayDifference(newClasses, oldClasses);
22432 var toRemove = arrayDifference(oldClasses, newClasses);

Callers 1

angular.jsFile · 0.70

Calls 4

ngClassWatchActionFunction · 0.70
arrayClassesFunction · 0.70
addClassesFunction · 0.70
removeClassesFunction · 0.70

Tested by

no test coverage detected