mirror of
https://github.com/jackyzha0/quartz.git
synced 2026-02-03 22:15:42 -06:00
Explorer can now hold components in it so that they can be visible from the menu drawer on mobile view
This commit is contained in:
parent
f346a01296
commit
54064649ac
@ -38,7 +38,19 @@ export const defaultContentPageLayout: PageLayout = {
|
|||||||
{ Component: Component.ReaderMode() },
|
{ Component: Component.ReaderMode() },
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
Component.Explorer(),
|
Component.Explorer({
|
||||||
|
folderDefaultState: "collapsed",
|
||||||
|
components: [
|
||||||
|
{
|
||||||
|
Component: Component.RecentNotes(),
|
||||||
|
position: "before",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Component: Component.ContentMeta(),
|
||||||
|
position: "after",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}),
|
||||||
],
|
],
|
||||||
right: [
|
right: [
|
||||||
Component.Graph(),
|
Component.Graph(),
|
||||||
|
|||||||
@ -20,6 +20,10 @@ export interface Options {
|
|||||||
filterFn: (node: FileTrieNode) => boolean
|
filterFn: (node: FileTrieNode) => boolean
|
||||||
mapFn: (node: FileTrieNode) => void
|
mapFn: (node: FileTrieNode) => void
|
||||||
order: OrderEntries[]
|
order: OrderEntries[]
|
||||||
|
components?: {
|
||||||
|
Component: QuartzComponent
|
||||||
|
position: "before" | "after"
|
||||||
|
}[]
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultOptions: Options = {
|
const defaultOptions: Options = {
|
||||||
@ -48,6 +52,7 @@ const defaultOptions: Options = {
|
|||||||
},
|
},
|
||||||
filterFn: (node) => node.slugSegment !== "tags",
|
filterFn: (node) => node.slugSegment !== "tags",
|
||||||
order: ["filter", "map", "sort"],
|
order: ["filter", "map", "sort"],
|
||||||
|
components: [],
|
||||||
}
|
}
|
||||||
|
|
||||||
export type FolderState = {
|
export type FolderState = {
|
||||||
@ -60,9 +65,16 @@ export default ((userOpts?: Partial<Options>) => {
|
|||||||
const opts: Options = { ...defaultOptions, ...userOpts }
|
const opts: Options = { ...defaultOptions, ...userOpts }
|
||||||
const { OverflowList, overflowListAfterDOMLoaded } = OverflowListFactory()
|
const { OverflowList, overflowListAfterDOMLoaded } = OverflowListFactory()
|
||||||
|
|
||||||
const Explorer: QuartzComponent = ({ cfg, displayClass }: QuartzComponentProps) => {
|
const Explorer: QuartzComponent = ({ cfg, displayClass, ...props }: QuartzComponentProps) => {
|
||||||
const id = `explorer-${numExplorers++}`
|
const id = `explorer-${numExplorers++}`
|
||||||
|
|
||||||
|
const beforeComponents = (opts.components || []).filter(
|
||||||
|
(c) => c.position === "before" || !c.position,
|
||||||
|
)
|
||||||
|
const afterCOmpoentns = (opts.components || []).filter(
|
||||||
|
(c) => c.position === "after" || !c.position,
|
||||||
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
class={classNames(displayClass, "explorer")}
|
class={classNames(displayClass, "explorer")}
|
||||||
@ -120,7 +132,19 @@ export default ((userOpts?: Partial<Options>) => {
|
|||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
<div id={id} class="explorer-content" aria-expanded={false} role="group">
|
<div id={id} class="explorer-content" aria-expanded={false} role="group">
|
||||||
|
{beforeComponents.map((comp, idx) => (
|
||||||
|
<div key={`before-${idx}`}>
|
||||||
|
<comp.Component {...props} cfg={cfg} />
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
|
||||||
<OverflowList class="explorer-ul" />
|
<OverflowList class="explorer-ul" />
|
||||||
|
|
||||||
|
{afterCOmpoentns.map((comp, idx) => (
|
||||||
|
<div key={`after-${idx}`}>
|
||||||
|
<comp.Component {...props} cfg={cfg} />
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
</div>
|
</div>
|
||||||
<template id="template-file">
|
<template id="template-file">
|
||||||
<li>
|
<li>
|
||||||
@ -159,7 +183,17 @@ export default ((userOpts?: Partial<Options>) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
Explorer.css = style
|
const additionalCSS = opts.components?.map(c => c.Component.css) || []
|
||||||
Explorer.afterDOMLoaded = concatenateResources(script, overflowListAfterDOMLoaded)
|
const additionalAfterDOM = opts.components?.map(c => c.Component.afterDOMLoaded) || []
|
||||||
|
const additionalBeforeDOM = opts.components?.map(c => c.Component.beforeDOMLoaded) || []
|
||||||
|
|
||||||
|
Explorer.css = concatenateResources(style, ...additionalCSS)
|
||||||
|
Explorer.afterDOMLoaded = concatenateResources(
|
||||||
|
script,
|
||||||
|
overflowListAfterDOMLoaded,
|
||||||
|
...additionalAfterDOM
|
||||||
|
)
|
||||||
|
Explorer.beforeDOMLoaded = concatenateResources(...additionalBeforeDOM)
|
||||||
|
|
||||||
return Explorer
|
return Explorer
|
||||||
}) satisfies QuartzComponentConstructor
|
}) satisfies QuartzComponentConstructor
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user