1+ $ ( document ) . ready ( function ( ) {
2+ // mobile menu trigger
3+ const mobileTrigger = $ ( "#gd-header-mobile-menu-trigger-input" ) ;
4+ // sidebar trigger
5+ const sideTrigger = $ ( "#gd-docs-menu__mobile-trigger" ) ;
6+
7+ // Initial check
8+ if ( mobileTrigger . attr ( 'aria-expanded' ) === 'false' ) {
9+ sideTrigger . attr ( 'tabindex' , 6 )
10+ }
11+
12+ // Function to handle aria-expanded changes
13+ function handleAriaExpandedChange ( element , isExpanded ) {
14+ const elementId = element . attr ( 'id' ) ;
15+
16+ if ( elementId === 'gd-header-mobile-menu-trigger-input' ) {
17+ // Mobile menu trigger logic
18+ if ( isExpanded ) {
19+ sideTrigger . removeAttr ( 'tabindex' ) ;
20+ } else {
21+ sideTrigger . attr ( 'tabindex' , 6 ) ;
22+ }
23+ } else if ( elementId === 'gd-docs-menu__mobile-trigger' ) {
24+ // Sidebar trigger logic
25+ if ( isExpanded ) {
26+ sideTrigger . removeAttr ( 'tabindex' ) ;
27+ } else {
28+ sideTrigger . attr ( 'tabindex' , 6 ) ;
29+ }
30+ }
31+ }
32+
33+ // Create observer for both elements
34+ const observer = new MutationObserver ( function ( mutations ) {
35+ mutations . forEach ( function ( mutation ) {
36+ if ( mutation . attributeName === 'aria-expanded' ) {
37+ const $target = $ ( mutation . target ) ;
38+ const isExpanded = $target . attr ( 'aria-expanded' ) === 'true' ;
39+ handleAriaExpandedChange ( $target , isExpanded ) ;
40+ }
41+ } ) ;
42+ } ) ;
43+
44+ // Observe mobile trigger
45+ if ( mobileTrigger . length > 0 ) {
46+ observer . observe ( mobileTrigger [ 0 ] , {
47+ attributes : true ,
48+ attributeFilter : [ 'aria-expanded' ]
49+ } ) ;
50+ }
51+
52+ // Observe sidebar trigger
53+ if ( sideTrigger . length > 0 ) {
54+ observer . observe ( sideTrigger [ 0 ] , {
55+ attributes : true ,
56+ attributeFilter : [ 'aria-expanded' ]
57+ } ) ;
58+ }
59+ } ) ;
0 commit comments