From b0dc9b87812bbe5c71e59f5faf0319a7eed9a656 Mon Sep 17 00:00:00 2001 From: Matt Benson Date: Fri, 20 Jun 2025 10:27:34 -0500 Subject: [PATCH] fix: differentiate between entirely and partially composite schemas Signed-off-by: Matt Benson --- .changeset/lovely-fans-write.md | 5 +++++ .../components/RenderSchema/RenderSchema.tsx | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 .changeset/lovely-fans-write.md diff --git a/.changeset/lovely-fans-write.md b/.changeset/lovely-fans-write.md new file mode 100644 index 0000000000..71b02f2bde --- /dev/null +++ b/.changeset/lovely-fans-write.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +differentiate between entirely and partially composite schemas in schema rendering diff --git a/plugins/scaffolder/src/components/RenderSchema/RenderSchema.tsx b/plugins/scaffolder/src/components/RenderSchema/RenderSchema.tsx index fc926e6c44..2d4ebd6fca 100644 --- a/plugins/scaffolder/src/components/RenderSchema/RenderSchema.tsx +++ b/plugins/scaffolder/src/components/RenderSchema/RenderSchema.tsx @@ -102,6 +102,9 @@ const getSubschemas = (schema: JSONSchema7Definition): subSchemasType => { base[key as Exclude] = value; } } + if (!(base?.type === 'object' || 'properties' in base)) { + return subschemas; + } return Object.fromEntries( Object.entries(subschemas).map(([key, sub]) => { const mergedSubschema = sub.map(alt => { @@ -358,13 +361,15 @@ export const RenderSchema = ({ let columns: Column[] | undefined; let elements: SchemaRenderElement[] | undefined; if (strategy === 'root') { - elements = [{ schema }]; - columns = [typeColumn]; - if (schema.description) { - columns.unshift(descriptionColumn); - } - if (schema.title) { - columns.unshift(titleColumn); + if ('type' in schema || !Object.keys(subschemas).length) { + elements = [{ schema }]; + columns = [typeColumn]; + if (schema.description) { + columns.unshift(descriptionColumn); + } + if (schema.title) { + columns.unshift(titleColumn); + } } } else if (schema.properties) { columns = [nameColumn, titleColumn, descriptionColumn, typeColumn];