From 9625827c3ae4fd78e0c30ff8f866ac679830592e Mon Sep 17 00:00:00 2001 From: Walter Burditt Date: Sat, 1 Apr 2023 14:58:32 -0700 Subject: [PATCH] Add checks for if sidebar exists Added checks to some scripting to check if a sidebar exists before trying to load some code that affects the sidebar and throws console errors because there was no sidebar on the page. --- src/html/components/_scripts.astro | 19 ++++--- src/ts/push-menu.ts | 83 ++++++++++++++++-------------- 2 files changed, 55 insertions(+), 47 deletions(-) diff --git a/src/html/components/_scripts.astro b/src/html/components/_scripts.astro index aa5ddba6a..518b25dfb 100644 --- a/src/html/components/_scripts.astro +++ b/src/html/components/_scripts.astro @@ -18,6 +18,7 @@ const distPath = (path != undefined) ? path : '../../../dist' diff --git a/src/ts/push-menu.ts b/src/ts/push-menu.ts index 712697e39..f0425a19e 100644 --- a/src/ts/push-menu.ts +++ b/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,49 +152,53 @@ class PushMenu { */ domReady(() => { - const data = new PushMenu(document.body, Defaults) - data.init() + const sidebar = document.querySelector(SELECTOR_APP_SIDEBAR) - window.addEventListener('resize', () => { + if (sidebar) { + const data = new PushMenu(document.body, Defaults) data.init() - }) - const sidebarOverlay = document.createElement('div') - sidebarOverlay.className = CLASS_NAME_SIDEBAR_OVERLAY - document.querySelector(SELECTOR_APP_WRAPPER)?.append(sidebarOverlay) - - sidebarOverlay.addEventListener('touchstart', event => { - event.preventDefault() - const target = event.currentTarget as HTMLElement - const data = new PushMenu(target, Defaults) - data.collapse() - }) - sidebarOverlay.addEventListener('click', event => { - event.preventDefault() - const target = event.currentTarget as HTMLElement - const data = new PushMenu(target, Defaults) - data.collapse() - }) - - const fullBtn = document.querySelectorAll(SELECTOR_SIDEBAR_TOGGLE) - - fullBtn.forEach(btn => { - btn.addEventListener('click', event => { - event.preventDefault() - - let button = event.currentTarget as HTMLElement | undefined - - if (button?.dataset.lteToggle !== 'sidebar') { - button = button?.closest(SELECTOR_SIDEBAR_TOGGLE) as HTMLElement | undefined - } - - if (button) { - event?.preventDefault() - const data = new PushMenu(button, Defaults) - data.toggle() - } + window.addEventListener('resize', () => { + data.init() }) - }) + + const sidebarOverlay = document.createElement('div') + sidebarOverlay.className = CLASS_NAME_SIDEBAR_OVERLAY + document.querySelector(SELECTOR_APP_WRAPPER)?.append(sidebarOverlay) + + sidebarOverlay.addEventListener('touchstart', event => { + event.preventDefault() + const target = event.currentTarget as HTMLElement + const data = new PushMenu(target, Defaults) + data.collapse() + }) + sidebarOverlay.addEventListener('click', event => { + event.preventDefault() + const target = event.currentTarget as HTMLElement + const data = new PushMenu(target, Defaults) + data.collapse() + }) + + const fullBtn = document.querySelectorAll(SELECTOR_SIDEBAR_TOGGLE) + + fullBtn.forEach(btn => { + btn.addEventListener('click', event => { + event.preventDefault() + + let button = event.currentTarget as HTMLElement | undefined + + if (button?.dataset.lteToggle !== 'sidebar') { + button = button?.closest(SELECTOR_SIDEBAR_TOGGLE) as HTMLElement | undefined + } + + if (button) { + event?.preventDefault() + const data = new PushMenu(button, Defaults) + data.toggle() + } + }) + }) + } }) export default PushMenu