Skip to content

Commit a5471ae

Browse files
author
Adam Bradley
committed
change classList fallback for multiple args
1 parent 08dcca9 commit a5471ae

File tree

3 files changed

+45
-15
lines changed

3 files changed

+45
-15
lines changed

js/ext/angular/src/controller/ionicScrollController.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ angular.module('ionic.ui.scroll')
4444
scrollView.activatePullToRefresh(refresherHeight, function() {
4545
self.refresher.classList.add('active');
4646
}, function() {
47-
self.refresher.classList.remove('refreshing', 'active');
47+
self.refresher.classList.remove('refreshing');
48+
self.refresher.classList.remove('active');
4849
}, function() {
4950
self.refresher.classList.add('refreshing');
5051
$scope.onRefresh && $scope.onRefresh();
Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,54 @@
11

22
angular.element.prototype.addClass = function(cssClasses) {
3+
var x, y, cssClass, el, splitClasses, existingClasses;
34
if (cssClasses && cssClasses != 'ng-scope' && cssClasses != 'ng-isolate-scope') {
4-
for(var x=0; x<this.length; x++) {
5-
if(this[x].setAttribute) {
6-
this[x].classList.add.apply(this[x].classList, cssClasses.split(/\s+/));
5+
for(x=0; x<this.length; x++) {
6+
el = this[x];
7+
if(el.setAttribute) {
8+
9+
if(cssClasses.indexOf(' ') < 0) {
10+
el.classList.add(cssClasses);
11+
} else {
12+
existingClasses = (' ' + (el.getAttribute('class') || '') + ' ')
13+
.replace(/[\n\t]/g, " ");
14+
splitClasses = cssClasses.split(' ');
15+
16+
for (y=0; y<splitClasses.length; y++) {
17+
cssClass = splitClasses[y].trim();
18+
if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {
19+
existingClasses += cssClass + ' ';
20+
}
21+
}
22+
el.setAttribute('class', existingClasses.trim());
23+
}
724
}
825
}
926
}
1027
return this;
1128
};
1229

1330
angular.element.prototype.removeClass = function(cssClasses) {
31+
var x, y, splitClasses, cssClass, el;
1432
if (cssClasses) {
15-
for(var x=0; x<this.length; x++) {
16-
if(this[x].setAttribute) {
17-
this[x].classList.remove.apply(this[x].classList, cssClasses.split(/\s+/));
33+
for(x=0; x<this.length; x++) {
34+
el = this[x];
35+
if(el.getAttribute) {
36+
if(cssClasses.indexOf(' ') < 0) {
37+
el.classList.remove(cssClasses);
38+
} else {
39+
splitClasses = cssClasses.split(' ');
40+
41+
for (y=0; y<splitClasses.length; y++) {
42+
cssClass = splitClasses[y];
43+
el.setAttribute('class', (
44+
(" " + (el.getAttribute('class') || '') + " ")
45+
.replace(/[\n\t]/g, " ")
46+
.replace(" " + cssClass.trim() + " ", " ")).trim()
47+
);
48+
}
49+
}
1850
}
1951
}
2052
}
2153
return this;
22-
};
54+
};

js/ext/angular/test/poly.html

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,13 @@ <h1 class="title">Polyfill Tests</h1>
3434
Should be green by using ng-class
3535
</p>
3636

37-
<script>
38-
console.error = function(){
39-
alert(arguments)
40-
}
41-
</script>
42-
4337
<script src="../../../../dist/js/ionic.bundle.js"></script>
4438
<script>
4539

4640
document.getElementById('supportsClassList').classList.add('supported');
4741
document.getElementById('supportsClassList').classList.remove('not-supported');
4842

49-
document.getElementById('supportsClassListArgs').classList.add('support1', 'support2');
43+
document.getElementById('supportsClassListArgs').classList.add('support1', 'support2', 'support2');
5044
document.getElementById('supportsClassListArgs').classList.remove('not-supported1', 'not-supported2');
5145

5246
angular.module('ionicTest', ['ionic'])
@@ -55,6 +49,9 @@ <h1 class="title">Polyfill Tests</h1>
5549

5650
$scope.ngClassTest = 'supported';
5751

52+
var body = angular.element( document.body );
53+
body.addClass('class1 class2 class2');
54+
5855
});
5956

6057
</script>

0 commit comments

Comments
 (0)