From 59a33de8093bbe2683c7e0d6f3b97a6ccbd61055 Mon Sep 17 00:00:00 2001 From: Gerrit Birkeland Date: Thu, 7 Jul 2022 18:49:12 -0600 Subject: [PATCH] Partials: settings, primaryNavigation, secondaryNavigation Resolves #1987 --- CHANGELOG.md | 1 + .../themes/default/DefaultThemeRenderContext.ts | 10 +++++++++- .../output/themes/default/partials/navigation.tsx | 14 +++++++------- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fba3ea8f..ee6f53a73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - Improved support for `--entryPointStrategy Packages`. TypeDoc will now load package-specific configurations from `package.json` `typedoc` field. This configuration allows configuring a custom display name (`typedoc.displayName`) field, entry point (`typedoc.entryPoint` - this is equivalent and will override `typedocMain`), and path to a readme file to be rendered at the top of the package page (`typedoc.readmeFile`), #1658. - The `--includeVersion` option will now be respected by `--entryPointStrategy Packages`. Also, for this combination, missing `version` field in the root `package.json` will not issue a warning. +- The `navigation` partial will now call the new `settings`, `primaryNavigation`, and `secondaryNavigation` partials, #1987. ### Bug Fixes diff --git a/src/lib/output/themes/default/DefaultThemeRenderContext.ts b/src/lib/output/themes/default/DefaultThemeRenderContext.ts index 835af1568..4cc19dbd8 100644 --- a/src/lib/output/themes/default/DefaultThemeRenderContext.ts +++ b/src/lib/output/themes/default/DefaultThemeRenderContext.ts @@ -21,7 +21,12 @@ import { memberSignatures } from "./partials/member.signatures"; import { memberSources } from "./partials/member.sources"; import { members } from "./partials/members"; import { membersGroup } from "./partials/members.group"; -import { navigation } from "./partials/navigation"; +import { + navigation, + primaryNavigation, + secondaryNavigation, + settings, +} from "./partials/navigation"; import { parameter } from "./partials/parameter"; import { toolbar } from "./partials/toolbar"; import { type } from "./partials/type"; @@ -83,6 +88,9 @@ export class DefaultThemeRenderContext { members = bind(members, this); membersGroup = bind(membersGroup, this); navigation = bind(navigation, this); + settings = bind(settings, this); + primaryNavigation = bind(primaryNavigation, this); + secondaryNavigation = bind(secondaryNavigation, this); parameter = bind(parameter, this); toolbar = bind(toolbar, this); type = bind(type, this); diff --git a/src/lib/output/themes/default/partials/navigation.tsx b/src/lib/output/themes/default/partials/navigation.tsx index bdf216b40..5a0487538 100644 --- a/src/lib/output/themes/default/partials/navigation.tsx +++ b/src/lib/output/themes/default/partials/navigation.tsx @@ -1,15 +1,15 @@ import { ContainerReflection, DeclarationReflection, Reflection, ReflectionKind } from "../../../../models"; import { JSX, partition } from "../../../../utils"; import type { PageEvent } from "../../../events"; -import { classNames, camelToTitleCase, wbr } from "../../lib"; +import { camelToTitleCase, classNames, wbr } from "../../lib"; import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; export function navigation(context: DefaultThemeRenderContext, props: PageEvent) { return ( <> - {settings(context)} - {primaryNavigation(context, props)} - {secondaryNavigation(context, props)} + {context.settings()} + {context.primaryNavigation(props)} + {context.secondaryNavigation(props)} ); } @@ -26,7 +26,7 @@ function buildFilterItem(context: DefaultThemeRenderContext, name: string, displ ); } -function settings(context: DefaultThemeRenderContext) { +export function settings(context: DefaultThemeRenderContext) { const defaultFilters = context.options.getValue("visibilityFilters") as Record; const visibilityOptions: JSX.Element[] = []; @@ -82,7 +82,7 @@ function settings(context: DefaultThemeRenderContext) { ); } -function primaryNavigation(context: DefaultThemeRenderContext, props: PageEvent) { +export function primaryNavigation(context: DefaultThemeRenderContext, props: PageEvent) { // Create the navigation for the current page const modules = props.model.project.getChildrenByKind(ReflectionKind.SomeModule); @@ -130,7 +130,7 @@ function primaryNavigation(context: DefaultThemeRenderContext, props: PageEvent< } } -function secondaryNavigation(context: DefaultThemeRenderContext, props: PageEvent) { +export function secondaryNavigation(context: DefaultThemeRenderContext, props: PageEvent) { // Multiple entry points, and on main project page. if (props.model.isProject() && props.model.getChildrenByKind(ReflectionKind.Module).length) { return;