From 222a014aa8501b7c0591edfc921da3889015a6aa Mon Sep 17 00:00:00 2001 From: Nikunj Hudka Date: Sun, 23 Feb 2025 23:06:59 -0400 Subject: [PATCH] feat: ui:disabled allowed in GitlabRepoPicker Signed-off-by: Nikunj Hudka --- .../RepoUrlPicker/GitlabRepoPicker.test.tsx | 67 +++++++++++++++++++ .../fields/RepoUrlPicker/GitlabRepoPicker.tsx | 13 +++- 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/GitlabRepoPicker.test.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/GitlabRepoPicker.test.tsx index a8fb42cae3..8a1604dfee 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/GitlabRepoPicker.test.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/GitlabRepoPicker.test.tsx @@ -31,6 +31,73 @@ describe('GitlabRepoPicker', () => { }), ), }; + + describe('GitlabRepoPicker - isDisabled', () => { + it('disables owner input when isDisabled is true', async () => { + const { getByRole } = await renderInTestApp( + + + , + ); + + expect(getByRole('textbox')).toBeDisabled(); + }); + + it('does not disable owner input when isDisabled is false', async () => { + const { getByRole } = await renderInTestApp( + + + , + ); + + expect(getByRole('textbox')).not.toBeDisabled(); + }); + + it('disables select input when allowedOwners are provided and isDisabled is true', async () => { + const allowedOwners = ['owner1', 'owner2']; + const { getByRole } = await renderInTestApp( + + + , + ); + + expect(getByRole('combobox')).toBeDisabled(); + }); + + it('does not disable select input when allowedOwners are provided and isDisabled is false', async () => { + const allowedOwners = ['owner1', 'owner2']; + const { getByRole } = await renderInTestApp( + + + , + ); + + expect(getByRole('combobox')).not.toBeDisabled(); + }); + }); + describe('owner field', () => { it('renders a select if there is a list of allowed owners', async () => { const allowedOwners = ['owner1', 'owner2']; diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/GitlabRepoPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/GitlabRepoPicker.tsx index d97c9431ee..0d7c8b365a 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/GitlabRepoPicker.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/GitlabRepoPicker.tsx @@ -33,7 +33,14 @@ export const GitlabRepoPicker = ( accessToken?: string; }>, ) => { - const { allowedOwners = [], state, onChange, rawErrors, accessToken } = props; + const { + allowedOwners = [], + state, + onChange, + rawErrors, + accessToken, + isDisabled, + } = props; const [availableGroups, setAvailableGroups] = useState< { title: string; id: string }[] >([]); @@ -128,7 +135,7 @@ export const GitlabRepoPicker = ( ), }) } - disabled={allowedOwners.length === 1} + disabled={isDisabled || allowedOwners.length === 1} selected={owner} items={ownerItems} /> @@ -147,10 +154,12 @@ export const GitlabRepoPicker = ( )} freeSolo + disabled={isDisabled} autoSelect /> )}