Fixed issue for showing undefined for hidden form items

Signed-off-by: Jasper Boeijenga <jboeijenga@gmail.com>
This commit is contained in:
Jasper Boeijenga
2023-11-30 09:10:18 +01:00
parent ad3e4fb616
commit 5bb52409ee
3 changed files with 39 additions and 32 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-react': patch
---
Fixed issue for showing undefined for hidden form items
@@ -94,10 +94,10 @@ describe('ReviewState', () => {
},
];
const { queryByRole } = render(
const { queryByRole, getAllByRole } = render(
<ReviewState formState={formState} schemas={schemas} />,
);
expect(getAllByRole('row').length).toEqual(1);
expect(queryByRole('row', { name: 'Name ******' })).not.toBeInTheDocument();
});
@@ -34,42 +34,44 @@ export type ReviewStateProps = {
*/
export const ReviewState = (props: ReviewStateProps) => {
const reviewData = Object.fromEntries(
Object.entries(props.formState).map(([key, value]) => {
for (const step of props.schemas) {
const parsedSchema = new JSONSchema(step.mergedSchema);
const definitionInSchema = parsedSchema.getSchema(
`#/${key}`,
props.formState,
);
if (definitionInSchema) {
const backstageReviewOptions =
definitionInSchema['ui:backstage']?.review;
Object.entries(props.formState)
.map(([key, value]) => {
for (const step of props.schemas) {
const parsedSchema = new JSONSchema(step.mergedSchema);
const definitionInSchema = parsedSchema.getSchema(
`#/${key}`,
props.formState,
);
if (definitionInSchema) {
const backstageReviewOptions =
definitionInSchema['ui:backstage']?.review;
if (backstageReviewOptions) {
if (backstageReviewOptions.mask) {
return [key, backstageReviewOptions.mask];
if (backstageReviewOptions) {
if (backstageReviewOptions.mask) {
return [key, backstageReviewOptions.mask];
}
if (backstageReviewOptions.show === false) {
return [];
}
}
if (backstageReviewOptions.show === false) {
return [];
if (definitionInSchema['ui:widget'] === 'password') {
return [key, '******'];
}
}
if (definitionInSchema['ui:widget'] === 'password') {
return [key, '******'];
}
if (definitionInSchema.enum && definitionInSchema.enumNames) {
return [
key,
definitionInSchema.enumNames[
definitionInSchema.enum.indexOf(value)
] || value,
];
if (definitionInSchema.enum && definitionInSchema.enumNames) {
return [
key,
definitionInSchema.enumNames[
definitionInSchema.enum.indexOf(value)
] || value,
];
}
}
}
}
return [key, value];
}),
return [key, value];
})
.filter(prop => prop.length > 0),
);
return <StructuredMetadataTable metadata={reviewData} />;
};