Browse Source

Merge pull request #5015 from burdittw/v4-dev-check-for-sidebar

Issue 5011- Add checks for if sidebar exists to stop errors on pages with no sidebar
Daniel 1 year ago
parent
commit
c8869e768b
2 changed files with 15 additions and 8 deletions
  1. 6 4
      src/html/components/_scripts.astro
  2. 9 4
      src/ts/push-menu.ts

+ 6 - 4
src/html/components/_scripts.astro

@@ -21,16 +21,18 @@ const distPath = (path != undefined) ? path : '../../../dist'
   const SELECTOR_SIDEBAR_WRAPPER = '.sidebar-wrapper'
   const Default = {
     scrollbarTheme: 'os-theme-light',
-    scrollbarAutoHide: 'leave'
+    scrollbarAutoHide: 'leave',
+    scrollbarClickScroll: true
   }
 
   document.addEventListener("DOMContentLoaded", function() {
-    if (typeof OverlayScrollbarsGlobal?.OverlayScrollbars !== 'undefined') {
-      OverlayScrollbarsGlobal.OverlayScrollbars(document.querySelector(SELECTOR_SIDEBAR_WRAPPER), {
+    const sidebarWrapper = document.querySelector(SELECTOR_SIDEBAR_WRAPPER)
+    if (sidebarWrapper && typeof OverlayScrollbarsGlobal?.OverlayScrollbars !== 'undefined') {
+      OverlayScrollbarsGlobal.OverlayScrollbars(sidebarWrapper, {
         scrollbars: {
           theme: Default.scrollbarTheme,
           autoHide: Default.scrollbarAutoHide,
-          clickScroll: true
+          clickScroll: Default.scrollbarClickScroll
         }
       })
     }

+ 9 - 4
src/ts/push-menu.ts

@@ -29,6 +29,7 @@ const CLASS_NAME_SIDEBAR_EXPAND = 'sidebar-expand'
 const CLASS_NAME_SIDEBAR_OVERLAY = 'sidebar-overlay'
 const CLASS_NAME_MENU_OPEN = 'menu-open'
 
+const SELECTOR_APP_SIDEBAR = '.app-sidebar'
 const SELECTOR_SIDEBAR_WRAPPER = '.sidebar-wrapper'
 const SELECTOR_SIDEBAR_MENU = '.sidebar-menu'
 const SELECTOR_NAV_ITEM = '.nav-item'
@@ -151,12 +152,16 @@ class PushMenu {
  */
 
 domReady(() => {
-  const data = new PushMenu(document.body, Defaults)
-  data.init()
+  const sidebar = document?.querySelector(SELECTOR_APP_SIDEBAR) as HTMLElement | undefined
 
-  window.addEventListener('resize', () => {
+  if (sidebar) {
+    const data = new PushMenu(sidebar, Defaults)
     data.init()
-  })
+
+    window.addEventListener('resize', () => {
+      data.init()
+    })
+  }
 
   const sidebarOverlay = document.createElement('div')
   sidebarOverlay.className = CLASS_NAME_SIDEBAR_OVERLAY