From 58b82737c04d23719b13c13d4604cf693b4900c9 Mon Sep 17 00:00:00 2001 From: Nikunj Hudka Date: Sun, 23 Feb 2025 23:08:22 -0400 Subject: [PATCH] feat: ui:disabled allowed in RepoUrlPickerName Signed-off-by: Nikunj Hudka --- .../RepoUrlPickerRepoName.test.tsx | 39 +++++++++++++++++++ .../RepoUrlPicker/RepoUrlPickerRepoName.tsx | 13 ++++++- 2 files changed, 50 insertions(+), 2 deletions(-) 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} /> )}