diff --git a/.changeset/thick-shrimps-hammer.md b/.changeset/thick-shrimps-hammer.md new file mode 100644 index 0000000000..ddc0928154 --- /dev/null +++ b/.changeset/thick-shrimps-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +Add support for `allowedOwners` to the `BitbucketRepoPicker` used for the workspace value. diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.test.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.test.tsx index 0ced19a596..fc643e7360 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.test.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.test.tsx @@ -19,6 +19,21 @@ import { BitbucketRepoPicker } from './BitbucketRepoPicker'; import { render, fireEvent } from '@testing-library/react'; describe('BitbucketRepoPicker', () => { + it('renders a select if there is a list of allowed owners', async () => { + const allowedOwners = ['owner1', 'owner2']; + const { findByText } = render( + , + ); + + expect(await findByText('owner1')).toBeInTheDocument(); + expect(await findByText('owner2')).toBeInTheDocument(); + }); + it('renders workspace input when host is bitbucket.org', () => { const state = { host: 'bitbucket.org', workspace: 'lolsWorkspace' }; diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx index fc59398d94..38d615078d 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx @@ -18,15 +18,20 @@ import FormControl from '@material-ui/core/FormControl'; import FormHelperText from '@material-ui/core/FormHelperText'; import Input from '@material-ui/core/Input'; import InputLabel from '@material-ui/core/InputLabel'; +import { Select, SelectItem } from '@backstage/core-components'; import { RepoUrlPickerState } from './types'; export const BitbucketRepoPicker = (props: { + allowedOwners?: string[]; onChange: (state: RepoUrlPickerState) => void; state: RepoUrlPickerState; rawErrors: string[]; }) => { - const { onChange, rawErrors, state } = props; + const { allowedOwners = [], onChange, rawErrors, state } = props; const { host, workspace, project } = state; + const ownerItems: SelectItem[] = allowedOwners + ? allowedOwners?.map(i => ({ label: i, value: i })) + : []; return ( <> {host === 'bitbucket.org' && ( @@ -35,12 +40,27 @@ export const BitbucketRepoPicker = (props: { required error={rawErrors?.length > 0 && !workspace} > - Workspace - onChange({ workspace: e.target.value })} - value={workspace} - /> + {allowedOwners?.length ? ( + onChange({ workspace: e.target.value })} + value={workspace} + /> + + )} The Organization that this repo will belong to diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx index f0ef5ba4b5..f6fa37109d 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx @@ -171,6 +171,7 @@ export const RepoUrlPicker = ( )} {hostType === 'bitbucket' && (