@@ -6,6 +6,7 @@ export default {
6
6
currentSizeMappingIndex : null ,
7
7
windowResizeListenerDebounce : null ,
8
8
ghostMode : < %= options . ghostMode % > ,
9
+ isEmpty: true,
9
10
} ) ,
10
11
props : {
11
12
adUnit : {
@@ -121,6 +122,12 @@ export default {
121
122
refreshSlot ( ) {
122
123
googletag . pubads ( ) . refresh ( [ this . adSlot ] ) ;
123
124
} ,
125
+ handleSlotRenderEnded ( event ) {
126
+ if ( event . slot . getSlotId ( ) . getDomId ( ) !== this . divId ) {
127
+ return ;
128
+ }
129
+ this . isEmpty = ! ! event . isEmpty ;
130
+ } ,
124
131
/**
125
132
* Window resize event listener
126
133
* Attached only when responsive mode is enabled, it checks wether a different size
@@ -174,11 +181,15 @@ export default {
174
181
collapseEmptyDiv,
175
182
} = this ;
176
183
184
+
177
185
// Init Ad slot
178
186
googletag . cmd . push ( ( ) => {
187
+ const pubadsService = googletag . pubads ( )
188
+ pubadsService . addEventListener ( 'slotRenderEnded' , this . handleSlotRenderEnded ) ;
189
+
179
190
const adSlot = googletag
180
191
. defineSlot ( adUnitPath , this . formattedSize , divId )
181
- . addService ( googletag . pubads ( ) ) ;
192
+ . addService ( pubadsService ) ;
182
193
183
194
// Collapse empty div slot-level override
184
195
if ( collapseEmptyDiv !== null ) {
@@ -227,12 +238,14 @@ export default {
227
238
window . removeEventListener ( 'resize' , this . handleWindowResize ) ;
228
239
} ,
229
240
render ( h ) {
230
- const { divId, style } = this ;
241
+ const { divId, style, isEmpty } = this ;
242
+ let classAttr = isEmpty ? '<%= options.emptyClass %>' : '' ;
231
243
232
244
return h ( 'div' , {
233
245
style,
234
246
attrs : {
235
247
id : divId ,
248
+ class : classAttr ,
236
249
} ,
237
250
domProps : { innerHTML : '' } ,
238
251
} ) ;
0 commit comments