diff --git a/quartz/components/Explorer.tsx b/quartz/components/Explorer.tsx index e4cbcabae..b14e2967d 100644 --- a/quartz/components/Explorer.tsx +++ b/quartz/components/Explorer.tsx @@ -20,6 +20,10 @@ export interface Options { filterFn: (node: FileTrieNode) => boolean mapFn: (node: FileTrieNode) => void order: OrderEntries[] + components?: { + Component: QuartzComponent + position: "before" | "after" + }[] } const defaultOptions: Options = { @@ -48,6 +52,7 @@ const defaultOptions: Options = { }, filterFn: (node) => node.slugSegment !== "tags", order: ["filter", "map", "sort"], + components: [], } export type FolderState = { @@ -60,9 +65,12 @@ export default ((userOpts?: Partial) => { const opts: Options = { ...defaultOptions, ...userOpts } const { OverflowList, overflowListAfterDOMLoaded } = OverflowListFactory() - const Explorer: QuartzComponent = ({ cfg, displayClass }: QuartzComponentProps) => { + const Explorer: QuartzComponent = ({ cfg, displayClass, ...props }: QuartzComponentProps) => { const id = `explorer-${numExplorers++}` + const beforeComponents = (opts.components || []).filter((c) => c.position === "before") + const afterComponents = (opts.components || []).filter((c) => c.position === "after") + return (
) => {
+ {beforeComponents.map((comp, idx) => { + const componentName = comp.Component.displayName || `component-${idx}` + const key = `before-${componentName}-${idx}` + return ( +
+ +
+ ) + })} + + + {afterComponents.map((comp, idx) => { + const componentName = comp.Component.displayName || `component-${idx}` + const key = `before-${componentName}-${idx}` + return ( +
+ +
+ ) + })}