From 6df379ca6f9510793da73183acc851b653575e6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 16 Jun 2022 19:20:07 +0200 Subject: [PATCH] fix(docs): forward doc frontMatter.sidebar_custom_props to linking sidebar category (#7638) --- .../src/props.ts | 20 ++++++++++++++++++- .../docs/api/plugins/plugin-content-docs.md | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/docusaurus-plugin-content-docs/src/props.ts b/packages/docusaurus-plugin-content-docs/src/props.ts index 7d27cebaa9b4..d279e13f1f4c 100644 --- a/packages/docusaurus-plugin-content-docs/src/props.ts +++ b/packages/docusaurus-plugin-content-docs/src/props.ts @@ -73,10 +73,28 @@ Available document ids are: } } + function getCategoryLinkCustomProps( + link: SidebarItemCategoryLink | undefined, + ) { + switch (link?.type) { + case 'doc': + return getDocById(link.id).frontMatter.sidebar_custom_props; + default: + return undefined; + } + } + function convertCategory(item: SidebarItemCategory): PropSidebarItemCategory { const {link, ...rest} = item; const href = getCategoryLinkHref(link); - return {...rest, items: item.items.map(normalizeItem), ...(href && {href})}; + const customProps = item.customProps ?? getCategoryLinkCustomProps(link); + + return { + ...rest, + items: item.items.map(normalizeItem), + ...(href && {href}), + ...(customProps && {customProps}), + }; } function normalizeItem(item: SidebarItem): PropSidebarItem { diff --git a/website/docs/api/plugins/plugin-content-docs.md b/website/docs/api/plugins/plugin-content-docs.md index 84680c46c9d7..d645f726738f 100644 --- a/website/docs/api/plugins/plugin-content-docs.md +++ b/website/docs/api/plugins/plugin-content-docs.md @@ -273,6 +273,7 @@ Accepted fields: | `sidebar_label` | `string` | `title` | The text shown in the document sidebar for this document. | | `sidebar_position` | `number` | Default ordering | Controls the position of a doc inside the generated sidebar slice when using `autogenerated` sidebar items. See also [Autogenerated sidebar metadata](/docs/sidebar#autogenerated-sidebar-metadata). | | `sidebar_class_name` | `string` | `undefined` | Gives the corresponding sidebar label a special class name when using autogenerated sidebars. | +| `sidebar_custom_props` | `string` | `undefined` | Assign custom metadata to the sidebar item referencing this doc. | | `hide_title` | `boolean` | `false` | Whether to hide the title at the top of the doc. It only hides a title declared through the front matter, and have no effect on a Markdown title at the top of your document. | | `hide_table_of_contents` | `boolean` | `false` | Whether to hide the table of contents to the right. | | `toc_min_heading_level` | `number` | `2` | The minimum heading level shown in the table of contents. Must be between 2 and 6 and lower or equal to the max value. |