From 4db0d9903c659967f9b4503003ec4ef8e293d28f Mon Sep 17 00:00:00 2001 From: Bogdan Nechyporenko Date: Mon, 16 Oct 2023 14:47:46 +0200 Subject: [PATCH] Make it possible to define control buttons text (Back, Create, Review) per template Signed-off-by: Bogdan Nechyporenko --- plugins/scaffolder-common/api-report.md | 10 +++++++++ .../src/TemplateEntityV1beta3.ts | 22 ++++++++++++++++++- plugins/scaffolder-react/alpha-api-report.md | 3 +++ plugins/scaffolder-react/api-report.md | 2 ++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder-common/api-report.md b/plugins/scaffolder-common/api-report.md index 6113c72659..73289bcc47 100644 --- a/plugins/scaffolder-common/api-report.md +++ b/plugins/scaffolder-common/api-report.md @@ -44,6 +44,15 @@ export interface TaskStep { name: string; } +// @public +export interface TemplateConfigurationsV1beta3 extends JsonObject { + buttonLabels?: { + backButtonText?: string; + createButtonText?: string; + reviewButtonText?: string; + }; +} + // @public export interface TemplateEntityStepV1beta3 extends JsonObject { // (undocumented) @@ -66,6 +75,7 @@ export interface TemplateEntityV1beta3 extends Entity { kind: 'Template'; spec: { type: string; + configurations?: TemplateConfigurationsV1beta3; parameters?: TemplateParametersV1beta3 | TemplateParametersV1beta3[]; steps: Array; output?: { diff --git a/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts b/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts index 96edd44595..c610886ac1 100644 --- a/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts +++ b/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts @@ -46,6 +46,9 @@ export interface TemplateEntityV1beta3 extends Entity { */ type: string; + /** + * Template specific configurations. + */ configurations?: TemplateConfigurationsV1beta3; /** @@ -70,10 +73,27 @@ export interface TemplateEntityV1beta3 extends Entity { }; } -export interface TemplateConfigurationsV1beta3 { +/** + * The configuration of the template. + * + * @public + */ +export interface TemplateConfigurationsV1beta3 extends JsonObject { + /** + * Overrides default buttons' text + */ buttonLabels?: { + /** + * The text for the button which leads to the previous template page + */ backButtonText?: string; + /** + * The text for the button which starts the execution of the template + */ createButtonText?: string; + /** + * The text for the button which opens template's review/summary + */ reviewButtonText?: string; }; } diff --git a/plugins/scaffolder-react/alpha-api-report.md b/plugins/scaffolder-react/alpha-api-report.md index 11bb2c10c4..3c9a4df26b 100644 --- a/plugins/scaffolder-react/alpha-api-report.md +++ b/plugins/scaffolder-react/alpha-api-report.md @@ -25,6 +25,7 @@ import { ScaffolderStep } from '@backstage/plugin-scaffolder-react'; import { ScaffolderTaskOutput } from '@backstage/plugin-scaffolder-react'; import { SetStateAction } from 'react'; import { TaskStep } from '@backstage/plugin-scaffolder-common'; +import { TemplateConfigurationsV1beta3 } from '@backstage/plugin-scaffolder-common'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; import { TemplateParameterSchema } from '@backstage/plugin-scaffolder-react'; import { UIOptionsType } from '@rjsf/utils'; @@ -183,6 +184,7 @@ export type StepperProps = { onCreate: (values: Record) => Promise; components?: { ReviewStateComponent?: (props: ReviewStateProps) => JSX.Element; + backButtonText?: ReactNode; createButtonText?: ReactNode; reviewButtonText?: ReactNode; }; @@ -303,6 +305,7 @@ export const useTemplateParameterSchema: (templateRef: string) => { // @alpha export const useTemplateSchema: (manifest: TemplateParameterSchema) => { steps: ParsedTemplateSchema[]; + configurations?: TemplateConfigurationsV1beta3 | undefined; }; // @alpha (undocumented) diff --git a/plugins/scaffolder-react/api-report.md b/plugins/scaffolder-react/api-report.md index da95e6746e..5df7aa3b85 100644 --- a/plugins/scaffolder-react/api-report.md +++ b/plugins/scaffolder-react/api-report.md @@ -19,6 +19,7 @@ import { PropsWithChildren } from 'react'; import { default as React_2 } from 'react'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { TaskStep } from '@backstage/plugin-scaffolder-common'; +import { TemplateConfigurationsV1beta3 } from '@backstage/plugin-scaffolder-common'; // @public export type Action = { @@ -317,6 +318,7 @@ export type TaskStream = { export type TemplateParameterSchema = { title: string; description?: string; + configurations?: TemplateConfigurationsV1beta3; steps: Array<{ title: string; description?: string;