From c4cd84dcc884469a0d84e2bec239b2fc3596c44f Mon Sep 17 00:00:00 2001
From: Andrew <80933354+ndrooo@users.noreply.github.com>
Date: Sat, 24 Aug 2024 17:13:55 +0000
Subject: [PATCH] fix: Add a wrapper element to dates in PageList. (#1345)
---
quartz/components/Explorer.tsx | 30 ++++++++++++++++++++----------
1 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/quartz/components/Explorer.tsx b/quartz/components/Explorer.tsx
index fdfff23..ec7c48e 100644
--- a/quartz/components/Explorer.tsx
+++ b/quartz/components/Explorer.tsx
@@ -1,14 +1,15 @@
-import { QuartzComponentConstructor, QuartzComponentProps } from "./types"
+import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types"
import explorerStyle from "./styles/explorer.scss"
// @ts-ignore
import script from "./scripts/explorer.inline"
import { ExplorerNode, FileNode, Options } from "./ExplorerNode"
import { QuartzPluginData } from "../plugins/vfile"
+import { classNames } from "../util/lang"
+import { i18n } from "../i18n"
// Options interface defined in `ExplorerNode` to avoid circular dependency
const defaultOptions = {
- title: "Explorer",
folderClickBehavior: "collapse",
folderDefaultState: "collapsed",
useSavedState: true,
@@ -43,12 +44,9 @@
// memoized
let fileTree: FileNode
let jsonTree: string
+ let lastBuildId: string = ""
function constructFileTree(allFiles: QuartzPluginData[]) {
- if (fileTree) {
- return
- }
-
// Construct tree from allFiles
fileTree = new FileNode("")
allFiles.forEach((file) => fileTree.add(file))
@@ -74,10 +72,20 @@
jsonTree = JSON.stringify(folders)
}
- function Explorer({ allFiles, displayClass, fileData }: QuartzComponentProps) {
- constructFileTree(allFiles)
+ const Explorer: QuartzComponent = ({
+ ctx,
+ cfg,
+ allFiles,
+ displayClass,
+ fileData,
+ }: QuartzComponentProps) => {
+ if (ctx.buildId !== lastBuildId) {
+ lastBuildId = ctx.buildId
+ constructFileTree(allFiles)
+ }
+
return (
- <div class={`explorer ${displayClass ?? ""}`}>
+ <div class={classNames(displayClass, "explorer")}>
<button
type="button"
id="explorer"
@@ -85,8 +93,10 @@
data-collapsed={opts.folderDefaultState}
data-savestate={opts.useSavedState}
data-tree={jsonTree}
+ aria-controls="explorer-content"
+ aria-expanded={opts.folderDefaultState === "open"}
>
- <h1>{opts.title}</h1>
+ <h2>{opts.title ?? i18n(cfg.locale).components.explorer.title}</h2>
<svg
xmlns="http://www.w3.org/2000/svg"
width="14"
--
Gitblit v1.10.0