diff --git a/.changeset/techdocs-back-once-again.md b/.changeset/techdocs-back-once-again.md new file mode 100644 index 0000000000..bf99f2d509 --- /dev/null +++ b/.changeset/techdocs-back-once-again.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Fixed a bug preventing custom TechDocs reader page implementations from rendering without being double-wrapped in the `` component. diff --git a/.changeset/techdocs-renegade-master.md b/.changeset/techdocs-renegade-master.md new file mode 100644 index 0000000000..9185faabfc --- /dev/null +++ b/.changeset/techdocs-renegade-master.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Fixed a bug that caused addons in the `Subheader` location to break the default TechDocs reader page layout. diff --git a/docs/features/techdocs/how-to-guides.md b/docs/features/techdocs/how-to-guides.md index 45929dfd20..0c3bc98c09 100644 --- a/docs/features/techdocs/how-to-guides.md +++ b/docs/features/techdocs/how-to-guides.md @@ -162,11 +162,11 @@ The `techDocsPage` is a default techdocs reader page which lives in having to set anything up. ```tsx - + - + ``` If you would like to compose your own `techDocsPage`, you can do so by replacing @@ -174,30 +174,30 @@ the children of TechDocsPage with something else. Maybe you are _just_ interested in replacing the Header: ```tsx - +
- + ``` Or maybe you want to disable the in-context search ```tsx - +
- + ``` Or maybe you want to replace the entire TechDocs Page. ```tsx - +

my own content

- + ``` ## How to migrate from TechDocs Alpha to Beta diff --git a/packages/app/src/components/techdocs/TechDocsPage.tsx b/packages/app/src/components/techdocs/TechDocsPage.tsx index 48a9812160..d79acbe0a7 100644 --- a/packages/app/src/components/techdocs/TechDocsPage.tsx +++ b/packages/app/src/components/techdocs/TechDocsPage.tsx @@ -14,21 +14,21 @@ * limitations under the License. */ +import React from 'react'; +import { Page } from '@backstage/core-components'; import { - TechDocsReaderPage, TechDocsReaderPageHeader, TechDocsReaderPageSubheader, TechDocsReaderPageContent, } from '@backstage/plugin-techdocs'; -import React from 'react'; const DefaultTechDocsPage = () => { return ( - + - + ); }; diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index 4575ef7b28..936df8991c 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -18,7 +18,6 @@ import { PropsWithChildren } from 'react'; import { default as React_2 } from 'react'; import { ReactNode } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; -import { StyledComponentProps } from '@material-ui/core'; import { TableColumn } from '@backstage/core-components'; import { TableProps } from '@backstage/core-components'; import { TechDocsEntityMetadata as TechDocsEntityMetadata_2 } from '@backstage/plugin-techdocs-react'; @@ -351,15 +350,11 @@ export type TechDocsReaderPageRenderFunction = ({ }) => JSX.Element; // @public -export const TechDocsReaderPageSubheader: React_2.ComponentType< - Pick< - { - toolbarProps?: ToolbarProps<'div', {}> | undefined; - }, - 'toolbarProps' - > & - StyledComponentProps<'root'> ->; +export const TechDocsReaderPageSubheader: ({ + toolbarProps, +}: { + toolbarProps?: ToolbarProps<'div', {}> | undefined; +}) => JSX.Element | null; // @public export const TechDocsReaderProvider: ({ diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx index a84c0a8122..6885957002 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx @@ -97,11 +97,9 @@ export const TechDocsReaderPage = (props: TechDocsReaderPageProps) => { }); return ( - (page as JSX.Element) || ( - - - - ) + + {(page as JSX.Element) || } + ); } diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx index 62d64fa858..1eeb713ed9 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx @@ -16,26 +16,33 @@ import React from 'react'; -import { Box, Toolbar, ToolbarProps, withStyles } from '@material-ui/core'; +import { Box, makeStyles, Toolbar, ToolbarProps } from '@material-ui/core'; import { TechDocsAddonLocations as locations, useTechDocsAddons, } from '@backstage/plugin-techdocs-react'; -/** - * Renders the reader page subheader. - * Please use the Tech Docs add-ons to customize it - * @public - */ -export const TechDocsReaderPageSubheader = withStyles(theme => ({ +const useStyles = makeStyles(theme => ({ root: { gridArea: 'pageSubheader', flexDirection: 'column', minHeight: 'auto', padding: theme.spacing(3, 3, 0), }, -}))(({ toolbarProps }: { toolbarProps?: ToolbarProps }) => { +})); + +/** + * Renders the reader page subheader. + * Please use the Tech Docs add-ons to customize it + * @public + */ +export const TechDocsReaderPageSubheader = ({ + toolbarProps, +}: { + toolbarProps?: ToolbarProps; +}) => { + const classes = useStyles(); const addons = useTechDocsAddons(); const subheaderAddons = addons.renderComponentsByLocation( locations.Subheader, @@ -44,7 +51,7 @@ export const TechDocsReaderPageSubheader = withStyles(theme => ({ if (!subheaderAddons) return null; return ( - + {subheaderAddons && ( ({ )} ); -}); +};