diff --git a/.changeset/gorgeous-months-fix.md b/.changeset/gorgeous-months-fix.md new file mode 100644 index 0000000000..f248afad46 --- /dev/null +++ b/.changeset/gorgeous-months-fix.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Fix behavior of scaffolder entity pickers (EntityPicker, MultiEntityPicker, MyGroupsPicker) to not auto-fill and disable the field if there is only a single value option and the field is not required. diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx index 2ef5171c7b..aa5cd44f4d 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx @@ -167,10 +167,15 @@ export const EntityPicker = (props: EntityPickerProps) => { (allowArbitraryValues && formData ? getLabel(formData) : ''); useEffect(() => { - if (entities?.catalogEntities.length === 1 && selectedEntity === '') { + if ( + required && + !allowArbitraryValues && + entities?.catalogEntities.length === 1 && + selectedEntity === '' + ) { onChange(stringifyEntityRef(entities.catalogEntities[0])); } - }, [entities, onChange, selectedEntity]); + }, [entities, onChange, selectedEntity, required, allowArbitraryValues]); return ( { error={rawErrors?.length > 0 && !formData} > { ); useEffect(() => { - if (entities?.entities?.length === 1) { + if (required && !allowArbitraryValues && entities?.entities?.length === 1) { onChange([stringifyEntityRef(entities?.entities[0])]); } - }, [entities, onChange]); + }, [entities, onChange, required, allowArbitraryValues]); return ( { { null; useEffect(() => { - if (groups?.catalogEntities.length === 1 && !selectedEntity) { + if (required && groups?.catalogEntities.length === 1 && !selectedEntity) { onChange(stringifyEntityRef(groups.catalogEntities[0])); } - }, [groups, onChange, selectedEntity]); + }, [groups, onChange, selectedEntity, required]); return ( { error={rawErrors?.length > 0} >