From bb6ccfeba82d3902dbe964b8415598d0ff7d66a1 Mon Sep 17 00:00:00 2001 From: Tejas Sanap Date: Sun, 11 Aug 2024 20:49:20 +0100 Subject: [PATCH] fix selectors for explorer --- quartz/components/scripts/explorer.inline.ts | 76 ++++++++++---------- quartz/styles/base.scss | 1 + 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/quartz/components/scripts/explorer.inline.ts b/quartz/components/scripts/explorer.inline.ts index 584de6c37..a2e990b3c 100644 --- a/quartz/components/scripts/explorer.inline.ts +++ b/quartz/components/scripts/explorer.inline.ts @@ -54,52 +54,52 @@ function toggleFolder(evt: MouseEvent) { } function setupExplorer() { - const explorer = document.getElementById("explorer") - if (!explorer) return + const buttons = document.querySelectorAll("button#explorer") as NodeListOf + for (const explorer of buttons) { + if (explorer.dataset.behavior === "collapse") { + for (const item of document.getElementsByClassName( + "folder-button", + ) as HTMLCollectionOf) { + item.addEventListener("click", toggleFolder) + window.addCleanup(() => item.removeEventListener("click", toggleFolder)) + } + } - if (explorer.dataset.behavior === "collapse") { + explorer.addEventListener("click", toggleExplorer) + window.addCleanup(() => explorer.removeEventListener("click", toggleExplorer)) + + // Set up click handlers for each folder (click handler on folder "icon") for (const item of document.getElementsByClassName( - "folder-button", + "folder-icon", ) as HTMLCollectionOf) { item.addEventListener("click", toggleFolder) window.addCleanup(() => item.removeEventListener("click", toggleFolder)) } - } - explorer.addEventListener("click", toggleExplorer) - window.addCleanup(() => explorer.removeEventListener("click", toggleExplorer)) - - // Set up click handlers for each folder (click handler on folder "icon") - for (const item of document.getElementsByClassName( - "folder-icon", - ) as HTMLCollectionOf) { - item.addEventListener("click", toggleFolder) - window.addCleanup(() => item.removeEventListener("click", toggleFolder)) - } - - // Get folder state from local storage - const storageTree = localStorage.getItem("fileTree") - const useSavedFolderState = explorer?.dataset.savestate === "true" - const oldExplorerState: FolderState[] = - storageTree && useSavedFolderState ? JSON.parse(storageTree) : [] - const oldIndex = new Map(oldExplorerState.map((entry) => [entry.path, entry.collapsed])) - const newExplorerState: FolderState[] = explorer.dataset.tree - ? JSON.parse(explorer.dataset.tree) - : [] - currentExplorerState = [] - for (const { path, collapsed } of newExplorerState) { - currentExplorerState.push({ path, collapsed: oldIndex.get(path) ?? collapsed }) - } - - currentExplorerState.map((folderState) => { - const folderLi = document.querySelector( - `[data-folderpath='${folderState.path}']`, - ) as MaybeHTMLElement - const folderUl = folderLi?.parentElement?.nextElementSibling as MaybeHTMLElement - if (folderUl) { - setFolderState(folderUl, folderState.collapsed) + // Get folder state from local storage + const storageTree = localStorage.getItem("fileTree") + const useSavedFolderState = explorer?.dataset.savestate === "true" + const oldExplorerState: FolderState[] = + storageTree && useSavedFolderState ? JSON.parse(storageTree) : [] + const oldIndex = new Map(oldExplorerState.map((entry) => [entry.path, entry.collapsed])) + const newExplorerState: FolderState[] = explorer.dataset.tree + ? JSON.parse(explorer.dataset.tree) + : [] + currentExplorerState = [] + for (const { path, collapsed } of newExplorerState) { + currentExplorerState.push({ path, collapsed: oldIndex.get(path) ?? collapsed }) } - }) + + currentExplorerState.map((folderState) => { + const folderLi = document.querySelector( + `[data-folderpath='${folderState.path}']`, + ) as MaybeHTMLElement + const folderUl = folderLi?.parentElement?.nextElementSibling as MaybeHTMLElement + if (folderUl) { + setFolderState(folderUl, folderState.collapsed) + } + }) + } } window.addEventListener("resize", setupExplorer) diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss index 3b3ead7c3..d636334d1 100644 --- a/quartz/styles/base.scss +++ b/quartz/styles/base.scss @@ -192,6 +192,7 @@ a { & .sidebar.right { right: calc(calc(100vw - $pageWidth) / 2 - $sidePanelWidth); flex-wrap: wrap; + flex-direction: column; & > * { @media all and (max-width: $fullPageWidth) { flex: 1;