feat: Option to mask folder count (#734)

* Option to mask folder count

* Update quartz/components/pages/FolderContent.tsx

---------

Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
This commit is contained in:
LUCASTUCIOUS 2024-01-28 07:21:32 +01:00 committed by GitHub
parent 2b62e29282
commit a70078ccdc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -8,7 +8,22 @@ import { Root } from "hast"
import { pluralize } from "../../util/lang" import { pluralize } from "../../util/lang"
import { htmlToJsx } from "../../util/jsx" import { htmlToJsx } from "../../util/jsx"
function FolderContent(props: QuartzComponentProps) { interface FolderContentOptions {
/**
* Whether to display number of folders
*/
showFolderCount: boolean
}
const defaultOptions: FolderContentOptions = {
showFolderCount: true,
}
export default ((opts?: Partial<FolderContentOptions>) => {
// Merge options with defaults
const options: FolderContentOptions = { ...defaultOptions, ...opts }
function FolderContent(props: QuartzComponentProps) {
const { tree, fileData, allFiles } = props const { tree, fileData, allFiles } = props
const folderSlug = _stripSlashes(simplifySlug(fileData.slug!)) const folderSlug = _stripSlashes(simplifySlug(fileData.slug!))
const allPagesInFolder = allFiles.filter((file) => { const allPagesInFolder = allFiles.filter((file) => {
@ -35,13 +50,14 @@ function FolderContent(props: QuartzComponentProps) {
<article> <article>
<p>{content}</p> <p>{content}</p>
</article> </article>
<p>{pluralize(allPagesInFolder.length, "item")} under this folder.</p> {options.showFolderCount && <p>{pluralize(allPagesInFolder.length, "item")} under this folder.</p>}
<div> <div>
<PageList {...listProps} /> <PageList {...listProps} />
</div> </div>
</div> </div>
) )
} }
FolderContent.css = style + PageList.css FolderContent.css = style + PageList.css
export default (() => FolderContent) satisfies QuartzComponentConstructor return FolderContent
}) satisfies QuartzComponentConstructor