4
4
decorateLinks ,
5
5
getMetadata ,
6
6
getConfig ,
7
+ loadBlock ,
7
8
localizeLink ,
8
- loadStyle ,
9
9
} from '../../utils/utils.js' ;
10
10
11
11
import {
@@ -217,8 +217,6 @@ class Footer {
217
217
</svg>
218
218
${ regionPickerTextElem }
219
219
</a>` ;
220
- regionPickerElem . dataset . modalPath = `${ url . pathname } #_inline` ;
221
- regionPickerElem . dataset . modalHash = url . hash ;
222
220
const regionPickerWrapperClass = 'feds-regionPicker-wrapper' ;
223
221
this . elements . regionPicker = toFragment `<div class="${ regionPickerWrapperClass } ">
224
222
${ regionPickerElem }
@@ -232,48 +230,24 @@ class Footer {
232
230
// Hash -> region selector opens a modal
233
231
decorateAutoBlock ( regionPickerElem ) ; // add modal-specific attributes
234
232
// TODO remove logs after finding the root cause for the region picker 404s -> MWPW-143627
235
- regionPickerElem . href = url . hash ;
236
233
if ( regionPickerElem . classList [ 0 ] !== 'modal' ) {
237
234
lanaLog ( {
238
235
message : `Modal block class missing from region picker pre loading the block; locale: ${ locale } ; regionPickerElem: ${ regionPickerElem . outerHTML } ` ,
239
236
tags : 'errorType=warn,module=global-footer' ,
240
237
} ) ;
241
238
}
242
- loadStyle ( `${ base } /blocks/modal/modal.css` ) ;
243
- const { default : initModal } = await import ( '../modal/modal.js' ) ;
244
- const modal = await initModal ( regionPickerElem ) ;
245
-
246
- const loadRegionNav = async ( ) => {
247
- const block = document . querySelector ( '.region-nav' ) ;
248
- if ( block && getConfig ( ) . standaloneGnav ) {
249
- // on standalone the region-nav will fail to load automatically through
250
- // the modal calling fragment.js. In that case we will have data-failed=true
251
- // and we should manually load region nav
252
- // If that's not the case then we're not a standalone gnav
253
- // and we mustn't load region-nav twice.
254
- if ( block . getAttribute ( 'data-failed' ) !== 'true' ) return ;
255
- block . classList . add ( 'hide' ) ;
256
- loadStyle ( `${ base } /blocks/region-nav/region-nav.css` ) ;
257
- const { default : initRegionNav } = await import ( '../region-nav/region-nav.js' ) ;
258
- initRegionNav ( block ) ;
259
- // decoratePlaceholders(block, getConfig());
260
- block . classList . remove ( 'hide' ) ;
261
- }
262
- } ;
263
-
264
- if ( modal ) await loadRegionNav ( ) ; // just in case the modal is already open
265
-
239
+ await loadBlock ( regionPickerElem ) ; // load modal logic and styles
266
240
if ( regionPickerElem . classList [ 0 ] !== 'modal' ) {
267
241
lanaLog ( {
268
242
message : `Modal block class missing from region picker post loading the block; locale: ${ locale } ; regionPickerElem: ${ regionPickerElem . outerHTML } ` ,
269
243
tags : 'errorType=warn,module=global-footer' ,
270
244
} ) ;
271
245
}
246
+ // 'decorateAutoBlock' logic replaces class name entirely, need to add it back
247
+ regionPickerElem . classList . add ( regionPickerClass ) ;
272
248
regionPickerElem . addEventListener ( 'click' , ( ) => {
273
249
if ( ! isRegionPickerExpanded ( ) ) {
274
250
regionPickerElem . setAttribute ( 'aria-expanded' , 'true' ) ;
275
- // wait for the modal to load before we load the region nav
276
- window . addEventListener ( 'milo:modal:loaded' , loadRegionNav , { once : true } ) ;
277
251
}
278
252
} ) ;
279
253
// Set aria-expanded to false when region modal is closed
@@ -288,8 +262,7 @@ class Footer {
288
262
regionSelector . href = localizeLink ( regionSelector . href ) ;
289
263
decorateAutoBlock ( regionSelector ) ; // add fragment-specific class(es)
290
264
this . elements . regionPicker . append ( regionSelector ) ; // add fragment after regionPickerElem
291
- const { default : initFragment } = await import ( '../fragment/fragment.js' ) ;
292
- await initFragment ( regionSelector ) ; // load fragment and replace original link
265
+ await loadBlock ( regionSelector ) ; // load fragment and replace original link
293
266
// Update aria-expanded on click
294
267
regionPickerElem . addEventListener ( 'click' , ( e ) => {
295
268
e . preventDefault ( ) ;
@@ -298,15 +271,14 @@ class Footer {
298
271
} ) ;
299
272
// Close region picker dropdown on outside click
300
273
document . addEventListener ( 'click' , ( e ) => {
301
- e . preventDefault ( ) ;
302
274
if ( isRegionPickerExpanded ( )
303
275
&& ! e . target . closest ( `.${ regionPickerWrapperClass } ` ) ) {
304
276
regionPickerElem . setAttribute ( 'aria-expanded' , false ) ;
305
277
}
306
278
} ) ;
307
279
}
308
280
309
- return this . elements . regionPicker ;
281
+ return this . regionPicker ;
310
282
} ;
311
283
312
284
decorateSocial = ( ) => {
0 commit comments