MCPcopy
hub / github.com/angular-ui/ui-grid / classDirective

Function classDirective

lib/test/angular/1.8.0/angular.js:27906–28041  ·  view source on GitHub ↗
(name, selector)

Source from the content-addressed store, hash-verified

27904*/
27905
27906function classDirective(name, selector) {
27907 name = 'ngClass' + name;
27908 var indexWatchExpression;
27909
27910 return ['$parse', function($parse) {
27911 return {
27912 restrict: 'AC',
27913 link: function(scope, element, attr) {
27914 var classCounts = element.data('$classCounts');
27915 var oldModulo = true;
27916 var oldClassString;
27917
27918 if (!classCounts) {
27919 // Use createMap() to prevent class assumptions involving property
27920 // names in Object.prototype
27921 classCounts = createMap();
27922 element.data('$classCounts', classCounts);
27923 }
27924
27925 if (name !== 'ngClass') {
27926 if (!indexWatchExpression) {
27927 indexWatchExpression = $parse('$index', function moduloTwo($index) {
27928 // eslint-disable-next-line no-bitwise
27929 return $index & 1;
27930 });
27931 }
27932
27933 scope.$watch(indexWatchExpression, ngClassIndexWatchAction);
27934 }
27935
27936 scope.$watch($parse(attr[name], toClassString), ngClassWatchAction);
27937
27938 function addClasses(classString) {
27939 classString = digestClassCounts(split(classString), 1);
27940 attr.$addClass(classString);
27941 }
27942
27943 function removeClasses(classString) {
27944 classString = digestClassCounts(split(classString), -1);
27945 attr.$removeClass(classString);
27946 }
27947
27948 function updateClasses(oldClassString, newClassString) {
27949 var oldClassArray = split(oldClassString);
27950 var newClassArray = split(newClassString);
27951
27952 var toRemoveArray = arrayDifference(oldClassArray, newClassArray);
27953 var toAddArray = arrayDifference(newClassArray, oldClassArray);
27954
27955 var toRemoveString = digestClassCounts(toRemoveArray, -1);
27956 var toAddString = digestClassCounts(toAddArray, 1);
27957
27958 attr.$addClass(toAddString);
27959 attr.$removeClass(toRemoveString);
27960 }
27961
27962 function digestClassCounts(classArray, count) {
27963 var classesToUpdate = [];

Callers 1

angular.jsFile · 0.70

Calls 2

createMapFunction · 0.70
$parseFunction · 0.70

Tested by

no test coverage detected