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 ? (
+