diff --git a/.changeset/hot-years-sell.md b/.changeset/hot-years-sell.md
new file mode 100644
index 0000000000..bc2c63e826
--- /dev/null
+++ b/.changeset/hot-years-sell.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Use default value for `MyGroupsPicker` if provided
diff --git a/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.test.tsx b/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.test.tsx
index 521c4029b3..94261ce0e4 100644
--- a/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.test.tsx
+++ b/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.test.tsx
@@ -274,4 +274,51 @@ describe('', () => {
expect(onChange).toHaveBeenCalledWith('group:default/group1');
});
});
+
+ it('should use the pre-existed formdata value if set with the form', async () => {
+ const userGroups = [
+ {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Group',
+ metadata: { name: 'group1', title: 'My First Group' },
+ spec: { members: ['Bob'] },
+ },
+ {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Group',
+ metadata: { name: 'group2', title: 'My Second Group' },
+ spec: { members: ['Bob'] },
+ },
+ ];
+
+ catalogApi.getEntities.mockResolvedValue({ items: userGroups });
+
+ const props = {
+ onChange,
+ schema,
+ required,
+ formData: 'group:default/group1',
+ } as unknown as FieldProps;
+
+ const { getByRole } = render(
+
+
+ ,
+ );
+
+ await waitFor(() =>
+ expect(catalogApi.getEntities).toHaveBeenCalledTimes(1),
+ );
+
+ const inputField = getByRole('combobox');
+ const inputFieldValue = inputField?.querySelector('input')?.value;
+
+ expect(inputFieldValue).toEqual(userGroups[0].metadata.title);
+ });
});
diff --git a/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.tsx b/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.tsx
index 0314240b40..1e78fa45a1 100644
--- a/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.tsx
+++ b/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.tsx
@@ -37,6 +37,7 @@ export const MyGroupsPicker = (props: MyGroupsPickerProps) => {
required,
rawErrors,
onChange,
+ formData,
} = props;
const identityApi = useApi(identityApiRef);
@@ -48,10 +49,6 @@ export const MyGroupsPicker = (props: MyGroupsPickerProps) => {
ref: string;
}[]
>([]);
- const [selectedGroup, setSelectedGroup] = useState(null);
useAsync(async () => {
const { userEntityRef } = await identityApi.getBackstageIdentity();
@@ -82,10 +79,11 @@ export const MyGroupsPicker = (props: MyGroupsPickerProps) => {
_: React.ChangeEvent<{}>,
value: { label: string; ref: string } | null,
) => {
- setSelectedGroup(value);
onChange(value?.ref ?? '');
};
+ const selectedEntity = groups?.find(e => e.ref === formData) || null;
+
return (
{
group.label}
renderInput={params => (