mirror of
https://github.com/hanzo-docs/docs.git
synced 2026-10-26 23:49:51 +00:00
UI & Core: Support defaultOpen for folder nodes
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'fumadocs-contentlayer': minor
|
||||
'fumadocs-core': minor
|
||||
'fumadocs-mdx': minor
|
||||
'fumadocs-ui': minor
|
||||
---
|
||||
|
||||
Support `defaultOpen` for folder nodes
|
||||
@@ -155,6 +155,10 @@ export function create(options: Options = {}): Config {
|
||||
type: 'string',
|
||||
required: false,
|
||||
},
|
||||
defaultOpen: {
|
||||
type: 'boolean',
|
||||
required: false,
|
||||
},
|
||||
...metaFields,
|
||||
},
|
||||
computedFields: {
|
||||
|
||||
@@ -24,6 +24,7 @@ export interface Folder {
|
||||
type: 'folder';
|
||||
name: string;
|
||||
root?: boolean;
|
||||
defaultOpen?: boolean;
|
||||
index?: Item;
|
||||
icon?: ReactElement;
|
||||
children: Node[];
|
||||
|
||||
@@ -86,7 +86,7 @@ function getFolderMeta(
|
||||
function buildFolderNode(
|
||||
folder: Folder,
|
||||
ctx: PageTreeBuilderContext,
|
||||
root = false,
|
||||
defaultIsRoot = false,
|
||||
): PageTree.Folder {
|
||||
const indexNode = folder.children.find(
|
||||
(node) => node.type === 'page' && node.file.name === 'index',
|
||||
@@ -97,9 +97,9 @@ function buildFolderNode(
|
||||
let children: PageTree.Folder['children'];
|
||||
|
||||
if (!meta) {
|
||||
children = buildAll(folder.children, ctx, !root);
|
||||
children = buildAll(folder.children, ctx, !defaultIsRoot);
|
||||
} else {
|
||||
const isRoot = meta.root ?? root;
|
||||
const isRoot = meta.root ?? defaultIsRoot;
|
||||
const addedNodePaths = new Set<string>();
|
||||
|
||||
const resolved = meta.pages?.flatMap<PageTree.Node | '...'>((item) => {
|
||||
@@ -160,6 +160,7 @@ function buildFolderNode(
|
||||
name: meta?.title ?? index?.name ?? pathToName(folder.file.name),
|
||||
icon: ctx.resolveIcon(meta?.icon),
|
||||
root: meta?.root,
|
||||
defaultOpen: meta?.defaultOpen,
|
||||
index,
|
||||
children,
|
||||
};
|
||||
|
||||
@@ -28,6 +28,7 @@ export interface MetaData {
|
||||
title?: string;
|
||||
root?: boolean;
|
||||
pages?: string[];
|
||||
defaultOpen?: boolean;
|
||||
}
|
||||
|
||||
export interface PageData {
|
||||
|
||||
@@ -4,6 +4,7 @@ const metaSchema = z.object({
|
||||
title: z.string().optional(),
|
||||
pages: z.array(z.string()).optional(),
|
||||
root: z.boolean().optional(),
|
||||
defaultOpen: z.boolean().optional(),
|
||||
icon: z.string().optional(),
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user