From 4512f7190feb3c922335705cfa500cb8a6c6f877 Mon Sep 17 00:00:00 2001 From: Stephen Glass Date: Sat, 24 Aug 2024 13:08:17 -0400 Subject: [PATCH 1/4] add scaffolder review step custom name option Signed-off-by: Stephen Glass --- .changeset/four-ties-raise.md | 5 +++ .../ReviewState/ReviewState.test.tsx | 34 +++++++++++++++++++ .../components/ReviewState/ReviewState.tsx | 10 +++--- 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 .changeset/four-ties-raise.md diff --git a/.changeset/four-ties-raise.md b/.changeset/four-ties-raise.md new file mode 100644 index 0000000000..80a830afe5 --- /dev/null +++ b/.changeset/four-ties-raise.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Add `ui:backstage.review.name` option for custom item names on scaffolder review page diff --git a/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.test.tsx b/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.test.tsx index 69b651e672..f18dcd919c 100644 --- a/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.test.tsx +++ b/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.test.tsx @@ -434,4 +434,38 @@ describe('ReviewState', () => { queryByRole('row', { name: 'Name > Example > Test type6' }), ).not.toBeInTheDocument(); }); + + it('should allow custom review name', async () => { + const formState = { + foo: 'test', + }; + + const schemas: ParsedTemplateSchema[] = [ + { + mergedSchema: { + type: 'object', + properties: { + foo: { + type: 'string', + 'ui:backstage': { + review: { + name: 'bar', + }, + }, + }, + }, + }, + schema: {}, + title: 'test', + uiSchema: {}, + }, + ]; + + const { queryByRole } = render( + , + ); + + expect(queryByRole('row', { name: 'Bar test' })).toBeInTheDocument(); + expect(queryByRole('row', { name: 'Foo test' })).not.toBeInTheDocument(); + }); }); diff --git a/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.tsx b/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.tsx index fb6a592dce..8969ae234b 100644 --- a/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.tsx +++ b/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.tsx @@ -41,11 +41,13 @@ function processSchema( data: formState, }); + const name = definitionInSchema?.['ui:backstage']?.review?.name ?? key; + if (definitionInSchema) { const backstageReviewOptions = definitionInSchema['ui:backstage']?.review; if (backstageReviewOptions) { if (backstageReviewOptions.mask) { - return [[key, backstageReviewOptions.mask]]; + return [[name, backstageReviewOptions.mask]]; } if (backstageReviewOptions.show === false) { return []; @@ -56,13 +58,13 @@ function processSchema( definitionInSchema['ui:widget'] === 'password' || definitionInSchema['ui:field']?.toLocaleLowerCase('en-us') === 'secret' ) { - return [[key, '******']]; + return [[name, '******']]; } if (definitionInSchema.enum && definitionInSchema.enumNames) { return [ [ - key, + name, definitionInSchema.enumNames[ definitionInSchema.enum.indexOf(value) ] || value, @@ -78,7 +80,7 @@ function processSchema( } } - return [[key, value]]; + return [[name, value]]; } /** From e372b650d34db64054a300c0108a1a74979a0957 Mon Sep 17 00:00:00 2001 From: Stephen Glass Date: Mon, 26 Aug 2024 09:10:34 -0400 Subject: [PATCH 2/4] update changeset Co-authored-by: Johan Haals Signed-off-by: Stephen Glass --- .changeset/four-ties-raise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/four-ties-raise.md b/.changeset/four-ties-raise.md index 80a830afe5..89ba0385ec 100644 --- a/.changeset/four-ties-raise.md +++ b/.changeset/four-ties-raise.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder-react': minor --- Add `ui:backstage.review.name` option for custom item names on scaffolder review page From 2b1b0eba84998862fb8db378211e724941cca096 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 27 Aug 2024 12:44:12 +0200 Subject: [PATCH 3/4] feat: support title if present in schema definition Signed-off-by: blam --- .../ReviewState/ReviewState.test.tsx | 29 +++++++++++++++++++ .../components/ReviewState/ReviewState.tsx | 5 +++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.test.tsx b/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.test.tsx index f18dcd919c..a3fcecbe2b 100644 --- a/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.test.tsx +++ b/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.test.tsx @@ -435,6 +435,35 @@ describe('ReviewState', () => { ).not.toBeInTheDocument(); }); + it('should allow using the title property', async () => { + const formState = { + foo: 'test', + }; + + const schemas: ParsedTemplateSchema[] = [ + { + mergedSchema: { + type: 'object', + properties: { + foo: { + type: 'string', + title: 'Test Thing', + }, + }, + }, + schema: {}, + title: 'test', + uiSchema: {}, + }, + ]; + + const { queryByRole } = render( + , + ); + + expect(queryByRole('row', { name: 'Test Thing test' })).toBeInTheDocument(); + }); + it('should allow custom review name', async () => { const formState = { foo: 'test', diff --git a/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.tsx b/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.tsx index 8969ae234b..7d2c6042dc 100644 --- a/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.tsx +++ b/plugins/scaffolder-react/src/next/components/ReviewState/ReviewState.tsx @@ -41,7 +41,10 @@ function processSchema( data: formState, }); - const name = definitionInSchema?.['ui:backstage']?.review?.name ?? key; + const name = + definitionInSchema?.['ui:backstage']?.review?.name ?? + definitionInSchema?.title ?? + key; if (definitionInSchema) { const backstageReviewOptions = definitionInSchema['ui:backstage']?.review; From 804991e9d2cfd39cf3cbf78becdb72d6694abf57 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 27 Aug 2024 12:45:47 +0200 Subject: [PATCH 4/4] chore: update changeset Signed-off-by: blam --- .changeset/four-ties-raise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/four-ties-raise.md b/.changeset/four-ties-raise.md index 89ba0385ec..163443afff 100644 --- a/.changeset/four-ties-raise.md +++ b/.changeset/four-ties-raise.md @@ -2,4 +2,4 @@ '@backstage/plugin-scaffolder-react': minor --- -Add `ui:backstage.review.name` option for custom item names on scaffolder review page +Add `ui:backstage.review.name` option for custom item names on scaffolder review page, and also add support for rendering the `title` property instead of the key name.