@@ -23,11 +23,18 @@ let currentExplorerState: Array<FolderState>
2323function toggleExplorer ( this : HTMLElement ) {
2424 const nearestExplorer = this . closest ( ".explorer" ) as HTMLElement
2525 if ( ! nearestExplorer ) return
26- nearestExplorer . classList . toggle ( "collapsed" )
26+ const explorerCollapsed = nearestExplorer . classList . toggle ( "collapsed" )
2727 nearestExplorer . setAttribute (
2828 "aria-expanded" ,
2929 nearestExplorer . getAttribute ( "aria-expanded" ) === "true" ? "false" : "true" ,
3030 )
31+
32+ if ( ! explorerCollapsed ) {
33+ // Stop <html> from being scrollable when mobile explorer is open
34+ document . documentElement . classList . add ( "mobile-no-scroll" )
35+ } else {
36+ document . documentElement . classList . remove ( "mobile-no-scroll" )
37+ }
3138}
3239
3340function toggleFolder ( evt : MouseEvent ) {
@@ -270,12 +277,25 @@ document.addEventListener("nav", async (e: CustomEventMap["nav"]) => {
270277 if ( mobileExplorer . checkVisibility ( ) ) {
271278 explorer . classList . add ( "collapsed" )
272279 explorer . setAttribute ( "aria-expanded" , "false" )
280+
281+ // Allow <html> to be scrollable when mobile explorer is collapsed
282+ document . documentElement . classList . remove ( "mobile-no-scroll" )
273283 }
274284
275285 mobileExplorer . classList . remove ( "hide-until-loaded" )
276286 }
277287} )
278288
289+ window . addEventListener ( "resize" , function ( ) {
290+ // Desktop explorer opens by default, and it stays open when the window is resized
291+ // to mobile screen size. Applies `no-scroll` to <html> in this edge case.
292+ const explorer = document . querySelector ( ".explorer" )
293+ if ( explorer && ! explorer . classList . contains ( "collapsed" ) ) {
294+ document . documentElement . classList . add ( "mobile-no-scroll" )
295+ return
296+ }
297+ } )
298+
279299function setFolderState ( folderElement : HTMLElement , collapsed : boolean ) {
280300 return collapsed ? folderElement . classList . remove ( "open" ) : folderElement . classList . add ( "open" )
281301}
0 commit comments