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

Function classDirective

lib/test/angular/1.7.0/angular.js:26962–27093  ·  view source on GitHub ↗
(name, selector)

Source from the content-addressed store, hash-verified

26960*/
26961
26962function classDirective(name, selector) {
26963 name = 'ngClass' + name;
26964 var indexWatchExpression;
26965
26966 return ['$parse', function($parse) {
26967 return {
26968 restrict: 'AC',
26969 link: function(scope, element, attr) {
26970 var classCounts = element.data('$classCounts');
26971 var oldModulo = true;
26972 var oldClassString;
26973
26974 if (!classCounts) {
26975 // Use createMap() to prevent class assumptions involving property
26976 // names in Object.prototype
26977 classCounts = createMap();
26978 element.data('$classCounts', classCounts);
26979 }
26980
26981 if (name !== 'ngClass') {
26982 if (!indexWatchExpression) {
26983 indexWatchExpression = $parse('$index', function moduloTwo($index) {
26984 // eslint-disable-next-line no-bitwise
26985 return $index & 1;
26986 });
26987 }
26988
26989 scope.$watch(indexWatchExpression, ngClassIndexWatchAction);
26990 }
26991
26992 scope.$watch($parse(attr[name], toClassString), ngClassWatchAction);
26993
26994 function addClasses(classString) {
26995 classString = digestClassCounts(split(classString), 1);
26996 attr.$addClass(classString);
26997 }
26998
26999 function removeClasses(classString) {
27000 classString = digestClassCounts(split(classString), -1);
27001 attr.$removeClass(classString);
27002 }
27003
27004 function updateClasses(oldClassString, newClassString) {
27005 var oldClassArray = split(oldClassString);
27006 var newClassArray = split(newClassString);
27007
27008 var toRemoveArray = arrayDifference(oldClassArray, newClassArray);
27009 var toAddArray = arrayDifference(newClassArray, oldClassArray);
27010
27011 var toRemoveString = digestClassCounts(toRemoveArray, -1);
27012 var toAddString = digestClassCounts(toAddArray, 1);
27013
27014 attr.$addClass(toAddString);
27015 attr.$removeClass(toRemoveString);
27016 }
27017
27018 function digestClassCounts(classArray, count) {
27019 var classesToUpdate = [];

Callers 1

angular.jsFile · 0.70

Calls 2

createMapFunction · 0.70
$parseFunction · 0.70

Tested by

no test coverage detected