From e5ad1bd61eca6ca988569422338794a65f254ca8 Mon Sep 17 00:00:00 2001 From: Min Kim Date: Thu, 16 Mar 2023 13:04:08 -0400 Subject: [PATCH] Add changesets and the new api report Signed-off-by: Min Kim Co-authored-by: Taras Mankovski --- .changeset/swift-meals-live.md | 5 ++ .../TemplateCategoryPicker.tsx | 1 - plugins/scaffolder/alpha-api-report.md | 55 +++++++++++++++++++ plugins/scaffolder/api-report.md | 8 +-- plugins/scaffolder/src/alpha.ts | 4 +- .../next/TemplateListPage/TemplateGroups.tsx | 6 ++ .../TemplateListPage/TemplateListPage.tsx | 6 ++ .../src/next/TemplateListPage/index.ts | 4 -- .../TemplateWizardPage/TemplateWizardPage.tsx | 3 + plugins/scaffolder/src/routes.ts | 3 + 10 files changed, 84 insertions(+), 11 deletions(-) create mode 100644 .changeset/swift-meals-live.md diff --git a/.changeset/swift-meals-live.md b/.changeset/swift-meals-live.md new file mode 100644 index 0000000000..ad8106b04e --- /dev/null +++ b/.changeset/swift-meals-live.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +Allow `TemplateListPage` and `TemplateWizardPage` to be passed in as props diff --git a/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx b/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx index 5d7021bc8c..028ce3a701 100644 --- a/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx +++ b/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx @@ -37,7 +37,6 @@ const checkedIcon = ; /** * The Category Picker that is rendered on the left side for picking * categories and filtering the template list. - * * @alpha */ export const TemplateCategoryPicker = () => { diff --git a/plugins/scaffolder/alpha-api-report.md b/plugins/scaffolder/alpha-api-report.md index abb0dc9e03..656f79811f 100644 --- a/plugins/scaffolder/alpha-api-report.md +++ b/plugins/scaffolder/alpha-api-report.md @@ -5,8 +5,12 @@ ```ts /// +import { ExternalRouteRef } from '@backstage/core-plugin-api'; import { FormProps as FormProps_2 } from '@backstage/plugin-scaffolder-react/alpha'; import type { FormProps as FormProps_3 } from '@rjsf/core-v5'; +import { LayoutOptions } from '@backstage/plugin-scaffolder-react'; +import { LinkProps } from 'react-router-dom'; +import { NextFieldExtensionOptions } from '@backstage/plugin-scaffolder-react/alpha'; import { PropsWithChildren } from 'react'; import { default as React_2 } from 'react'; import { ScaffolderTaskOutput } from '@backstage/plugin-scaffolder-react'; @@ -28,6 +32,8 @@ export type NextRouterProps = { TemplateOutputsComponent?: React_2.ComponentType<{ output?: ScaffolderTaskOutput; }>; + TemplateListPageComponent?: React_2.ComponentType; + TemplateWizardPageComponent?: React_2.ComponentType; }; groups?: TemplateGroupFilter[]; templateFilter?: (entity: TemplateEntityV1beta3) => boolean; @@ -44,11 +50,60 @@ export const NextScaffolderPage: ( props: PropsWithChildren, ) => JSX.Element; +// @public (undocumented) +export const registerComponentRouteRef: ExternalRouteRef; + +// @alpha +export const RegisterExistingButton: ( + props: RegisterExistingButtonProps, +) => JSX.Element | null; + +// @alpha +export type RegisterExistingButtonProps = { + title: string; +} & Partial>; + // @alpha (undocumented) export type TemplateGroupFilter = { title?: React_2.ReactNode; filter: (entity: TemplateEntityV1beta3) => boolean; }; +// @alpha (undocumented) +export const TemplateGroups: (props: TemplateGroupsProps) => JSX.Element | null; + +// @alpha (undocumented) +export interface TemplateGroupsProps { + // (undocumented) + groups: TemplateGroupFilter[]; + // (undocumented) + TemplateCardComponent?: React_2.ComponentType<{ + template: TemplateEntityV1beta3; + }>; + // (undocumented) + templateFilter?: (entity: TemplateEntityV1beta3) => boolean; +} + +// @alpha (undocumented) +export type TemplateListPageProps = { + TemplateCardComponent?: React_2.ComponentType<{ + template: TemplateEntityV1beta3; + }>; + groups?: TemplateGroupFilter[]; + templateFilter?: (entity: TemplateEntityV1beta3) => boolean; + contextMenu?: { + editor?: boolean; + actions?: boolean; + tasks?: boolean; + }; +}; + +// @alpha (undocumented) +export type TemplateWizardPageProps = { + customFieldExtensions: NextFieldExtensionOptions[]; + layouts?: LayoutOptions[]; + FormProps?: FormProps_2; +}; + // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md index 8f37f7cf50..5b8ea034cc 100644 --- a/plugins/scaffolder/api-report.md +++ b/plugins/scaffolder/api-report.md @@ -138,8 +138,8 @@ export const EntityTagsPickerFieldExtension: FieldExtensionComponent_2< string[], { showCounts?: boolean | undefined; - kinds?: string[] | undefined; helperText?: string | undefined; + kinds?: string[] | undefined; } >; @@ -148,8 +148,8 @@ export const EntityTagsPickerFieldSchema: FieldSchema< string[], { showCounts?: boolean | undefined; - kinds?: string[] | undefined; helperText?: string | undefined; + kinds?: string[] | undefined; } >; @@ -315,8 +315,8 @@ export const RepoUrlPickerFieldExtension: FieldExtensionComponent_2< | { azure?: string[] | undefined; github?: string[] | undefined; - gitlab?: string[] | undefined; bitbucket?: string[] | undefined; + gitlab?: string[] | undefined; gerrit?: string[] | undefined; } | undefined; @@ -341,8 +341,8 @@ export const RepoUrlPickerFieldSchema: FieldSchema< | { azure?: string[] | undefined; github?: string[] | undefined; - gitlab?: string[] | undefined; bitbucket?: string[] | undefined; + gitlab?: string[] | undefined; gerrit?: string[] | undefined; } | undefined; diff --git a/plugins/scaffolder/src/alpha.ts b/plugins/scaffolder/src/alpha.ts index b2eac4a0c8..c082878827 100644 --- a/plugins/scaffolder/src/alpha.ts +++ b/plugins/scaffolder/src/alpha.ts @@ -21,9 +21,9 @@ export { type TemplateGroupsProps, type NextRouterProps, type FormProps, - CategoryPicker, RegisterExistingButton, type RegisterExistingButtonProps, - ContextMenu, + type TemplateListPageProps, + type TemplateWizardPageProps, } from './next'; export { registerComponentRouteRef } from './routes'; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx index 79e2648d2f..8d4b3f8470 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx @@ -39,6 +39,9 @@ export type TemplateGroupFilter = { filter: (entity: TemplateEntityV1beta3) => boolean; }; +/** + * @alpha + */ export interface TemplateGroupsProps { groups: TemplateGroupFilter[]; templateFilter?: (entity: TemplateEntityV1beta3) => boolean; @@ -47,6 +50,9 @@ export interface TemplateGroupsProps { }>; } +/** + * @alpha + */ export const TemplateGroups = (props: TemplateGroupsProps) => { const { loading, error, entities } = useEntityList(); const { groups, templateFilter, TemplateCardComponent } = props; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx index 424293665b..60a932c06d 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx @@ -48,6 +48,9 @@ import { scaffolderListTaskRouteRef, } from '../../routes'; +/** + * @alpha + */ export type TemplateListPageProps = { TemplateCardComponent?: React.ComponentType<{ template: TemplateEntityV1beta3; @@ -76,6 +79,9 @@ const createGroupsWithOther = ( }, ]; +/** + * @alpha + */ export const TemplateListPage = (props: TemplateListPageProps) => { const registerComponentLink = useRouteRef(registerComponentRouteRef); const { diff --git a/plugins/scaffolder/src/next/TemplateListPage/index.ts b/plugins/scaffolder/src/next/TemplateListPage/index.ts index 74efbef813..bca2e24cb3 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/index.ts +++ b/plugins/scaffolder/src/next/TemplateListPage/index.ts @@ -22,9 +22,5 @@ export type { TemplateGroupsProps, } from './TemplateGroups'; -export { CategoryPicker } from './CategoryPicker'; - export { RegisterExistingButton } from './RegisterExistingButton'; export type { RegisterExistingButtonProps } from './RegisterExistingButton'; - -export { ContextMenu } from './ContextMenu'; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx index 99f4a3b52d..a7133ae8c7 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx @@ -41,6 +41,9 @@ import { selectedTemplateRouteRef, } from '../../routes'; +/** + * @alpha + */ export type TemplateWizardPageProps = { customFieldExtensions: NextFieldExtensionOptions[]; layouts?: LayoutOptions[]; diff --git a/plugins/scaffolder/src/routes.ts b/plugins/scaffolder/src/routes.ts index 54b7605eb1..cc197fc60b 100644 --- a/plugins/scaffolder/src/routes.ts +++ b/plugins/scaffolder/src/routes.ts @@ -19,6 +19,9 @@ import { createSubRouteRef, } from '@backstage/core-plugin-api'; +/** + * @public + */ export const registerComponentRouteRef = createExternalRouteRef({ id: 'register-component', optional: true,