@@ -10,7 +10,9 @@ let toggleChevron = `
1010
1111var initToggleItems = ( ) => {
1212 var itemsToToggle = document . querySelectorAll ( togglebuttonSelector ) ;
13- console . log ( `[togglebutton]: Adding toggle buttons to ${ itemsToToggle . length } items` )
13+ console . log (
14+ `[togglebutton]: Adding toggle buttons to ${ itemsToToggle . length } items`
15+ ) ;
1416 // Add the button to each admonition and hook up a callback to toggle visibility
1517 itemsToToggle . forEach ( ( item , index ) => {
1618 if ( item . classList . contains ( "admonition" ) ) {
@@ -19,30 +21,40 @@ var initToggleItems = () => {
1921 var toggleID = `toggle-${ index } ` ;
2022 var buttonID = `button-${ toggleID } ` ;
2123
22- item . setAttribute ( 'id' , toggleID ) ;
23- if ( ! item . classList . contains ( "toggle" ) ) {
24+ item . setAttribute ( "id" , toggleID ) ;
25+ if ( ! item . classList . contains ( "toggle" ) ) {
2426 item . classList . add ( "toggle" ) ;
2527 }
2628 // This is the button that will be added to each item to trigger the toggle
2729 var collapseButton = `
28- <button type="button" id="${ buttonID } " class="toggle-button" data-target="${ toggleID } " data-button="${ buttonID } " data-toggle-hint="${ toggleHintShow } " aria-label="Toggle hidden content">
30+ <button type="button"
31+ id="${ buttonID } "
32+ class="toggle-button"
33+ data-target="${ toggleID } "
34+ data-button="${ buttonID } "
35+ data-toggle-hint="${ toggleHintShow } "
36+ aria-label="Toggle hidden content"
37+ aria-expanded="false"
38+ >
2939 ${ toggleChevron }
3040 </button>` ;
3141
32- title = item . querySelector ( ".admonition-title" )
42+ title = item . querySelector ( ".admonition-title" ) ;
3343 title . insertAdjacentHTML ( "beforeend" , collapseButton ) ;
3444 thisButton = document . getElementById ( buttonID ) ;
3545
3646 // Add click handlers for the button + admonition title (if admonition)
37- admonitionTitle = document . querySelector ( `#${ toggleID } > .admonition-title` )
47+ admonitionTitle = document . querySelector (
48+ `#${ toggleID } > .admonition-title`
49+ ) ;
3850 if ( admonitionTitle ) {
3951 // If an admonition, then make the whole title block clickable
40- admonitionTitle . addEventListener ( ' click' , toggleClickHandler ) ;
41- admonitionTitle . dataset . target = toggleID
42- admonitionTitle . dataset . button = buttonID
52+ admonitionTitle . addEventListener ( " click" , toggleClickHandler ) ;
53+ admonitionTitle . dataset . target = toggleID ;
54+ admonitionTitle . dataset . button = buttonID ;
4355 } else {
4456 // If not an admonition then we'll listen for the button click
45- thisButton . addEventListener ( ' click' , toggleClickHandler ) ;
57+ thisButton . addEventListener ( " click" , toggleClickHandler ) ;
4658 }
4759
4860 // Now hide the item for this toggle button unless explicitly noted to show
@@ -62,12 +74,12 @@ var initToggleItems = () => {
6274 item . insertAdjacentHTML ( "beforebegin" , detailsBlock ) ;
6375
6476 // Now move the toggle-able content inside of the details block
65- details = item . previousElementSibling
66- details . appendChild ( item )
67- item . classList . add ( "toggle-details__container" )
77+ details = item . previousElementSibling ;
78+ details . appendChild ( item ) ;
79+ item . classList . add ( "toggle-details__container" ) ;
6880
6981 // Set up a click trigger to change the text as needed
70- details . addEventListener ( ' click' , ( click ) => {
82+ details . addEventListener ( " click" , ( click ) => {
7183 let parent = click . target . parentElement ;
7284 if ( parent . tagName . toLowerCase ( ) == "details" ) {
7385 summary = parent . querySelector ( "summary" ) ;
@@ -78,35 +90,38 @@ var initToggleItems = () => {
7890 }
7991 // Update the inner text for the proper hint
8092 if ( details . open ) {
81- summary . querySelector ( "span.toggle-details__summary-text" ) . innerText = toggleHintShow ;
93+ summary . querySelector ( "span.toggle-details__summary-text" ) . innerText =
94+ toggleHintShow ;
8295 } else {
83- summary . querySelector ( "span.toggle-details__summary-text" ) . innerText = toggleHintHide ;
96+ summary . querySelector ( "span.toggle-details__summary-text" ) . innerText =
97+ toggleHintHide ;
8498 }
85-
8699 } ) ;
87100
88101 // If we have a toggle-shown class, open details block should be open
89102 if ( item . classList . contains ( "toggle-shown" ) ) {
90103 details . click ( ) ;
91104 }
92105 }
93- } )
106+ } ) ;
94107} ;
95108
96109// This should simply add / remove the collapsed class and change the button text
97110var toggleHidden = ( button ) => {
98- target = button . dataset [ ' target' ]
111+ target = button . dataset [ " target" ] ;
99112 var itemToToggle = document . getElementById ( target ) ;
100113 if ( itemToToggle . classList . contains ( "toggle-hidden" ) ) {
101114 itemToToggle . classList . remove ( "toggle-hidden" ) ;
102115 button . classList . remove ( "toggle-button-hidden" ) ;
103116 button . dataset . toggleHint = toggleHintHide ;
117+ button . setAttribute ( "aria-expanded" , true ) ;
104118 } else {
105119 itemToToggle . classList . add ( "toggle-hidden" ) ;
106120 button . classList . add ( "toggle-button-hidden" ) ;
107121 button . dataset . toggleHint = toggleHintShow ;
122+ button . setAttribute ( "aria-expanded" , false ) ;
108123 }
109- }
124+ } ;
110125
111126var toggleClickHandler = ( click ) => {
112127 // Be cause the admonition title is clickable and extends to the whole admonition
@@ -124,36 +139,36 @@ var toggleClickHandler = (click) => {
124139 // We've clicked the button itself and so don't need to do anything
125140 button = click . target ;
126141 } else {
127- console . log ( `[togglebutton]: Couldn't find button for ${ click . target } ` )
142+ console . log ( `[togglebutton]: Couldn't find button for ${ click . target } ` ) ;
128143 }
129- target = document . getElementById ( button . dataset [ ' button' ] ) ;
144+ target = document . getElementById ( button . dataset [ " button" ] ) ;
130145 toggleHidden ( target ) ;
131- }
146+ } ;
132147
133148// If we want to blanket-add toggle classes to certain cells
134149var addToggleToSelector = ( ) => {
135150 const selector = "" ;
136151 if ( selector . length > 0 ) {
137152 document . querySelectorAll ( selector ) . forEach ( ( item ) => {
138153 item . classList . add ( "toggle" ) ;
139- } )
154+ } ) ;
140155 }
141- }
156+ } ;
142157
143158// Helper function to run when the DOM is finished
144- const sphinxToggleRunWhenDOMLoaded = cb => {
145- if ( document . readyState != ' loading' ) {
146- cb ( )
159+ const sphinxToggleRunWhenDOMLoaded = ( cb ) => {
160+ if ( document . readyState != " loading" ) {
161+ cb ( ) ;
147162 } else if ( document . addEventListener ) {
148- document . addEventListener ( ' DOMContentLoaded' , cb )
163+ document . addEventListener ( " DOMContentLoaded" , cb ) ;
149164 } else {
150- document . attachEvent ( ' onreadystatechange' , function ( ) {
151- if ( document . readyState == ' complete' ) cb ( )
152- } )
165+ document . attachEvent ( " onreadystatechange" , function ( ) {
166+ if ( document . readyState == " complete" ) cb ( ) ;
167+ } ) ;
153168 }
154- }
155- sphinxToggleRunWhenDOMLoaded ( addToggleToSelector )
156- sphinxToggleRunWhenDOMLoaded ( initToggleItems )
169+ } ;
170+ sphinxToggleRunWhenDOMLoaded ( addToggleToSelector ) ;
171+ sphinxToggleRunWhenDOMLoaded ( initToggleItems ) ;
157172
158173/** Toggle details blocks to be open when printing */
159174if ( toggleOpenOnPrint == "true" ) {
@@ -163,21 +178,23 @@ if (toggleOpenOnPrint == "true") {
163178 el . dataset [ "togglestatus" ] = el . open ;
164179 el . open = true ;
165180 } ) ;
166-
181+
167182 // Open the admonitions
168- document . querySelectorAll ( ".admonition.toggle.toggle-hidden" ) . forEach ( ( el ) => {
169- console . log ( el ) ;
170- el . querySelector ( "button.toggle-button" ) . click ( ) ;
171- el . dataset [ "toggle_after_print" ] = "true" ;
172- } ) ;
183+ document
184+ . querySelectorAll ( ".admonition.toggle.toggle-hidden" )
185+ . forEach ( ( el ) => {
186+ console . log ( el ) ;
187+ el . querySelector ( "button.toggle-button" ) . click ( ) ;
188+ el . dataset [ "toggle_after_print" ] = "true" ;
189+ } ) ;
173190 } ) ;
174191 window . addEventListener ( "afterprint" , ( ) => {
175192 // Re-close the details that were closed
176193 document . querySelectorAll ( "details.toggle-details" ) . forEach ( ( el ) => {
177194 el . open = el . dataset [ "togglestatus" ] == "true" ;
178195 delete el . dataset [ "togglestatus" ] ;
179196 } ) ;
180-
197+
181198 // Re-close the admonition toggle buttons
182199 document . querySelectorAll ( ".admonition.toggle" ) . forEach ( ( el ) => {
183200 if ( el . dataset [ "toggle_after_print" ] == "true" ) {
0 commit comments