@@ -124,6 +124,86 @@ function addEventListenerToShowHideTopbar() {
124124 } ) ;
125125}
126126
127+ // SIDEBAR TOGGLE
128+ function addSidebarToggleButton ( ) {
129+ // Select the element with the class "docs-right"
130+ var docsRight = document . querySelector ( '.docs-right' ) ;
131+
132+ // Check if the element exists
133+ if ( docsRight ) {
134+ // Create the new button element
135+ var button = document . createElement ( 'a' ) ;
136+ button . className = 'docs-article-toggle-button-sidebar fa-solid' ;
137+ button . id = 'documenter-article-toggle-button-sidebar' ;
138+ button . href = 'javascript:;' ;
139+ button . title = 'Fold sidebar' ;
140+
141+ // Check localStorage for button status
142+ var buttonStatus = localStorage . getItem ( 'sidebarButtonStatus' ) ;
143+
144+ // Set the button class based on the stored status
145+ if ( buttonStatus === 'right' ) {
146+ button . classList . add ( 'fa-chevron-right' ) ;
147+ } else {
148+ button . classList . add ( 'fa-chevron-left' ) ; // Default to left
149+ }
150+
151+ // Insert the button as the first child of the docs-right element
152+ docsRight . insertBefore ( button , docsRight . firstChild ) ;
153+
154+ // Event listener
155+ button . addEventListener ( 'click' , toggleSidebarButton ) ;
156+ }
157+ }
158+
159+ function toggleSidebarButton ( ) {
160+
161+ if ( this . classList . contains ( 'fa-chevron-left' ) ) {
162+ hideSidebar ( this )
163+ } else {
164+ showSidebar ( this )
165+ }
166+
167+ }
168+
169+ function hideSidebar ( button ) {
170+
171+ button . classList . remove ( 'fa-chevron-left' ) ;
172+ button . classList . add ( 'fa-chevron-right' ) ;
173+
174+ localStorage . setItem ( 'sidebarButtonStatus' , 'right' ) ;
175+
176+ var sidebar = document . querySelector ( '.docs-sidebar' ) ;
177+ if ( sidebar ) {
178+ sidebar . classList . add ( 'hidden' )
179+ }
180+
181+ var content = document . querySelector ( '.docs-main' ) ;
182+ if ( content ) {
183+ content . classList . add ( 'sidebar-hidden' )
184+ }
185+
186+ }
187+
188+ function showSidebar ( button ) {
189+
190+ button . classList . remove ( 'fa-chevron-right' ) ;
191+ button . classList . add ( 'fa-chevron-left' ) ;
192+
193+ localStorage . setItem ( 'sidebarButtonStatus' , 'left' ) ;
194+
195+ var sidebar = document . querySelector ( '.docs-sidebar' ) ;
196+ if ( sidebar ) {
197+ sidebar . classList . remove ( 'hidden' )
198+ }
199+
200+ var content = document . querySelector ( '.docs-main' ) ;
201+ if ( content ) {
202+ content . classList . remove ( 'sidebar-hidden' )
203+ }
204+
205+ }
206+
127207//
128208if (
129209 document . readyState === "complete" ||
@@ -132,9 +212,11 @@ if (
132212 // call on next available tick
133213 setTimeout ( topbarInjector , 1 ) ;
134214 setTimeout ( addEventListenerToShowHideTopbar , 1 ) ;
215+ setTimeout ( addSidebarToggleButton , 1 ) ;
135216} else {
136217 document . addEventListener ( "DOMContentLoaded" , topbarInjector ) ;
137218 document . addEventListener ( "DOMContentLoaded" , addEventListenerToShowHideTopbar ) ;
219+ document . addEventListener ( "DOMContentLoaded" , addSidebarToggleButton ) ;
138220}
139221
140222//
0 commit comments