diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.test.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.test.tsx
index f78abc2dfb..d18f784bd0 100644
--- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.test.tsx
+++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.test.tsx
@@ -107,4 +107,43 @@ describe('RepoUrlPickerRepoName', () => {
await userEvent.click(getByText(availableRepos[0].name));
expect(onChange).toHaveBeenCalledWith(availableRepos[0]);
});
+
+ it('should disable the repo selection when isDisabled is true', async () => {
+ const allowedRepos = ['foo', 'bar'];
+ const onChange = jest.fn();
+
+ const { getByRole } = await renderInTestApp(
+ ,
+ );
+
+ // Find the select element
+ const selectElement = getByRole('combobox');
+
+ // Ensure it's disabled
+ expect(selectElement).toBeDisabled();
+ });
+
+ it('should disable the text input when no options are passed and isDisabled is true', async () => {
+ const onChange = jest.fn();
+
+ const { getByRole } = await renderInTestApp(
+ ,
+ );
+
+ // Find the text input (autocomplete)
+ const textInput = getByRole('textbox');
+
+ // Ensure it's disabled
+ expect(textInput).toBeDisabled();
+ });
});
diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.tsx
index d23a4bcd86..bfa9b677bb 100644
--- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.tsx
+++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.tsx
@@ -29,8 +29,16 @@ export const RepoUrlPickerRepoName = (props: {
onChange: (chosenRepo: AvailableRepositories) => void;
rawErrors: string[];
availableRepos?: AvailableRepositories[];
+ isDisabled?: boolean;
}) => {
- const { repoName, allowedRepos, onChange, rawErrors, availableRepos } = props;
+ const {
+ repoName,
+ allowedRepos,
+ onChange,
+ rawErrors,
+ availableRepos,
+ isDisabled,
+ } = props;
const { t } = useTranslationRef(scaffolderTranslationRef);
useEffect(() => {
@@ -63,7 +71,7 @@ export const RepoUrlPickerRepoName = (props: {
name: String(Array.isArray(selected) ? selected[0] : selected),
})
}
- disabled={allowedRepos.length === 1}
+ disabled={isDisabled || allowedRepos.length === 1}
selected={repoName}
items={repoItems}
/>
@@ -86,6 +94,7 @@ export const RepoUrlPickerRepoName = (props: {
)}
freeSolo
autoSelect
+ disabled={isDisabled}
/>
)}