From f873b32f2342b74c68f0bda8e7661b265b4d93ab Mon Sep 17 00:00:00 2001 From: tgreyuk Date: Tue, 10 May 2022 23:51:19 +0100 Subject: [PATCH] fix: added sidebar.autoConfiguration option --- .../docusaurus-plugin-typedoc/src/options.ts | 1 + .../docusaurus-plugin-typedoc/src/theme.ts | 66 ++++++++++--------- .../docusaurus-plugin-typedoc/src/types.ts | 1 + .../test/site/docusaurus.config.js | 3 +- 4 files changed, 40 insertions(+), 31 deletions(-) diff --git a/packages/docusaurus-plugin-typedoc/src/options.ts b/packages/docusaurus-plugin-typedoc/src/options.ts index 3c9cc4c8b..3d357cd33 100644 --- a/packages/docusaurus-plugin-typedoc/src/options.ts +++ b/packages/docusaurus-plugin-typedoc/src/options.ts @@ -11,6 +11,7 @@ const DEFAULT_PLUGIN_OPTIONS: PluginOptions = { indexLabel: undefined, readmeLabel: 'Readme', position: null, + autoConfiguration: true, }, hideInPageTOC: true, hideBreadcrumbs: true, diff --git a/packages/docusaurus-plugin-typedoc/src/theme.ts b/packages/docusaurus-plugin-typedoc/src/theme.ts index 78c1e5e77..00e0136da 100644 --- a/packages/docusaurus-plugin-typedoc/src/theme.ts +++ b/packages/docusaurus-plugin-typedoc/src/theme.ts @@ -1,3 +1,5 @@ +import * as fs from 'fs'; +import * as path from 'path'; import { BindOption, DeclarationReflection, @@ -7,17 +9,14 @@ import { RendererEvent, UrlMapping, } from 'typedoc'; -import * as fs from 'fs'; -import { MarkdownTheme } from 'typedoc-plugin-markdown/dist/theme'; import { getKindPlural } from 'typedoc-plugin-markdown/dist/groups'; -import * as path from 'path'; - -import { FrontMatter, SidebarOptions } from './types'; +import { MarkdownTheme } from 'typedoc-plugin-markdown/dist/theme'; import { FrontMatterVars, getPageTitle, prependYAML, } from 'typedoc-plugin-markdown/dist/utils/front-matter'; +import { FrontMatter, SidebarOptions } from './types'; const CATEGORY_POSITION = { [ReflectionKind.Module]: 1, @@ -76,27 +75,29 @@ export class DocusaurusTheme extends MarkdownTheme { } onRendererEnd(renderer: RendererEvent) { - writeCategoryYaml( - renderer.outputDirectory, - this.sidebar.categoryLabel, - this.sidebar.position, - ); - - Object.keys(groupUrlsByKind(this.getUrls(renderer.project))).forEach( - (group) => { - const kind = parseInt(group); - const mapping = this.mappings.find((mapping) => - mapping.kind.includes(kind), - ); - if (mapping) { - writeCategoryYaml( - renderer.outputDirectory + '/' + mapping.directory, - getKindPlural(kind), - CATEGORY_POSITION[kind], + if (this.sidebar.autoConfiguration) { + writeCategoryYaml( + renderer.outputDirectory, + this.sidebar.categoryLabel, + this.sidebar.position, + ); + + Object.keys(groupUrlsByKind(this.getUrls(renderer.project))).forEach( + (group) => { + const kind = parseInt(group); + const mapping = this.mappings.find((mapping) => + mapping.kind.includes(kind), ); - } - }, - ); + if (mapping) { + writeCategoryYaml( + renderer.outputDirectory + '/' + mapping.directory, + getKindPlural(kind), + CATEGORY_POSITION[kind], + ); + } + }, + ); + } } getYamlItems(page: PageEvent): FrontMatter { @@ -111,12 +112,17 @@ export class DocusaurusTheme extends MarkdownTheme { if (page.url === this.entryDocument) { items = { ...items, slug: this.getSlug() }; } - if (sidebarLabel && sidebarLabel !== pageTitle) { - items = { ...items, sidebar_label: sidebarLabel as string }; - } - if (sidebarPosition) { - items = { ...items, sidebar_position: parseFloat(sidebarPosition) }; + + if (this.sidebar.autoConfiguration) { + console.log('config', this.sidebar.autoConfiguration); + if (sidebarLabel && sidebarLabel !== pageTitle) { + items = { ...items, sidebar_label: sidebarLabel as string }; + } + if (sidebarPosition) { + items = { ...items, sidebar_position: parseFloat(sidebarPosition) }; + } } + if (page.url === page.project.url && this.entryPoints.length > 1) { items = { ...items, hide_table_of_contents: true }; } diff --git a/packages/docusaurus-plugin-typedoc/src/types.ts b/packages/docusaurus-plugin-typedoc/src/types.ts index ecfe1b9ab..734545a93 100644 --- a/packages/docusaurus-plugin-typedoc/src/types.ts +++ b/packages/docusaurus-plugin-typedoc/src/types.ts @@ -32,6 +32,7 @@ export interface SidebarOptions { indexLabel?: string; readmeLabel?: string; position: number | null; + autoConfiguration: boolean; } export interface SidebarCategory { diff --git a/packages/docusaurus-plugin-typedoc/test/site/docusaurus.config.js b/packages/docusaurus-plugin-typedoc/test/site/docusaurus.config.js index a89b7b901..8d1671eef 100644 --- a/packages/docusaurus-plugin-typedoc/test/site/docusaurus.config.js +++ b/packages/docusaurus-plugin-typedoc/test/site/docusaurus.config.js @@ -15,9 +15,10 @@ const config = { entryPoints: '../../../typedoc-plugin-markdown/test/stubs/src/index.ts', tsconfig: '../../../typedoc-plugin-markdown/test/stubs/tsconfig.json', sidebar: { - sidebarFile: null, + autoConfiguration: true, position: 0, }, + cleanOutputDir: true, }, ], ],