From 0ecb859d2d826f1813b49e2b63fa37d1e7151a1d Mon Sep 17 00:00:00 2001
From: Marco Ciotola <McCio@users.noreply.github.com>
Date: Sun, 02 Nov 2025 10:35:23 +0000
Subject: [PATCH] feat(i18n): update Italian translations for coherency (#2189)
---
quartz/components/scripts/explorer.inline.ts | 42 +++++++++++++++++++++++++++++++++---------
1 files changed, 33 insertions(+), 9 deletions(-)
diff --git a/quartz/components/scripts/explorer.inline.ts b/quartz/components/scripts/explorer.inline.ts
index d1a74d6..9c83411 100644
--- a/quartz/components/scripts/explorer.inline.ts
+++ b/quartz/components/scripts/explorer.inline.ts
@@ -23,11 +23,18 @@
function toggleExplorer(this: HTMLElement) {
const nearestExplorer = this.closest(".explorer") as HTMLElement
if (!nearestExplorer) return
- nearestExplorer.classList.toggle("collapsed")
+ const explorerCollapsed = nearestExplorer.classList.toggle("collapsed")
nearestExplorer.setAttribute(
"aria-expanded",
nearestExplorer.getAttribute("aria-expanded") === "true" ? "false" : "true",
)
+
+ if (!explorerCollapsed) {
+ // Stop <html> from being scrollable when mobile explorer is open
+ document.documentElement.classList.add("mobile-no-scroll")
+ } else {
+ document.documentElement.classList.remove("mobile-no-scroll")
+ }
}
function toggleFolder(evt: MouseEvent) {
@@ -134,9 +141,9 @@
}
for (const child of node.children) {
- const childNode = child.data
- ? createFileNode(currentSlug, child)
- : createFolderNode(currentSlug, child, opts)
+ const childNode = child.isFolder
+ ? createFolderNode(currentSlug, child, opts)
+ : createFileNode(currentSlug, child)
ul.appendChild(childNode)
}
@@ -161,7 +168,7 @@
// Get folder state from local storage
const storageTree = localStorage.getItem("fileTree")
const serializedExplorerState = storageTree && opts.useSavedState ? JSON.parse(storageTree) : []
- const oldIndex = new Map(
+ const oldIndex = new Map<string, boolean>(
serializedExplorerState.map((entry: FolderState) => [entry.path, entry.collapsed]),
)
@@ -186,10 +193,14 @@
// Get folder paths for state management
const folderPaths = trie.getFolderPaths()
- currentExplorerState = folderPaths.map((path) => ({
- path,
- collapsed: oldIndex.get(path) === true,
- }))
+ currentExplorerState = folderPaths.map((path) => {
+ const previousState = oldIndex.get(path)
+ return {
+ path,
+ collapsed:
+ previousState === undefined ? opts.folderDefaultState === "collapsed" : previousState,
+ }
+ })
const explorerUl = explorer.querySelector(".explorer-ul")
if (!explorerUl) continue
@@ -266,12 +277,25 @@
if (mobileExplorer.checkVisibility()) {
explorer.classList.add("collapsed")
explorer.setAttribute("aria-expanded", "false")
+
+ // Allow <html> to be scrollable when mobile explorer is collapsed
+ document.documentElement.classList.remove("mobile-no-scroll")
}
mobileExplorer.classList.remove("hide-until-loaded")
}
})
+window.addEventListener("resize", function () {
+ // Desktop explorer opens by default, and it stays open when the window is resized
+ // to mobile screen size. Applies `no-scroll` to <html> in this edge case.
+ const explorer = document.querySelector(".explorer")
+ if (explorer && !explorer.classList.contains("collapsed")) {
+ document.documentElement.classList.add("mobile-no-scroll")
+ return
+ }
+})
+
function setFolderState(folderElement: HTMLElement, collapsed: boolean) {
return collapsed ? folderElement.classList.remove("open") : folderElement.classList.add("open")
}
--
Gitblit v1.10.0