@@ -70,6 +70,7 @@ const TopNav = ({
70
70
const [ activeLevel1Id , setActiveLevel1Id ] = useState ( )
71
71
const [ activeLevel2Id , setActiveLevel2Id ] = useState ( )
72
72
const [ activeLevel3Id , setActiveLevel3Id ] = useState ( )
73
+ const [ isResize , setResize ] = useState ( false )
73
74
const [ showLevel3 , setShowLevel3 ] = useState ( false )
74
75
const [ forceHideLevel3 , setforceHideLevel3 ] = useState ( false )
75
76
@@ -334,7 +335,7 @@ const TopNav = ({
334
335
const onResize = _ . debounce ( ( ) => {
335
336
regenerateMoreMenu ( [ ] )
336
337
// tick to update menu (reposition arrow)
337
- setChosenArrowTick ( x => x + 1 )
338
+ // setChosenArrowTick(x => x + 1)
338
339
} , 100 )
339
340
window . addEventListener ( 'resize' , onResize )
340
341
return ( ) => window . removeEventListener ( 'resize' , onResize )
@@ -344,7 +345,7 @@ const TopNav = ({
344
345
let found = { m1 : null , m2 : null , m3 : null }
345
346
346
347
// If haven't a path just return
347
- if ( ! path_ ) return found
348
+ if ( ! path_ ) return found
348
349
349
350
menuWithId_ . forEach ( level1 => {
350
351
if ( level1 . href && path_ . indexOf ( level1 . href ) > - 1 ) found = { m1 : level1 . id , m2 : null }
@@ -357,21 +358,40 @@ const TopNav = ({
357
358
} else {
358
359
found = { m1 : level1 . id , m2 : level2 . id , m3 : level3 . id }
359
360
}
360
- if ( ! activeLevel3Id && level3 . collapsed ) setforceHideLevel3 ( true )
361
+ if ( ! activeLevel3Id && level3 . collapsed ) setforceHideLevel3 ( true )
361
362
}
362
363
} )
363
364
} )
364
365
level1 . secondaryMenu && level1 . secondaryMenu . forEach ( level3 => {
365
366
if ( level3 . href ) {
366
367
// Check if path have parameters
367
- const href = level3 . href . indexOf ( "?" ) > - 1 ? level3 . href . split ( "?" ) [ 0 ] : level3 . href ;
368
+ const href = level3 . href . indexOf ( '?' ) > - 1 ? level3 . href . split ( '?' ) [ 0 ] : level3 . href
368
369
if ( path_ . indexOf ( href ) > - 1 ) found = { m1 : level1 . id , m3 : level3 . id }
369
370
}
370
371
} )
371
372
} )
372
373
return found
373
374
}
374
375
376
+ let timeId = 0
377
+ useEffect ( ( ) => {
378
+ // when scren change size, keep green indicator keep static
379
+ const onResize = _ . debounce ( ( ) => {
380
+ if ( timeId ) { clearTimeout ( timeId ) }
381
+ const { m3 } = getMenuIdsFromPath ( menuWithId , path )
382
+ activeLevel2Id && setChosenArrowPos ( activeLevel2Id )
383
+ setIconSelectPos ( m3 )
384
+ setResize ( true )
385
+ timeId = setTimeout ( ( ) => {
386
+ setResize ( false )
387
+ timeId = 0
388
+ } , 1000 )
389
+ } , 50 )
390
+
391
+ window . addEventListener ( 'resize' , onResize )
392
+ return ( ) => window . removeEventListener ( 'resize' , onResize )
393
+ } , [ getMenuIdsFromPath ] )
394
+
375
395
useEffect ( ( ) => {
376
396
if ( ! path || ! menuWithId [ 0 ] ) return
377
397
setLeftNav ( menuWithId )
@@ -390,13 +410,13 @@ const TopNav = ({
390
410
forceExpand = true
391
411
forceM2 = getMenuIdsFromPath ( menuWithId , '/challenges' ) . m2
392
412
}
393
- } else if ( path . indexOf ( '/my-dashboard' ) > - 1 || path . indexOf ( '/members/' + profileHandle ) > - 1 ) {
413
+ } else if ( path . indexOf ( '/my-dashboard' ) > - 1 || path . indexOf ( '/members/' + profileHandle ) > - 1 ) {
394
414
// If My Dashboard and My Profile page
395
415
setShowLevel3 ( true )
396
416
} else if ( path . indexOf ( '/community/learn' ) > - 1 || path . indexOf ( '/thrive/tracks' ) > - 1 ) {
397
417
// Show 3rd level menu to Community [ Overview - How It Works ]
398
- forceM2 = getMenuIdsFromPath ( menuWithId , '/community' ) . m2 ;
399
- } else if ( ! m2 ) {
418
+ forceM2 = getMenuIdsFromPath ( menuWithId , '/community' ) . m2
419
+ } else if ( ! m2 ) {
400
420
setShowLevel3 ( false )
401
421
setforceHideLevel3 ( true )
402
422
}
@@ -459,6 +479,7 @@ const TopNav = ({
459
479
< SubNav
460
480
open = { forceHideLevel3 ? false : showLevel3 }
461
481
menu = { activeMenu2 || activeMenu1 }
482
+ isResize = { isResize }
462
483
isSecondaryMenu = { ! activeMenu2 }
463
484
activeChildId = { activeLevel3Id }
464
485
showIndicator = { showIconSelect }
0 commit comments