Merge pull request #20458 from Teemukoivumaa/fix/EntityPickerOneEntity

fix: make entity picker more reliable with one entity
This commit is contained in:
Ben Lambert
2023-10-10 11:24:20 +02:00
committed by GitHub
2 changed files with 14 additions and 8 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder': patch
---
Make entity picker more reliable with only one available entity
@@ -123,11 +123,17 @@ export const EntityPicker = (props: EntityPickerProps) => {
[onChange, formData, defaultKind, defaultNamespace, allowArbitraryValues],
);
// Since free solo can be enabled, attempt to parse as a full entity ref first, then fall
// back to the given value.
const selectedEntity =
entities?.find(e => stringifyEntityRef(e) === formData) ??
(allowArbitraryValues && formData ? getLabel(formData) : '');
useEffect(() => {
if (entities?.length === 1) {
if (entities?.length === 1 && selectedEntity === '') {
onChange(stringifyEntityRef(entities[0]));
}
}, [entities, onChange]);
}, [entities, onChange, selectedEntity]);
return (
<FormControl
@@ -138,12 +144,7 @@ export const EntityPicker = (props: EntityPickerProps) => {
<Autocomplete
disabled={entities?.length === 1}
id={idSchema?.$id}
value={
// Since free solo can be enabled, attempt to parse as a full entity ref first, then fall
// back to the given value.
entities?.find(e => stringifyEntityRef(e) === formData) ??
(allowArbitraryValues && formData ? getLabel(formData) : '')
}
value={selectedEntity}
loading={loading}
onChange={onSelect}
options={entities || []}