From b8269de9f1eb19117804a8aebb1421a32ce9c7bd Mon Sep 17 00:00:00 2001 From: Mark David Avery Date: Wed, 28 Dec 2022 11:13:50 -0800 Subject: [PATCH] style(react 18): explicitly declaring children as optional props This is to facilitate the react 18 upgrade which introduced the requirement to explicily declare children as props Helps to address #12252 Signed-off-by: Mark David Avery --- .changeset/sharp-icons-obey.md | 6 ++++++ plugins/scaffolder/api-report.md | 4 +++- plugins/scaffolder/src/extensions/index.tsx | 5 +++-- plugins/techdocs-react/api-report.md | 4 +++- plugins/techdocs-react/src/addons.tsx | 8 ++++++-- 5 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 .changeset/sharp-icons-obey.md diff --git a/.changeset/sharp-icons-obey.md b/.changeset/sharp-icons-obey.md new file mode 100644 index 0000000000..2620dd9a07 --- /dev/null +++ b/.changeset/sharp-icons-obey.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-techdocs-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Explicitly declaring children as optional props to facilitate react 18 changes diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md index 1c4d163123..bb45ad3b44 100644 --- a/plugins/scaffolder/api-report.md +++ b/plugins/scaffolder/api-report.md @@ -552,7 +552,9 @@ export interface ScaffolderDryRunResponse { } // @public -export const ScaffolderFieldExtensions: React_2.ComponentType; +export const ScaffolderFieldExtensions: React_2.ComponentType< + React_2.PropsWithChildren<{}> +>; // @public export interface ScaffolderGetIntegrationsListOptions { diff --git a/plugins/scaffolder/src/extensions/index.tsx b/plugins/scaffolder/src/extensions/index.tsx index a3a4fdf57b..2b3126ac58 100644 --- a/plugins/scaffolder/src/extensions/index.tsx +++ b/plugins/scaffolder/src/extensions/index.tsx @@ -94,8 +94,9 @@ export function createNextScaffolderFieldExtension< * * @public */ -export const ScaffolderFieldExtensions: React.ComponentType = - (): JSX.Element | null => null; +export const ScaffolderFieldExtensions: React.ComponentType< + React.PropsWithChildren<{}> +> = (): JSX.Element | null => null; attachComponentData( ScaffolderFieldExtensions, diff --git a/plugins/techdocs-react/api-report.md b/plugins/techdocs-react/api-report.md index f1d6d3f177..cf64762fda 100644 --- a/plugins/techdocs-react/api-report.md +++ b/plugins/techdocs-react/api-report.md @@ -56,7 +56,9 @@ export type TechDocsAddonOptions = { }; // @public -export const TechDocsAddons: React_2.ComponentType; +export const TechDocsAddons: React_2.ComponentType< + React_2.PropsWithChildren<{}> +>; // @public export interface TechDocsApi { diff --git a/plugins/techdocs-react/src/addons.tsx b/plugins/techdocs-react/src/addons.tsx index d77f53a426..54aea0352d 100644 --- a/plugins/techdocs-react/src/addons.tsx +++ b/plugins/techdocs-react/src/addons.tsx @@ -43,7 +43,9 @@ export const TECHDOCS_ADDONS_WRAPPER_KEY = 'techdocs.addons.wrapper.v1'; * TechDocs Addon registry. * @public */ -export const TechDocsAddons: React.ComponentType = () => null; +export const TechDocsAddons: React.ComponentType< + React.PropsWithChildren<{}> +> = () => null; attachComponentData(TechDocsAddons, TECHDOCS_ADDONS_WRAPPER_KEY, true); @@ -71,7 +73,9 @@ export function createTechDocsAddonExtension( * Create a TechDocs addon implementation. * @public */ -export function createTechDocsAddonExtension( +export function createTechDocsAddonExtension< + TComponentProps extends React.PropsWithChildren<{}>, +>( options: TechDocsAddonOptions, ): Extension<(props: TComponentProps) => JSX.Element | null> { const { name, component: TechDocsAddon } = options;