@@ -41,19 +41,16 @@ export default {
41
41
} ,
42
42
43
43
cleanup ( value ) {
44
- if ( this . prevKeys ) {
45
- var i = this . prevKeys . length
46
- while ( i -- ) {
47
- var key = this . prevKeys [ i ]
48
- if ( ! key ) continue
49
- if ( isPlainObject ( key ) ) {
50
- var keys = Object . keys ( key )
51
- for ( var k = 0 ; k < keys . length ; k ++ ) {
52
- removeClass ( this . el , keys [ k ] )
53
- }
54
- } else {
55
- removeClass ( this . el , key )
56
- }
44
+ if ( ! this . prevKeys ) return
45
+
46
+ var i = this . prevKeys . length
47
+ while ( i -- ) {
48
+ var key = this . prevKeys [ i ]
49
+ if ( ! key ) continue
50
+
51
+ var keys = isPlainObject ( key ) ? Object . keys ( key ) : [ key ]
52
+ for ( var j = 0 , l = keys . length ; j < l ; j ++ ) {
53
+ toggleClasses ( this . el , keys [ j ] , removeClass )
57
54
}
58
55
}
59
56
}
@@ -63,9 +60,8 @@ function setObjectClasses (el, obj) {
63
60
var keys = Object . keys ( obj )
64
61
for ( var i = 0 , l = keys . length ; i < l ; i ++ ) {
65
62
var key = keys [ i ]
66
- if ( obj [ key ] ) {
67
- addClass ( el , key )
68
- }
63
+ if ( ! obj [ key ] ) continue
64
+ toggleClasses ( el , key , addClass )
69
65
}
70
66
}
71
67
@@ -77,3 +73,31 @@ function stringToObject (value) {
77
73
}
78
74
return res
79
75
}
76
+
77
+ /**
78
+ * Add or remove a class/classes on an element
79
+ *
80
+ * @param {Element } el
81
+ * @param {String } key The class name. This may or may not
82
+ * contain a space character, in such a
83
+ * case we'll deal with multiple class
84
+ * names at once.
85
+ * @param {Function } fn
86
+ */
87
+
88
+ function toggleClasses ( el , key , fn ) {
89
+ key = key . trim ( )
90
+
91
+ if ( key . indexOf ( ' ' ) === - 1 ) {
92
+ fn ( el , key )
93
+ return
94
+ }
95
+
96
+ // The key contains one or more space characters.
97
+ // Since a class name doesn't accept such characters, we
98
+ // treat it as multiple classes.
99
+ var keys = key . split ( ' ' )
100
+ for ( var i = 0 , l = keys . length ; i < l ; i ++ ) {
101
+ fn ( el , keys [ i ] )
102
+ }
103
+ }
0 commit comments