mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-24 21:34:06 -06:00
feat(explorer): highlight current path in explorer
This commit is contained in:
parent
b050162f82
commit
ac9db622ff
@ -27,6 +27,7 @@ Component.Explorer({
|
|||||||
folderClickBehavior: "collapse", // what happens when you click a folder ("link" to navigate to folder page on click or "collapse" to collapse folder on click)
|
folderClickBehavior: "collapse", // what happens when you click a folder ("link" to navigate to folder page on click or "collapse" to collapse folder on click)
|
||||||
folderDefaultState: "collapsed", // default state of folders ("collapsed" or "open")
|
folderDefaultState: "collapsed", // default state of folders ("collapsed" or "open")
|
||||||
useSavedState: true, // whether to use local storage to save "state" (which folders are opened) of explorer
|
useSavedState: true, // whether to use local storage to save "state" (which folders are opened) of explorer
|
||||||
|
highlightCurrentPath: true, // whether to highlight the current file in the explorer
|
||||||
// Sort order: folders first, then files. Sort folders and files alphabetically
|
// Sort order: folders first, then files. Sort folders and files alphabetically
|
||||||
sortFn: (a, b) => {
|
sortFn: (a, b) => {
|
||||||
... // default implementation shown later
|
... // default implementation shown later
|
||||||
|
|||||||
@ -13,6 +13,7 @@ const defaultOptions = {
|
|||||||
folderClickBehavior: "collapse",
|
folderClickBehavior: "collapse",
|
||||||
folderDefaultState: "collapsed",
|
folderDefaultState: "collapsed",
|
||||||
useSavedState: true,
|
useSavedState: true,
|
||||||
|
highlightCurrentPath: true,
|
||||||
mapFn: (node) => {
|
mapFn: (node) => {
|
||||||
return node
|
return node
|
||||||
},
|
},
|
||||||
@ -92,6 +93,7 @@ export default ((userOpts?: Partial<Options>) => {
|
|||||||
data-behavior={opts.folderClickBehavior}
|
data-behavior={opts.folderClickBehavior}
|
||||||
data-collapsed={opts.folderDefaultState}
|
data-collapsed={opts.folderDefaultState}
|
||||||
data-savestate={opts.useSavedState}
|
data-savestate={opts.useSavedState}
|
||||||
|
data-highlightpath={opts.highlightCurrentPath}
|
||||||
data-tree={jsonTree}
|
data-tree={jsonTree}
|
||||||
data-mobile={true}
|
data-mobile={true}
|
||||||
aria-controls="explorer-content"
|
aria-controls="explorer-content"
|
||||||
@ -119,6 +121,7 @@ export default ((userOpts?: Partial<Options>) => {
|
|||||||
data-behavior={opts.folderClickBehavior}
|
data-behavior={opts.folderClickBehavior}
|
||||||
data-collapsed={opts.folderDefaultState}
|
data-collapsed={opts.folderDefaultState}
|
||||||
data-savestate={opts.useSavedState}
|
data-savestate={opts.useSavedState}
|
||||||
|
data-highlightpath={opts.highlightCurrentPath}
|
||||||
data-tree={jsonTree}
|
data-tree={jsonTree}
|
||||||
data-mobile={false}
|
data-mobile={false}
|
||||||
aria-controls="explorer-content"
|
aria-controls="explorer-content"
|
||||||
|
|||||||
@ -16,6 +16,7 @@ export interface Options {
|
|||||||
folderDefaultState: "collapsed" | "open"
|
folderDefaultState: "collapsed" | "open"
|
||||||
folderClickBehavior: "collapse" | "link"
|
folderClickBehavior: "collapse" | "link"
|
||||||
useSavedState: boolean
|
useSavedState: boolean
|
||||||
|
highlightCurrentPath: boolean
|
||||||
sortFn: (a: FileNode, b: FileNode) => number
|
sortFn: (a: FileNode, b: FileNode) => number
|
||||||
filterFn: (node: FileNode) => boolean
|
filterFn: (node: FileNode) => boolean
|
||||||
mapFn: (node: FileNode) => void
|
mapFn: (node: FileNode) => void
|
||||||
|
|||||||
@ -169,6 +169,7 @@ window.addEventListener("resize", setupExplorer)
|
|||||||
|
|
||||||
document.addEventListener("nav", () => {
|
document.addEventListener("nav", () => {
|
||||||
const explorer = document.querySelector("#mobile-explorer")
|
const explorer = document.querySelector("#mobile-explorer")
|
||||||
|
const currentPath = document.getElementsByTagName("body")[0].getAttribute("data-slug") ?? ""
|
||||||
if (explorer) {
|
if (explorer) {
|
||||||
explorer.classList.add("collapsed")
|
explorer.classList.add("collapsed")
|
||||||
const content = explorer.nextElementSibling?.nextElementSibling as HTMLElement
|
const content = explorer.nextElementSibling?.nextElementSibling as HTMLElement
|
||||||
@ -176,6 +177,10 @@ document.addEventListener("nav", () => {
|
|||||||
content.classList.add("collapsed")
|
content.classList.add("collapsed")
|
||||||
content.classList.toggle("explorer-viewmode")
|
content.classList.toggle("explorer-viewmode")
|
||||||
}
|
}
|
||||||
|
const currentPathInExplorer = document.querySelector(`a[data-for="${currentPath}"]`)
|
||||||
|
if (currentPathInExplorer) {
|
||||||
|
currentPathInExplorer.classList.add("highlight-path")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setupExplorer()
|
setupExplorer()
|
||||||
|
|
||||||
|
|||||||
@ -158,6 +158,10 @@ button#desktop-explorer {
|
|||||||
> #explorer-ul {
|
> #explorer-ul {
|
||||||
max-height: none;
|
max-height: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.highlight-path {
|
||||||
|
color: var(--tertiary);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user