@@ -35,7 +35,7 @@ export type NgClassType = string | string[] | Set<string> | {[klass: string]: an
35
35
*/
36
36
@Directive ( {
37
37
selector : `
38
- [class], [class .xs], [class.sm], [class.md], [class.lg], [class.xl],
38
+ [class.xs], [class.sm], [class.md], [class.lg], [class.xl],
39
39
[class.lt-sm], [class.lt-md], [class.lt-lg], [class.lt-xl],
40
40
[class.gt-xs], [class.gt-sm], [class.gt-md], [class.gt-lg],
41
41
@@ -77,41 +77,21 @@ export class ClassDirective extends BaseFxDirective
77
77
78
78
/** Deprecated selectors */
79
79
80
- /**
81
- * Base class selector values get applied immediately and are considered destructive overwrites to
82
- * all previous class assignments
83
- *
84
- * Delegate to NgClass:klass setter and cache value for base fallback from responsive APIs.
85
- */
86
- @Input ( 'class' )
87
- set classBase ( val : string ) {
88
- this . _classAdapter . cacheInput ( '_rawClass' , val , true ) ;
89
- this . _ngClassInstance . klass = val ;
90
- }
80
+ @Input ( 'class.xs' ) set classXs ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classXs' , val ) ; }
81
+ @Input ( 'class.sm' ) set classSm ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classSm' , val ) ; }
82
+ @Input ( 'class.md' ) set classMd ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classMd' , val ) ; }
83
+ @Input ( 'class.lg' ) set classLg ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classLg' , val ) ; }
84
+ @Input ( 'class.xl' ) set classXl ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classXl' , val ) ; }
91
85
92
- @Input ( 'class.xs' ) set classXs ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classXs' , val , true ) ; }
93
- @Input ( 'class.sm' ) set classSm ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classSm' , val , true ) ; }
94
- @Input ( 'class.md' ) set classMd ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classMd' , val , true ) ; }
95
- @Input ( 'class.lg' ) set classLg ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classLg' , val , true ) ; }
96
- @Input ( 'class.xl' ) set classXl ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classXl' , val , true ) ; }
86
+ @Input ( 'class.lt-sm' ) set classLtSm ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classLtSm' , val ) ; }
87
+ @Input ( 'class.lt-md' ) set classLtMd ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classLtMd' , val ) ; }
88
+ @Input ( 'class.lt-lg' ) set classLtLg ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classLtLg' , val ) ; }
89
+ @Input ( 'class.lt-xl' ) set classLtXl ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classLtXl' , val ) ; }
97
90
98
- @Input ( 'class.lt-sm' ) set classLtSm ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classLtSm' , val , true ) ; }
99
- @Input ( 'class.lt-md' ) set classLtMd ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classLtMd' , val , true ) ; }
100
- @Input ( 'class.lt-lg' ) set classLtLg ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classLtLg' , val , true ) ; }
101
- @Input ( 'class.lt-xl' ) set classLtXl ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classLtXl' , val , true ) ; }
102
-
103
- @Input ( 'class.gt-xs' ) set classGtXs ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classGtXs' , val , true ) ; }
104
- @Input ( 'class.gt-sm' ) set classGtSm ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classGtSm' , val , true ) ; }
105
- @Input ( 'class.gt-md' ) set classGtMd ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classGtMd' , val , true ) ; }
106
- @Input ( 'class.gt-lg' ) set classGtLg ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classGtLg' , val , true ) ; }
107
-
108
- /**
109
- * Initial value of the `class` attribute; used as
110
- * fallback and will be merged with nay `ngClass` values
111
- */
112
- get initialClasses ( ) : string {
113
- return this . _classAdapter . queryInput ( '_rawClass' ) || "" ;
114
- }
91
+ @Input ( 'class.gt-xs' ) set classGtXs ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classGtXs' , val ) ; }
92
+ @Input ( 'class.gt-sm' ) set classGtSm ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classGtSm' , val ) ; }
93
+ @Input ( 'class.gt-md' ) set classGtMd ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classGtMd' , val ) ; }
94
+ @Input ( 'class.gt-lg' ) set classGtLg ( val : NgClassType ) { this . _classAdapter . cacheInput ( 'classGtLg' , val ) ; }
115
95
116
96
/* tslint:enable */
117
97
constructor ( protected monitor : MediaMonitor ,
@@ -121,8 +101,9 @@ export class ClassDirective extends BaseFxDirective
121
101
122
102
super ( monitor , _ngEl , _renderer ) ;
123
103
124
- this . _classAdapter = new BaseFxDirectiveAdapter ( 'class' , monitor , _ngEl , _renderer ) ;
125
104
this . _ngClassAdapter = new BaseFxDirectiveAdapter ( 'ngClass' , monitor , _ngEl , _renderer ) ;
105
+ this . _classAdapter = new BaseFxDirectiveAdapter ( 'class' , monitor , _ngEl , _renderer ) ;
106
+ this . _classAdapter . cacheInput ( 'class' , _ngEl . nativeElement . getAttribute ( 'class' ) || '' ) ;
126
107
127
108
// Create an instance NgClass Directive instance only if `ngClass=""` has NOT been defined on
128
109
// the same host element; since the responsive variations may be defined...
@@ -157,7 +138,9 @@ export class ClassDirective extends BaseFxDirective
157
138
if ( ! this . _classAdapter . hasMediaQueryListener ) {
158
139
this . _configureMQListener ( ) ;
159
140
}
160
- this . _ngClassInstance . ngDoCheck ( ) ;
141
+ if ( this . _ngClassInstance ) {
142
+ this . _ngClassInstance . ngDoCheck ( ) ;
143
+ }
161
144
}
162
145
163
146
ngOnDestroy ( ) {
@@ -175,11 +158,12 @@ export class ClassDirective extends BaseFxDirective
175
158
* mql change events to onMediaQueryChange handlers
176
159
*/
177
160
protected _configureMQListener ( ) {
178
- this . _classAdapter . listenForMediaQueryChanges ( 'class' , '' , ( changes : MediaChange ) => {
161
+ const value = this . _classAdapter . queryInput ( 'class' ) ;
162
+ this . _classAdapter . listenForMediaQueryChanges ( 'class' , value , ( changes : MediaChange ) => {
179
163
this . _updateKlass ( changes . value ) ;
180
164
} ) ;
181
165
182
- this . _ngClassAdapter . listenForMediaQueryChanges ( 'ngClass' , '' , ( changes : MediaChange ) => {
166
+ this . _ngClassAdapter . listenForMediaQueryChanges ( 'ngClass' , value , ( changes : MediaChange ) => {
183
167
this . _updateNgClass ( changes . value ) ;
184
168
this . _ngClassInstance . ngDoCheck ( ) ; // trigger NgClass::_applyIterableChanges()
185
169
} ) ;
@@ -190,11 +174,11 @@ export class ClassDirective extends BaseFxDirective
190
174
* ::ngDoCheck() is not needed
191
175
*/
192
176
protected _updateKlass ( value ?: NgClassType ) {
193
- let klass = value || this . _classAdapter . queryInput ( 'class' ) || '' ;
177
+ let klass = value || this . _classAdapter . queryInput ( 'class' ) ;
194
178
if ( this . _classAdapter . mqActivation ) {
195
179
klass = this . _classAdapter . mqActivation . activatedInput ;
196
180
}
197
- this . _ngClassInstance . klass = klass || this . initialClasses ;
181
+ this . _ngClassInstance . klass = klass ;
198
182
}
199
183
200
184
/**
0 commit comments