@backstage/plugin-scaffolder 1.36.3-next.1 → 1.37.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/dist/alpha/api/FormDecoratorsApi.esm.js.map +1 -1
- package/dist/alpha/api/ref.esm.js.map +1 -1
- package/dist/alpha/components/TemplateEditorPage/CustomFieldExplorer.esm.js +4 -4
- package/dist/alpha/components/TemplateEditorPage/CustomFieldExplorer.esm.js.map +1 -1
- package/dist/alpha/components/TemplateEditorPage/CustomFieldPlayground.esm.js +5 -5
- package/dist/alpha/components/TemplateEditorPage/CustomFieldPlayground.esm.js.map +1 -1
- package/dist/alpha/components/TemplateListPage/TemplateListPage.esm.js +14 -14
- package/dist/alpha/components/TemplateListPage/TemplateListPage.esm.js.map +1 -1
- package/dist/alpha/components/TemplatesSubPage.esm.js +20 -10
- package/dist/alpha/components/TemplatesSubPage.esm.js.map +1 -1
- package/dist/alpha/extensions.esm.js +28 -2
- package/dist/alpha/extensions.esm.js.map +1 -1
- package/dist/alpha/hooks/useFormDecorators.esm.js +34 -3
- package/dist/alpha/hooks/useFormDecorators.esm.js.map +1 -1
- package/dist/alpha/lib/createGroupsWithOther.esm.js +13 -0
- package/dist/alpha/lib/createGroupsWithOther.esm.js.map +1 -0
- package/dist/alpha.d.ts +14 -4
- package/dist/components/TemplateTypePicker/TemplateTypePicker.esm.js +4 -4
- package/dist/components/TemplateTypePicker/TemplateTypePicker.esm.js.map +1 -1
- package/dist/components/TemplatingExtensionsPage/TemplatingExtensionsPage.esm.js +4 -4
- package/dist/components/TemplatingExtensionsPage/TemplatingExtensionsPage.esm.js.map +1 -1
- package/dist/components/fields/Autocomplete/Autocomplete.esm.js +23 -0
- package/dist/components/fields/Autocomplete/Autocomplete.esm.js.map +1 -0
- package/dist/components/fields/EntityNamePicker/EntityNamePicker.esm.js +23 -2
- package/dist/components/fields/EntityNamePicker/EntityNamePicker.esm.js.map +1 -1
- package/dist/components/fields/EntityPicker/EntityPicker.esm.js +125 -9
- package/dist/components/fields/EntityPicker/EntityPicker.esm.js.map +1 -1
- package/dist/components/fields/EntityTagsPicker/EntityTagsPicker.esm.js +106 -7
- package/dist/components/fields/EntityTagsPicker/EntityTagsPicker.esm.js.map +1 -1
- package/dist/components/fields/MultiEntityPicker/MultiEntityPicker.esm.js +128 -10
- package/dist/components/fields/MultiEntityPicker/MultiEntityPicker.esm.js.map +1 -1
- package/dist/components/fields/MyGroupsPicker/MyGroupsPicker.esm.js +66 -6
- package/dist/components/fields/MyGroupsPicker/MyGroupsPicker.esm.js.map +1 -1
- package/dist/components/fields/OwnedEntityPicker/OwnedEntityPicker.esm.js +29 -6
- package/dist/components/fields/OwnedEntityPicker/OwnedEntityPicker.esm.js.map +1 -1
- package/dist/components/fields/OwnedEntityPicker/schema.esm.js +1 -0
- package/dist/components/fields/OwnedEntityPicker/schema.esm.js.map +1 -1
- package/dist/components/fields/RepoBranchPicker/BitbucketRepoBranchPicker.esm.js +29 -5
- package/dist/components/fields/RepoBranchPicker/BitbucketRepoBranchPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoBranchPicker/DefaultRepoBranchPicker.esm.js +20 -3
- package/dist/components/fields/RepoBranchPicker/DefaultRepoBranchPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoBranchPicker/GitHubRepoBranchPicker.esm.js +29 -5
- package/dist/components/fields/RepoBranchPicker/GitHubRepoBranchPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoBranchPicker/RepoBranchPicker.esm.js +18 -6
- package/dist/components/fields/RepoBranchPicker/RepoBranchPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoOwnerPicker/DefaultRepoOwnerPicker.esm.js +20 -3
- package/dist/components/fields/RepoOwnerPicker/DefaultRepoOwnerPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoOwnerPicker/GitHubRepoOwnerPicker.esm.js +29 -5
- package/dist/components/fields/RepoOwnerPicker/GitHubRepoOwnerPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoOwnerPicker/RepoOwnerPicker.esm.js +28 -31
- package/dist/components/fields/RepoOwnerPicker/RepoOwnerPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoUrlPicker/AzureRepoPicker.esm.js +86 -4
- package/dist/components/fields/RepoUrlPicker/AzureRepoPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoUrlPicker/BitbucketRepoPicker.esm.js +107 -11
- package/dist/components/fields/RepoUrlPicker/BitbucketRepoPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoUrlPicker/GerritRepoPicker.esm.js +33 -3
- package/dist/components/fields/RepoUrlPicker/GerritRepoPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoUrlPicker/GiteaRepoPicker.esm.js +42 -5
- package/dist/components/fields/RepoUrlPicker/GiteaRepoPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoUrlPicker/GithubRepoPicker.esm.js +52 -7
- package/dist/components/fields/RepoUrlPicker/GithubRepoPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoUrlPicker/GitlabRepoPicker.esm.js +60 -16
- package/dist/components/fields/RepoUrlPicker/GitlabRepoPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoUrlPicker/RepoUrlPicker.esm.js +23 -9
- package/dist/components/fields/RepoUrlPicker/RepoUrlPicker.esm.js.map +1 -1
- package/dist/components/fields/RepoUrlPicker/RepoUrlPickerHost.esm.js +27 -3
- package/dist/components/fields/RepoUrlPicker/RepoUrlPickerHost.esm.js.map +1 -1
- package/dist/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.esm.js +60 -6
- package/dist/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.esm.js.map +1 -1
- package/dist/components/fields/SecretInput/SecretInput.esm.js +57 -2
- package/dist/components/fields/SecretInput/SecretInput.esm.js.map +1 -1
- package/dist/components/fields/buiChipStyles.esm.js +25 -0
- package/dist/components/fields/buiChipStyles.esm.js.map +1 -0
- package/dist/components/fields/scaffolderFieldOverrides.module.css.esm.js +8 -0
- package/dist/components/fields/scaffolderFieldOverrides.module.css.esm.js.map +1 -0
- package/dist/index.esm.js +2 -0
- package/dist/index.esm.js.map +1 -1
- package/dist/node_modules_dist/style-inject/dist/style-inject.es.esm.js +29 -0
- package/dist/node_modules_dist/style-inject/dist/style-inject.es.esm.js.map +1 -0
- package/dist/plugins/scaffolder/package.json.esm.js +3 -1
- package/dist/plugins/scaffolder/package.json.esm.js.map +1 -1
- package/package.json +9 -7
|
@@ -5,13 +5,18 @@ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
|
5
5
|
import { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';
|
|
6
6
|
import FormControl from '@material-ui/core/FormControl';
|
|
7
7
|
import FormHelperText from '@material-ui/core/FormHelperText';
|
|
8
|
-
import
|
|
9
|
-
import
|
|
8
|
+
import MuiTextField from '@material-ui/core/TextField';
|
|
9
|
+
import MuiAutocomplete from '@material-ui/lab/Autocomplete';
|
|
10
10
|
import { useEffect, useState, useCallback } from 'react';
|
|
11
11
|
import useDebounce from 'react-use/esm/useDebounce';
|
|
12
12
|
import { scaffolderTranslationRef } from '../../../translation.esm.js';
|
|
13
|
+
import { useScaffolderTheme } from '@backstage/plugin-scaffolder-react/alpha';
|
|
14
|
+
import { Select as Select$1 } from '@backstage/ui';
|
|
15
|
+
import { Autocomplete } from '../Autocomplete/Autocomplete.esm.js';
|
|
16
|
+
import overrides from '../scaffolderFieldOverrides.module.css.esm.js';
|
|
13
17
|
|
|
14
18
|
const BitbucketRepoPicker = (props) => {
|
|
19
|
+
const theme = useScaffolderTheme();
|
|
15
20
|
const {
|
|
16
21
|
allowedOwners = [],
|
|
17
22
|
allowedProjects = [],
|
|
@@ -23,8 +28,6 @@ const BitbucketRepoPicker = (props) => {
|
|
|
23
28
|
} = props;
|
|
24
29
|
const { t } = useTranslationRef(scaffolderTranslationRef);
|
|
25
30
|
const { host, workspace, project } = state;
|
|
26
|
-
const ownerItems = allowedOwners ? allowedOwners?.map((i) => ({ label: i, value: i })) : [];
|
|
27
|
-
const projectItems = allowedProjects ? allowedProjects?.map((i) => ({ label: i, value: i })) : [];
|
|
28
31
|
useEffect(() => {
|
|
29
32
|
if (host === "bitbucket.org" && allowedOwners.length) {
|
|
30
33
|
onChange({ workspace: allowedOwners[0] });
|
|
@@ -79,15 +82,108 @@ const BitbucketRepoPicker = (props) => {
|
|
|
79
82
|
provider: "bitbucket-cloud"
|
|
80
83
|
}).then(({ results }) => {
|
|
81
84
|
onChange({
|
|
82
|
-
availableRepos: results.map((r) => {
|
|
83
|
-
return { name: r.id };
|
|
84
|
-
})
|
|
85
|
+
availableRepos: results.map((r) => ({ name: r.id }))
|
|
85
86
|
});
|
|
86
87
|
}).catch(() => {
|
|
87
88
|
onChange({ availableRepos: [] });
|
|
88
89
|
});
|
|
89
90
|
}, [scaffolderApi, accessToken, host, workspace, project, onChange]);
|
|
90
91
|
useDebounce(updateAvailableRepositories, 500, [updateAvailableRepositories]);
|
|
92
|
+
if (theme === "bui") {
|
|
93
|
+
const renderWorkspacePicker = () => {
|
|
94
|
+
if (host !== "bitbucket.org") return null;
|
|
95
|
+
if (allowedOwners?.length) {
|
|
96
|
+
const ownerItems2 = allowedOwners.map((i) => ({ label: i, value: i }));
|
|
97
|
+
return /* @__PURE__ */ jsx(
|
|
98
|
+
Select$1,
|
|
99
|
+
{
|
|
100
|
+
className: overrides.select,
|
|
101
|
+
label: t("fields.bitbucketRepoPicker.workspaces.title"),
|
|
102
|
+
description: t("fields.bitbucketRepoPicker.workspaces.description"),
|
|
103
|
+
isDisabled: isDisabled || allowedOwners.length === 1,
|
|
104
|
+
isInvalid: rawErrors?.length > 0 && !workspace,
|
|
105
|
+
selectedKey: workspace ?? null,
|
|
106
|
+
onSelectionChange: (key) => {
|
|
107
|
+
if (key !== null) onChange({ workspace: String(key) });
|
|
108
|
+
},
|
|
109
|
+
options: ownerItems2,
|
|
110
|
+
isRequired: true
|
|
111
|
+
}
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
const workspaceOptions = availableWorkspaces.map((w) => ({
|
|
115
|
+
label: w,
|
|
116
|
+
value: w
|
|
117
|
+
}));
|
|
118
|
+
return /* @__PURE__ */ jsx(
|
|
119
|
+
Autocomplete,
|
|
120
|
+
{
|
|
121
|
+
label: t("fields.bitbucketRepoPicker.workspaces.inputTitle"),
|
|
122
|
+
description: t("fields.bitbucketRepoPicker.workspaces.description"),
|
|
123
|
+
inputValue: workspace ?? "",
|
|
124
|
+
onInputChange: (value) => onChange({ workspace: value }),
|
|
125
|
+
onSelectionChange: (key) => {
|
|
126
|
+
if (key !== null) {
|
|
127
|
+
onChange({ workspace: String(key) });
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
options: workspaceOptions,
|
|
131
|
+
isDisabled,
|
|
132
|
+
isRequired: true,
|
|
133
|
+
isInvalid: rawErrors?.length > 0 && !workspace
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
};
|
|
137
|
+
const renderProjectPicker = () => {
|
|
138
|
+
if (allowedProjects?.length) {
|
|
139
|
+
const projectItems2 = allowedProjects.map((i) => ({ label: i, value: i }));
|
|
140
|
+
return /* @__PURE__ */ jsx(
|
|
141
|
+
Select$1,
|
|
142
|
+
{
|
|
143
|
+
className: overrides.select,
|
|
144
|
+
label: t("fields.bitbucketRepoPicker.project.title"),
|
|
145
|
+
description: t("fields.bitbucketRepoPicker.project.description"),
|
|
146
|
+
isDisabled: isDisabled || allowedProjects.length === 1,
|
|
147
|
+
isInvalid: rawErrors?.length > 0 && !project,
|
|
148
|
+
selectedKey: project ?? null,
|
|
149
|
+
onSelectionChange: (key) => {
|
|
150
|
+
if (key !== null) onChange({ project: String(key) });
|
|
151
|
+
},
|
|
152
|
+
options: projectItems2,
|
|
153
|
+
isRequired: true
|
|
154
|
+
}
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
const projectOptions = availableProjects.map((p) => ({
|
|
158
|
+
label: p,
|
|
159
|
+
value: p
|
|
160
|
+
}));
|
|
161
|
+
return /* @__PURE__ */ jsx(
|
|
162
|
+
Autocomplete,
|
|
163
|
+
{
|
|
164
|
+
label: t("fields.bitbucketRepoPicker.project.inputTitle"),
|
|
165
|
+
description: t("fields.bitbucketRepoPicker.project.description"),
|
|
166
|
+
inputValue: project ?? "",
|
|
167
|
+
onInputChange: (value) => onChange({ project: value }),
|
|
168
|
+
onSelectionChange: (key) => {
|
|
169
|
+
if (key !== null) {
|
|
170
|
+
onChange({ project: String(key) });
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
options: projectOptions,
|
|
174
|
+
isDisabled,
|
|
175
|
+
isRequired: true,
|
|
176
|
+
isInvalid: rawErrors?.length > 0 && !project
|
|
177
|
+
}
|
|
178
|
+
);
|
|
179
|
+
};
|
|
180
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
181
|
+
renderWorkspacePicker(),
|
|
182
|
+
renderProjectPicker()
|
|
183
|
+
] });
|
|
184
|
+
}
|
|
185
|
+
const ownerItems = allowedOwners ? allowedOwners?.map((i) => ({ label: i, value: i })) : [];
|
|
186
|
+
const projectItems = allowedProjects ? allowedProjects?.map((i) => ({ label: i, value: i })) : [];
|
|
91
187
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
92
188
|
host === "bitbucket.org" && /* @__PURE__ */ jsxs(
|
|
93
189
|
FormControl,
|
|
@@ -107,7 +203,7 @@ const BitbucketRepoPicker = (props) => {
|
|
|
107
203
|
items: ownerItems
|
|
108
204
|
}
|
|
109
205
|
) : /* @__PURE__ */ jsx(
|
|
110
|
-
|
|
206
|
+
MuiAutocomplete,
|
|
111
207
|
{
|
|
112
208
|
value: workspace,
|
|
113
209
|
onChange: (_, newValue) => {
|
|
@@ -115,7 +211,7 @@ const BitbucketRepoPicker = (props) => {
|
|
|
115
211
|
},
|
|
116
212
|
options: availableWorkspaces,
|
|
117
213
|
renderInput: (params) => /* @__PURE__ */ jsx(
|
|
118
|
-
|
|
214
|
+
MuiTextField,
|
|
119
215
|
{
|
|
120
216
|
...params,
|
|
121
217
|
label: t("fields.bitbucketRepoPicker.workspaces.inputTitle"),
|
|
@@ -150,7 +246,7 @@ const BitbucketRepoPicker = (props) => {
|
|
|
150
246
|
items: projectItems
|
|
151
247
|
}
|
|
152
248
|
) : /* @__PURE__ */ jsx(
|
|
153
|
-
|
|
249
|
+
MuiAutocomplete,
|
|
154
250
|
{
|
|
155
251
|
value: project,
|
|
156
252
|
onChange: (_, newValue) => {
|
|
@@ -159,7 +255,7 @@ const BitbucketRepoPicker = (props) => {
|
|
|
159
255
|
options: availableProjects,
|
|
160
256
|
disabled: isDisabled,
|
|
161
257
|
renderInput: (params) => /* @__PURE__ */ jsx(
|
|
162
|
-
|
|
258
|
+
MuiTextField,
|
|
163
259
|
{
|
|
164
260
|
...params,
|
|
165
261
|
label: t("fields.bitbucketRepoPicker.project.inputTitle"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitbucketRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Select, SelectItem } from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport TextField from '@material-ui/core/TextField';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport { useCallback, useEffect, useState } from 'react';\nimport useDebounce from 'react-use/esm/useDebounce';\nimport { scaffolderTranslationRef } from '../../../translation';\nimport { BaseRepoUrlPickerProps } from './types';\n\n/**\n * The underlying component that is rendered in the form for the `BitbucketRepoPicker`\n * field extension.\n *\n * @public\n * @param allowedOwners - Allowed workspaces for the Bitbucket cloud repository\n * @param allowedProjects - Allowed projects for the Bitbucket cloud repository\n *\n */\nexport const BitbucketRepoPicker = (\n props: BaseRepoUrlPickerProps<{\n allowedOwners?: string[];\n allowedProjects?: string[];\n accessToken?: string;\n }>,\n) => {\n const {\n allowedOwners = [],\n allowedProjects = [],\n onChange,\n rawErrors,\n state,\n accessToken,\n isDisabled,\n } = props;\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const { host, workspace, project } = state;\n const ownerItems: SelectItem[] = allowedOwners\n ? allowedOwners?.map(i => ({ label: i, value: i }))\n : [];\n const projectItems: SelectItem[] = allowedProjects\n ? allowedProjects?.map(i => ({ label: i, value: i }))\n : [];\n\n useEffect(() => {\n if (host === 'bitbucket.org' && allowedOwners.length) {\n onChange({ workspace: allowedOwners[0] });\n }\n }, [allowedOwners, host, onChange]);\n\n const scaffolderApi = useApi(scaffolderApiRef);\n\n const [availableWorkspaces, setAvailableWorkspaces] = useState<string[]>([]);\n const [availableProjects, setAvailableProjects] = useState<string[]>([]);\n\n // Update available workspaces when client is available\n const updateAvailableWorkspaces = useCallback(() => {\n if (\n !scaffolderApi.autocomplete ||\n !accessToken ||\n host !== 'bitbucket.org'\n ) {\n setAvailableWorkspaces([]);\n return;\n }\n\n scaffolderApi\n .autocomplete({\n context: {},\n token: accessToken,\n resource: 'workspaces',\n provider: 'bitbucket-cloud',\n })\n .then(({ results }) => {\n setAvailableWorkspaces(results.map(r => r.id));\n })\n .catch(() => {\n setAvailableWorkspaces([]);\n });\n }, [scaffolderApi, accessToken, host]);\n\n useDebounce(updateAvailableWorkspaces, 500, [updateAvailableWorkspaces]);\n\n // Update available projects when client is available and workspace changes\n const updateAvailableProjects = useCallback(() => {\n if (\n !scaffolderApi.autocomplete ||\n !accessToken ||\n host !== 'bitbucket.org' ||\n !workspace\n ) {\n setAvailableProjects([]);\n return;\n }\n\n scaffolderApi\n .autocomplete({\n token: accessToken,\n resource: 'projects',\n context: { workspace },\n provider: 'bitbucket-cloud',\n })\n .then(({ results }) => {\n setAvailableProjects(results.map(r => r.id));\n })\n .catch(() => {\n setAvailableProjects([]);\n });\n }, [scaffolderApi, accessToken, host, workspace]);\n\n useDebounce(updateAvailableProjects, 500, [updateAvailableProjects]);\n\n // Update available repositories when client is available and workspace or project changes\n const updateAvailableRepositories = useCallback(() => {\n if (\n !scaffolderApi.autocomplete ||\n !accessToken ||\n host !== 'bitbucket.org' ||\n !workspace ||\n !project\n ) {\n onChange({ availableRepos: [] });\n return;\n }\n\n scaffolderApi\n .autocomplete({\n token: accessToken,\n resource: 'repositories',\n context: { workspace, project },\n provider: 'bitbucket-cloud',\n })\n .then(({ results }) => {\n onChange({\n availableRepos: results.map(r => {\n return { name: r.id };\n }),\n });\n })\n .catch(() => {\n onChange({ availableRepos: [] });\n });\n }, [scaffolderApi, accessToken, host, workspace, project, onChange]);\n\n useDebounce(updateAvailableRepositories, 500, [updateAvailableRepositories]);\n\n return (\n <>\n {host === 'bitbucket.org' && (\n <FormControl\n margin=\"normal\"\n required\n error={rawErrors?.length > 0 && !workspace}\n >\n {allowedOwners?.length ? (\n <Select\n native\n label={t('fields.bitbucketRepoPicker.workspaces.title')}\n onChange={s =>\n onChange({ workspace: String(Array.isArray(s) ? s[0] : s) })\n }\n disabled={isDisabled || allowedOwners.length === 1}\n selected={workspace}\n items={ownerItems}\n />\n ) : (\n <Autocomplete\n value={workspace}\n onChange={(_, newValue) => {\n onChange({ workspace: newValue || '' });\n }}\n options={availableWorkspaces}\n renderInput={params => (\n <TextField\n {...params}\n label={t('fields.bitbucketRepoPicker.workspaces.inputTitle')}\n disabled={isDisabled}\n required\n />\n )}\n disabled={isDisabled}\n freeSolo\n autoSelect\n />\n )}\n <FormHelperText>\n {t('fields.bitbucketRepoPicker.workspaces.description')}\n </FormHelperText>\n </FormControl>\n )}\n <FormControl\n margin=\"normal\"\n required\n error={rawErrors?.length > 0 && !project}\n >\n {allowedProjects?.length ? (\n <Select\n native\n label={t('fields.bitbucketRepoPicker.project.title')}\n onChange={s =>\n onChange({ project: String(Array.isArray(s) ? s[0] : s) })\n }\n disabled={isDisabled || allowedProjects.length === 1}\n selected={project}\n items={projectItems}\n />\n ) : (\n <Autocomplete\n value={project}\n onChange={(_, newValue) => {\n onChange({ project: newValue || '' });\n }}\n options={availableProjects}\n disabled={isDisabled}\n renderInput={params => (\n <TextField\n {...params}\n label={t('fields.bitbucketRepoPicker.project.inputTitle')}\n disabled={isDisabled}\n required\n />\n )}\n freeSolo\n autoSelect\n />\n )}\n <FormHelperText>\n {t('fields.bitbucketRepoPicker.project.description')}\n </FormHelperText>\n </FormControl>\n </>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BitbucketRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Select as MuiSelect, SelectItem } from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport MuiTextField from '@material-ui/core/TextField';\nimport MuiAutocomplete from '@material-ui/lab/Autocomplete';\nimport { useCallback, useEffect, useState } from 'react';\nimport useDebounce from 'react-use/esm/useDebounce';\nimport { scaffolderTranslationRef } from '../../../translation';\nimport { BaseRepoUrlPickerProps } from './types';\nimport { useScaffolderTheme } from '@backstage/plugin-scaffolder-react/alpha';\nimport { Select as BuiSelect } from '@backstage/ui';\nimport { Autocomplete as BuiAutocomplete } from '../Autocomplete';\nimport overrides from '../scaffolderFieldOverrides.module.css';\nimport type { Key } from 'react-aria-components';\n\n/**\n * The underlying component that is rendered in the form for the `BitbucketRepoPicker`\n * field extension.\n *\n * @public\n * @param allowedOwners - Allowed workspaces for the Bitbucket cloud repository\n * @param allowedProjects - Allowed projects for the Bitbucket cloud repository\n *\n */\nexport const BitbucketRepoPicker = (\n props: BaseRepoUrlPickerProps<{\n allowedOwners?: string[];\n allowedProjects?: string[];\n accessToken?: string;\n }>,\n) => {\n const theme = useScaffolderTheme();\n const {\n allowedOwners = [],\n allowedProjects = [],\n onChange,\n rawErrors,\n state,\n accessToken,\n isDisabled,\n } = props;\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const { host, workspace, project } = state;\n\n useEffect(() => {\n if (host === 'bitbucket.org' && allowedOwners.length) {\n onChange({ workspace: allowedOwners[0] });\n }\n }, [allowedOwners, host, onChange]);\n\n const scaffolderApi = useApi(scaffolderApiRef);\n\n const [availableWorkspaces, setAvailableWorkspaces] = useState<string[]>([]);\n const [availableProjects, setAvailableProjects] = useState<string[]>([]);\n\n // Update available workspaces when client is available\n const updateAvailableWorkspaces = useCallback(() => {\n if (\n !scaffolderApi.autocomplete ||\n !accessToken ||\n host !== 'bitbucket.org'\n ) {\n setAvailableWorkspaces([]);\n return;\n }\n\n scaffolderApi\n .autocomplete({\n context: {},\n token: accessToken,\n resource: 'workspaces',\n provider: 'bitbucket-cloud',\n })\n .then(({ results }) => {\n setAvailableWorkspaces(results.map(r => r.id));\n })\n .catch(() => {\n setAvailableWorkspaces([]);\n });\n }, [scaffolderApi, accessToken, host]);\n\n useDebounce(updateAvailableWorkspaces, 500, [updateAvailableWorkspaces]);\n\n // Update available projects when client is available and workspace changes\n const updateAvailableProjects = useCallback(() => {\n if (\n !scaffolderApi.autocomplete ||\n !accessToken ||\n host !== 'bitbucket.org' ||\n !workspace\n ) {\n setAvailableProjects([]);\n return;\n }\n\n scaffolderApi\n .autocomplete({\n token: accessToken,\n resource: 'projects',\n context: { workspace },\n provider: 'bitbucket-cloud',\n })\n .then(({ results }) => {\n setAvailableProjects(results.map(r => r.id));\n })\n .catch(() => {\n setAvailableProjects([]);\n });\n }, [scaffolderApi, accessToken, host, workspace]);\n\n useDebounce(updateAvailableProjects, 500, [updateAvailableProjects]);\n\n // Update available repositories when client is available and workspace or project changes\n const updateAvailableRepositories = useCallback(() => {\n if (\n !scaffolderApi.autocomplete ||\n !accessToken ||\n host !== 'bitbucket.org' ||\n !workspace ||\n !project\n ) {\n onChange({ availableRepos: [] });\n return;\n }\n\n scaffolderApi\n .autocomplete({\n token: accessToken,\n resource: 'repositories',\n context: { workspace, project },\n provider: 'bitbucket-cloud',\n })\n .then(({ results }) => {\n onChange({\n availableRepos: results.map(r => ({ name: r.id })),\n });\n })\n .catch(() => {\n onChange({ availableRepos: [] });\n });\n }, [scaffolderApi, accessToken, host, workspace, project, onChange]);\n\n useDebounce(updateAvailableRepositories, 500, [updateAvailableRepositories]);\n\n if (theme === 'bui') {\n const renderWorkspacePicker = () => {\n if (host !== 'bitbucket.org') return null;\n\n if (allowedOwners?.length) {\n const ownerItems = allowedOwners.map(i => ({ label: i, value: i }));\n\n return (\n <BuiSelect\n className={overrides.select}\n label={t('fields.bitbucketRepoPicker.workspaces.title')}\n description={t('fields.bitbucketRepoPicker.workspaces.description')}\n isDisabled={isDisabled || allowedOwners.length === 1}\n isInvalid={rawErrors?.length > 0 && !workspace}\n selectedKey={workspace ?? null}\n onSelectionChange={(key: Key | null) => {\n if (key !== null) onChange({ workspace: String(key) });\n }}\n options={ownerItems}\n isRequired\n />\n );\n }\n\n const workspaceOptions = availableWorkspaces.map(w => ({\n label: w,\n value: w,\n }));\n\n return (\n <BuiAutocomplete\n label={t('fields.bitbucketRepoPicker.workspaces.inputTitle')}\n description={t('fields.bitbucketRepoPicker.workspaces.description')}\n inputValue={workspace ?? ''}\n onInputChange={value => onChange({ workspace: value })}\n onSelectionChange={(key: Key | null) => {\n if (key !== null) {\n onChange({ workspace: String(key) });\n }\n }}\n options={workspaceOptions}\n isDisabled={isDisabled}\n isRequired\n isInvalid={rawErrors?.length > 0 && !workspace}\n />\n );\n };\n\n const renderProjectPicker = () => {\n if (allowedProjects?.length) {\n const projectItems = allowedProjects.map(i => ({ label: i, value: i }));\n\n return (\n <BuiSelect\n className={overrides.select}\n label={t('fields.bitbucketRepoPicker.project.title')}\n description={t('fields.bitbucketRepoPicker.project.description')}\n isDisabled={isDisabled || allowedProjects.length === 1}\n isInvalid={rawErrors?.length > 0 && !project}\n selectedKey={project ?? null}\n onSelectionChange={(key: Key | null) => {\n if (key !== null) onChange({ project: String(key) });\n }}\n options={projectItems}\n isRequired\n />\n );\n }\n\n const projectOptions = availableProjects.map(p => ({\n label: p,\n value: p,\n }));\n\n return (\n <BuiAutocomplete\n label={t('fields.bitbucketRepoPicker.project.inputTitle')}\n description={t('fields.bitbucketRepoPicker.project.description')}\n inputValue={project ?? ''}\n onInputChange={value => onChange({ project: value })}\n onSelectionChange={(key: Key | null) => {\n if (key !== null) {\n onChange({ project: String(key) });\n }\n }}\n options={projectOptions}\n isDisabled={isDisabled}\n isRequired\n isInvalid={rawErrors?.length > 0 && !project}\n />\n );\n };\n\n return (\n <>\n {renderWorkspacePicker()}\n {renderProjectPicker()}\n </>\n );\n }\n\n const ownerItems: SelectItem[] = allowedOwners\n ? allowedOwners?.map(i => ({ label: i, value: i }))\n : [];\n const projectItems: SelectItem[] = allowedProjects\n ? allowedProjects?.map(i => ({ label: i, value: i }))\n : [];\n\n return (\n <>\n {host === 'bitbucket.org' && (\n <FormControl\n margin=\"normal\"\n required\n error={rawErrors?.length > 0 && !workspace}\n >\n {allowedOwners?.length ? (\n <MuiSelect\n native\n label={t('fields.bitbucketRepoPicker.workspaces.title')}\n onChange={s =>\n onChange({ workspace: String(Array.isArray(s) ? s[0] : s) })\n }\n disabled={isDisabled || allowedOwners.length === 1}\n selected={workspace}\n items={ownerItems}\n />\n ) : (\n <MuiAutocomplete\n value={workspace}\n onChange={(_, newValue) => {\n onChange({ workspace: newValue || '' });\n }}\n options={availableWorkspaces}\n renderInput={params => (\n <MuiTextField\n {...params}\n label={t('fields.bitbucketRepoPicker.workspaces.inputTitle')}\n disabled={isDisabled}\n required\n />\n )}\n disabled={isDisabled}\n freeSolo\n autoSelect\n />\n )}\n <FormHelperText>\n {t('fields.bitbucketRepoPicker.workspaces.description')}\n </FormHelperText>\n </FormControl>\n )}\n <FormControl\n margin=\"normal\"\n required\n error={rawErrors?.length > 0 && !project}\n >\n {allowedProjects?.length ? (\n <MuiSelect\n native\n label={t('fields.bitbucketRepoPicker.project.title')}\n onChange={s =>\n onChange({ project: String(Array.isArray(s) ? s[0] : s) })\n }\n disabled={isDisabled || allowedProjects.length === 1}\n selected={project}\n items={projectItems}\n />\n ) : (\n <MuiAutocomplete\n value={project}\n onChange={(_, newValue) => {\n onChange({ project: newValue || '' });\n }}\n options={availableProjects}\n disabled={isDisabled}\n renderInput={params => (\n <MuiTextField\n {...params}\n label={t('fields.bitbucketRepoPicker.project.inputTitle')}\n disabled={isDisabled}\n required\n />\n )}\n freeSolo\n autoSelect\n />\n )}\n <FormHelperText>\n {t('fields.bitbucketRepoPicker.project.description')}\n </FormHelperText>\n </FormControl>\n </>\n );\n};\n"],"names":["ownerItems","BuiSelect","BuiAutocomplete","projectItems","MuiSelect"],"mappings":"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"}
|
|
@@ -1,16 +1,46 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import FormControl from '@material-ui/core/FormControl';
|
|
3
|
-
import
|
|
3
|
+
import MuiTextField from '@material-ui/core/TextField';
|
|
4
4
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
5
5
|
import { scaffolderTranslationRef } from '../../../translation.esm.js';
|
|
6
|
+
import { useScaffolderTheme } from '@backstage/plugin-scaffolder-react/alpha';
|
|
7
|
+
import { TextField } from '@backstage/ui';
|
|
6
8
|
|
|
7
9
|
const GerritRepoPicker = (props) => {
|
|
10
|
+
const theme = useScaffolderTheme();
|
|
8
11
|
const { onChange, rawErrors, state, isDisabled } = props;
|
|
9
12
|
const { t } = useTranslationRef(scaffolderTranslationRef);
|
|
10
13
|
const { workspace, owner } = state;
|
|
14
|
+
if (theme === "bui") {
|
|
15
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16
|
+
/* @__PURE__ */ jsx(
|
|
17
|
+
TextField,
|
|
18
|
+
{
|
|
19
|
+
label: t("fields.gerritRepoPicker.owner.title"),
|
|
20
|
+
description: t("fields.gerritRepoPicker.owner.description"),
|
|
21
|
+
onChange: (value) => onChange({ owner: value }),
|
|
22
|
+
isDisabled,
|
|
23
|
+
value: owner ?? "",
|
|
24
|
+
isInvalid: rawErrors?.length > 0 && !owner
|
|
25
|
+
}
|
|
26
|
+
),
|
|
27
|
+
/* @__PURE__ */ jsx(
|
|
28
|
+
TextField,
|
|
29
|
+
{
|
|
30
|
+
label: t("fields.gerritRepoPicker.parent.title"),
|
|
31
|
+
description: t("fields.gerritRepoPicker.parent.description"),
|
|
32
|
+
onChange: (value) => onChange({ workspace: value }),
|
|
33
|
+
isDisabled,
|
|
34
|
+
value: workspace ?? "",
|
|
35
|
+
isInvalid: rawErrors?.length > 0 && !workspace,
|
|
36
|
+
isRequired: true
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
] });
|
|
40
|
+
}
|
|
11
41
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
12
42
|
/* @__PURE__ */ jsx(FormControl, { margin: "normal", error: rawErrors?.length > 0 && !workspace, children: /* @__PURE__ */ jsx(
|
|
13
|
-
|
|
43
|
+
MuiTextField,
|
|
14
44
|
{
|
|
15
45
|
id: "ownerInput",
|
|
16
46
|
label: t("fields.gerritRepoPicker.owner.title"),
|
|
@@ -27,7 +57,7 @@ const GerritRepoPicker = (props) => {
|
|
|
27
57
|
required: true,
|
|
28
58
|
error: rawErrors?.length > 0 && !workspace,
|
|
29
59
|
children: /* @__PURE__ */ jsx(
|
|
30
|
-
|
|
60
|
+
MuiTextField,
|
|
31
61
|
{
|
|
32
62
|
id: "parentInput",
|
|
33
63
|
label: t("fields.gerritRepoPicker.parent.title"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GerritRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/GerritRepoPicker.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport FormControl from '@material-ui/core/FormControl';\nimport
|
|
1
|
+
{"version":3,"file":"GerritRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/GerritRepoPicker.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport FormControl from '@material-ui/core/FormControl';\nimport MuiTextField from '@material-ui/core/TextField';\nimport { BaseRepoUrlPickerProps } from './types';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderTranslationRef } from '../../../translation';\nimport { useScaffolderTheme } from '@backstage/plugin-scaffolder-react/alpha';\nimport { TextField as BuiTextField } from '@backstage/ui';\n\nexport const GerritRepoPicker = (props: BaseRepoUrlPickerProps) => {\n const theme = useScaffolderTheme();\n const { onChange, rawErrors, state, isDisabled } = props;\n const { t } = useTranslationRef(scaffolderTranslationRef);\n const { workspace, owner } = state;\n\n if (theme === 'bui') {\n return (\n <>\n <BuiTextField\n label={t('fields.gerritRepoPicker.owner.title')}\n description={t('fields.gerritRepoPicker.owner.description')}\n onChange={value => onChange({ owner: value })}\n isDisabled={isDisabled}\n value={owner ?? ''}\n isInvalid={rawErrors?.length > 0 && !owner}\n />\n <BuiTextField\n label={t('fields.gerritRepoPicker.parent.title')}\n description={t('fields.gerritRepoPicker.parent.description')}\n onChange={value => onChange({ workspace: value })}\n isDisabled={isDisabled}\n value={workspace ?? ''}\n isInvalid={rawErrors?.length > 0 && !workspace}\n isRequired\n />\n </>\n );\n }\n\n return (\n <>\n <FormControl margin=\"normal\" error={rawErrors?.length > 0 && !workspace}>\n <MuiTextField\n id=\"ownerInput\"\n label={t('fields.gerritRepoPicker.owner.title')}\n onChange={e => onChange({ owner: e.target.value })}\n helperText={t('fields.gerritRepoPicker.owner.description')}\n disabled={isDisabled}\n value={owner}\n />\n </FormControl>\n <FormControl\n margin=\"normal\"\n required\n error={rawErrors?.length > 0 && !workspace}\n >\n <MuiTextField\n id=\"parentInput\"\n label={t('fields.gerritRepoPicker.parent.title')}\n onChange={e => onChange({ workspace: e.target.value })}\n disabled={isDisabled}\n value={workspace}\n helperText={t('fields.gerritRepoPicker.parent.description')}\n />\n </FormControl>\n </>\n );\n};\n"],"names":["BuiTextField"],"mappings":";;;;;;;;AAuBO,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAkC;AACjE,EAAA,MAAM,QAAQ,kBAAA,EAAmB;AACjC,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,YAAW,GAAI,KAAA;AACnD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,MAAM,EAAE,SAAA,EAAW,KAAA,EAAM,GAAI,KAAA;AAE7B,EAAA,IAAI,UAAU,KAAA,EAAO;AACnB,IAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAACA,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,qCAAqC,CAAA;AAAA,UAC9C,WAAA,EAAa,EAAE,2CAA2C,CAAA;AAAA,UAC1D,UAAU,CAAA,KAAA,KAAS,QAAA,CAAS,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,UAC5C,UAAA;AAAA,UACA,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,SAAA,EAAW,SAAA,EAAW,MAAA,GAAS,CAAA,IAAK,CAAC;AAAA;AAAA,OACvC;AAAA,sBACA,GAAA;AAAA,QAACA,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,sCAAsC,CAAA;AAAA,UAC/C,WAAA,EAAa,EAAE,4CAA4C,CAAA;AAAA,UAC3D,UAAU,CAAA,KAAA,KAAS,QAAA,CAAS,EAAE,SAAA,EAAW,OAAO,CAAA;AAAA,UAChD,UAAA;AAAA,UACA,OAAO,SAAA,IAAa,EAAA;AAAA,UACpB,SAAA,EAAW,SAAA,EAAW,MAAA,GAAS,CAAA,IAAK,CAAC,SAAA;AAAA,UACrC,UAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,QAAO,QAAA,EAAS,KAAA,EAAO,WAAW,MAAA,GAAS,CAAA,IAAK,CAAC,SAAA,EAC5D,QAAA,kBAAA,GAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAG,YAAA;AAAA,QACH,KAAA,EAAO,EAAE,qCAAqC,CAAA;AAAA,QAC9C,QAAA,EAAU,OAAK,QAAA,CAAS,EAAE,OAAO,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AAAA,QACjD,UAAA,EAAY,EAAE,2CAA2C,CAAA;AAAA,QACzD,QAAA,EAAU,UAAA;AAAA,QACV,KAAA,EAAO;AAAA;AAAA,KACT,EACF,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAO,QAAA;AAAA,QACP,QAAA,EAAQ,IAAA;AAAA,QACR,KAAA,EAAO,SAAA,EAAW,MAAA,GAAS,CAAA,IAAK,CAAC,SAAA;AAAA,QAEjC,QAAA,kBAAA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAG,aAAA;AAAA,YACH,KAAA,EAAO,EAAE,sCAAsC,CAAA;AAAA,YAC/C,QAAA,EAAU,OAAK,QAAA,CAAS,EAAE,WAAW,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AAAA,YACrD,QAAA,EAAU,UAAA;AAAA,YACV,KAAA,EAAO,SAAA;AAAA,YACP,UAAA,EAAY,EAAE,4CAA4C;AAAA;AAAA;AAC5D;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1,16 +1,53 @@
|
|
|
1
1
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import FormControl from '@material-ui/core/FormControl';
|
|
3
3
|
import FormHelperText from '@material-ui/core/FormHelperText';
|
|
4
|
-
import
|
|
5
|
-
import { Select } from '@backstage/core-components';
|
|
4
|
+
import MuiTextField from '@material-ui/core/TextField';
|
|
5
|
+
import { Select as Select$1 } from '@backstage/core-components';
|
|
6
6
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
7
7
|
import { scaffolderTranslationRef } from '../../../translation.esm.js';
|
|
8
|
+
import { useScaffolderTheme } from '@backstage/plugin-scaffolder-react/alpha';
|
|
9
|
+
import { Select, TextField } from '@backstage/ui';
|
|
10
|
+
import overrides from '../scaffolderFieldOverrides.module.css.esm.js';
|
|
8
11
|
|
|
9
12
|
const GiteaRepoPicker = (props) => {
|
|
13
|
+
const theme = useScaffolderTheme();
|
|
10
14
|
const { allowedOwners = [], state, onChange, rawErrors, isDisabled } = props;
|
|
11
15
|
const { t } = useTranslationRef(scaffolderTranslationRef);
|
|
12
|
-
const ownerItems = allowedOwners ? allowedOwners.map((i) => ({ label: i, value: i })) : [{ label: "Loading...", value: "loading" }];
|
|
13
16
|
const { owner } = state;
|
|
17
|
+
if (theme === "bui") {
|
|
18
|
+
if (allowedOwners?.length) {
|
|
19
|
+
const ownerItems2 = allowedOwners.map((i) => ({ label: i, value: i }));
|
|
20
|
+
return /* @__PURE__ */ jsx(
|
|
21
|
+
Select,
|
|
22
|
+
{
|
|
23
|
+
className: overrides.select,
|
|
24
|
+
label: t("fields.giteaRepoPicker.owner.title"),
|
|
25
|
+
description: t("fields.giteaRepoPicker.owner.description"),
|
|
26
|
+
isDisabled: isDisabled || allowedOwners.length === 1,
|
|
27
|
+
isInvalid: rawErrors?.length > 0 && !owner,
|
|
28
|
+
selectedKey: owner ?? null,
|
|
29
|
+
onSelectionChange: (key) => {
|
|
30
|
+
if (key !== null) onChange({ owner: String(key) });
|
|
31
|
+
},
|
|
32
|
+
options: ownerItems2,
|
|
33
|
+
isRequired: true
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
return /* @__PURE__ */ jsx(
|
|
38
|
+
TextField,
|
|
39
|
+
{
|
|
40
|
+
label: t("fields.giteaRepoPicker.owner.inputTitle"),
|
|
41
|
+
description: t("fields.giteaRepoPicker.owner.description"),
|
|
42
|
+
onChange: (value) => onChange({ owner: value }),
|
|
43
|
+
isDisabled,
|
|
44
|
+
value: owner ?? "",
|
|
45
|
+
isInvalid: rawErrors?.length > 0 && !owner,
|
|
46
|
+
isRequired: true
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
const ownerItems = allowedOwners ? allowedOwners.map((i) => ({ label: i, value: i })) : [{ label: "Loading...", value: "loading" }];
|
|
14
51
|
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
|
|
15
52
|
FormControl,
|
|
16
53
|
{
|
|
@@ -19,7 +56,7 @@ const GiteaRepoPicker = (props) => {
|
|
|
19
56
|
error: rawErrors?.length > 0 && !owner,
|
|
20
57
|
children: allowedOwners?.length ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
21
58
|
/* @__PURE__ */ jsx(
|
|
22
|
-
Select,
|
|
59
|
+
Select$1,
|
|
23
60
|
{
|
|
24
61
|
native: true,
|
|
25
62
|
label: t("fields.giteaRepoPicker.owner.title"),
|
|
@@ -35,7 +72,7 @@ const GiteaRepoPicker = (props) => {
|
|
|
35
72
|
),
|
|
36
73
|
/* @__PURE__ */ jsx(FormHelperText, { children: t("fields.giteaRepoPicker.owner.description") })
|
|
37
74
|
] }) : /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
|
|
38
|
-
|
|
75
|
+
MuiTextField,
|
|
39
76
|
{
|
|
40
77
|
id: "ownerInput",
|
|
41
78
|
label: t("fields.giteaRepoPicker.owner.inputTitle"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GiteaRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/GiteaRepoPicker.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport
|
|
1
|
+
{"version":3,"file":"GiteaRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/GiteaRepoPicker.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport MuiTextField from '@material-ui/core/TextField';\nimport { Select as MuiSelect, SelectItem } from '@backstage/core-components';\nimport { BaseRepoUrlPickerProps } from './types';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderTranslationRef } from '../../../translation';\nimport { useScaffolderTheme } from '@backstage/plugin-scaffolder-react/alpha';\nimport { TextField as BuiTextField, Select as BuiSelect } from '@backstage/ui';\nimport overrides from '../scaffolderFieldOverrides.module.css';\nimport type { Key } from 'react-aria-components';\n\nexport const GiteaRepoPicker = (\n props: BaseRepoUrlPickerProps<{\n allowedOwners?: string[];\n allowedRepos?: string[];\n }>,\n) => {\n const theme = useScaffolderTheme();\n const { allowedOwners = [], state, onChange, rawErrors, isDisabled } = props;\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const { owner } = state;\n\n if (theme === 'bui') {\n if (allowedOwners?.length) {\n const ownerItems = allowedOwners.map(i => ({ label: i, value: i }));\n\n return (\n <BuiSelect\n className={overrides.select}\n label={t('fields.giteaRepoPicker.owner.title')}\n description={t('fields.giteaRepoPicker.owner.description')}\n isDisabled={isDisabled || allowedOwners.length === 1}\n isInvalid={rawErrors?.length > 0 && !owner}\n selectedKey={owner ?? null}\n onSelectionChange={(key: Key | null) => {\n if (key !== null) onChange({ owner: String(key) });\n }}\n options={ownerItems}\n isRequired\n />\n );\n }\n\n return (\n <BuiTextField\n label={t('fields.giteaRepoPicker.owner.inputTitle')}\n description={t('fields.giteaRepoPicker.owner.description')}\n onChange={value => onChange({ owner: value })}\n isDisabled={isDisabled}\n value={owner ?? ''}\n isInvalid={rawErrors?.length > 0 && !owner}\n isRequired\n />\n );\n }\n\n const ownerItems: SelectItem[] = allowedOwners\n ? allowedOwners.map(i => ({ label: i, value: i }))\n : [{ label: 'Loading...', value: 'loading' }];\n\n return (\n <>\n <FormControl\n margin=\"normal\"\n required\n error={rawErrors?.length > 0 && !owner}\n >\n {allowedOwners?.length ? (\n <>\n <MuiSelect\n native\n label={t('fields.giteaRepoPicker.owner.title')}\n onChange={selected =>\n onChange({\n owner: String(\n Array.isArray(selected) ? selected[0] : selected,\n ),\n })\n }\n disabled={isDisabled || allowedOwners.length === 1}\n selected={owner}\n items={ownerItems}\n />\n <FormHelperText>\n {t('fields.giteaRepoPicker.owner.description')}\n </FormHelperText>\n </>\n ) : (\n <>\n <MuiTextField\n id=\"ownerInput\"\n label={t('fields.giteaRepoPicker.owner.inputTitle')}\n onChange={e => onChange({ owner: e.target.value })}\n helperText={t('fields.giteaRepoPicker.owner.description')}\n disabled={isDisabled}\n value={owner}\n />\n </>\n )}\n </FormControl>\n </>\n );\n};\n"],"names":["ownerItems","BuiSelect","BuiTextField","MuiSelect"],"mappings":"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"}
|
|
@@ -2,18 +2,23 @@ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import { useState, useCallback, useMemo } from 'react';
|
|
3
3
|
import FormControl from '@material-ui/core/FormControl';
|
|
4
4
|
import FormHelperText from '@material-ui/core/FormHelperText';
|
|
5
|
-
import
|
|
6
|
-
import { Select } from '@backstage/core-components';
|
|
5
|
+
import MuiTextField from '@material-ui/core/TextField';
|
|
6
|
+
import { Select as Select$1 } from '@backstage/core-components';
|
|
7
7
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
8
8
|
import { scaffolderTranslationRef } from '../../../translation.esm.js';
|
|
9
9
|
import { useApi } from '@backstage/core-plugin-api';
|
|
10
10
|
import { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';
|
|
11
11
|
import useDebounce from 'react-use/esm/useDebounce';
|
|
12
|
-
import
|
|
12
|
+
import MuiAutocomplete from '@material-ui/lab/Autocomplete';
|
|
13
13
|
import uniq from 'lodash/uniq';
|
|
14
14
|
import map from 'lodash/map';
|
|
15
|
+
import { useScaffolderTheme } from '@backstage/plugin-scaffolder-react/alpha';
|
|
16
|
+
import { Select } from '@backstage/ui';
|
|
17
|
+
import { Autocomplete } from '../Autocomplete/Autocomplete.esm.js';
|
|
18
|
+
import overrides from '../scaffolderFieldOverrides.module.css.esm.js';
|
|
15
19
|
|
|
16
20
|
const GithubRepoPicker = (props) => {
|
|
21
|
+
const theme = useScaffolderTheme();
|
|
17
22
|
const {
|
|
18
23
|
allowedOwners = [],
|
|
19
24
|
rawErrors,
|
|
@@ -23,7 +28,6 @@ const GithubRepoPicker = (props) => {
|
|
|
23
28
|
isDisabled
|
|
24
29
|
} = props;
|
|
25
30
|
const { t } = useTranslationRef(scaffolderTranslationRef);
|
|
26
|
-
const ownerItems = allowedOwners ? allowedOwners.map((i) => ({ label: i, value: i })) : [{ label: "Loading...", value: "loading" }];
|
|
27
31
|
const { host, owner } = state;
|
|
28
32
|
const scaffolderApi = useApi(scaffolderApiRef);
|
|
29
33
|
const [availableRepositoriesWithOwner, setAvailableRepositoriesWithOwner] = useState([]);
|
|
@@ -62,6 +66,47 @@ const GithubRepoPicker = (props) => {
|
|
|
62
66
|
onChange({ availableRepos });
|
|
63
67
|
}, [availableRepositoriesWithOwner, owner, onChange]);
|
|
64
68
|
useDebounce(updateAvailableRepositories, 500, [updateAvailableRepositories]);
|
|
69
|
+
if (theme === "bui") {
|
|
70
|
+
if (allowedOwners?.length) {
|
|
71
|
+
const ownerItems2 = allowedOwners.map((i) => ({ label: i, value: i }));
|
|
72
|
+
return /* @__PURE__ */ jsx(
|
|
73
|
+
Select,
|
|
74
|
+
{
|
|
75
|
+
className: overrides.select,
|
|
76
|
+
label: t("fields.githubRepoPicker.owner.title"),
|
|
77
|
+
description: t("fields.githubRepoPicker.owner.description"),
|
|
78
|
+
isDisabled: isDisabled || allowedOwners.length === 1,
|
|
79
|
+
isInvalid: rawErrors?.length > 0 && !owner,
|
|
80
|
+
selectedKey: owner ?? null,
|
|
81
|
+
onSelectionChange: (key) => {
|
|
82
|
+
if (key !== null) onChange({ owner: String(key) });
|
|
83
|
+
},
|
|
84
|
+
options: ownerItems2,
|
|
85
|
+
isRequired: true
|
|
86
|
+
}
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
const options = availableOwners.map((o) => ({ label: o, value: o }));
|
|
90
|
+
return /* @__PURE__ */ jsx(
|
|
91
|
+
Autocomplete,
|
|
92
|
+
{
|
|
93
|
+
label: t("fields.githubRepoPicker.owner.inputTitle"),
|
|
94
|
+
description: t("fields.githubRepoPicker.owner.description"),
|
|
95
|
+
inputValue: owner ?? "",
|
|
96
|
+
onInputChange: (value) => onChange({ owner: value }),
|
|
97
|
+
onSelectionChange: (key) => {
|
|
98
|
+
if (key !== null) {
|
|
99
|
+
onChange({ owner: String(key) });
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
options,
|
|
103
|
+
isDisabled,
|
|
104
|
+
isRequired: true,
|
|
105
|
+
isInvalid: rawErrors?.length > 0 && !owner
|
|
106
|
+
}
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
const ownerItems = allowedOwners ? allowedOwners.map((i) => ({ label: i, value: i })) : [{ label: "Loading...", value: "loading" }];
|
|
65
110
|
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
|
|
66
111
|
FormControl,
|
|
67
112
|
{
|
|
@@ -70,7 +115,7 @@ const GithubRepoPicker = (props) => {
|
|
|
70
115
|
error: rawErrors?.length > 0 && !owner,
|
|
71
116
|
children: [
|
|
72
117
|
allowedOwners?.length ? /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
|
|
73
|
-
Select,
|
|
118
|
+
Select$1,
|
|
74
119
|
{
|
|
75
120
|
native: true,
|
|
76
121
|
label: t("fields.githubRepoPicker.owner.title"),
|
|
@@ -80,7 +125,7 @@ const GithubRepoPicker = (props) => {
|
|
|
80
125
|
items: ownerItems
|
|
81
126
|
}
|
|
82
127
|
) }) : /* @__PURE__ */ jsx(
|
|
83
|
-
|
|
128
|
+
MuiAutocomplete,
|
|
84
129
|
{
|
|
85
130
|
value: owner,
|
|
86
131
|
onChange: (_, newValue) => {
|
|
@@ -88,7 +133,7 @@ const GithubRepoPicker = (props) => {
|
|
|
88
133
|
},
|
|
89
134
|
options: availableOwners,
|
|
90
135
|
renderInput: (params) => /* @__PURE__ */ jsx(
|
|
91
|
-
|
|
136
|
+
MuiTextField,
|
|
92
137
|
{
|
|
93
138
|
...params,
|
|
94
139
|
label: t("fields.githubRepoPicker.owner.inputTitle"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GithubRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/GithubRepoPicker.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useCallback, useMemo, useState } from 'react';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport TextField from '@material-ui/core/TextField';\nimport { Select, SelectItem } from '@backstage/core-components';\nimport { BaseRepoUrlPickerProps } from './types';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderTranslationRef } from '../../../translation';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';\nimport useDebounce from 'react-use/esm/useDebounce';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport uniq from 'lodash/uniq';\nimport map from 'lodash/map';\n\nexport const GithubRepoPicker = (\n props: BaseRepoUrlPickerProps<{\n allowedOwners?: string[];\n accessToken?: string;\n }>,\n) => {\n const {\n allowedOwners = [],\n rawErrors,\n state,\n onChange,\n accessToken,\n isDisabled,\n } = props;\n const { t } = useTranslationRef(scaffolderTranslationRef);\n const ownerItems: SelectItem[] = allowedOwners\n ? allowedOwners.map(i => ({ label: i, value: i }))\n : [{ label: 'Loading...', value: 'loading' }];\n\n const { host, owner } = state;\n\n const scaffolderApi = useApi(scaffolderApiRef);\n\n const [availableRepositoriesWithOwner, setAvailableRepositoriesWithOwner] =\n useState<{ owner: string; name: string }[]>([]);\n\n // Update available repositories with owner when client is available\n const updateAvailableRepositoriesWithOwner = useCallback(() => {\n if (!scaffolderApi.autocomplete || !accessToken || !host) {\n setAvailableRepositoriesWithOwner([]);\n return;\n }\n\n scaffolderApi\n .autocomplete({\n token: accessToken,\n resource: 'repositoriesWithOwner',\n provider: 'github',\n context: { host },\n })\n .then(({ results }) => {\n setAvailableRepositoriesWithOwner(\n results.map(r => {\n const [rOwner, rName] = r.id.split('/');\n return { owner: rOwner, name: rName };\n }),\n );\n })\n .catch(() => {\n setAvailableRepositoriesWithOwner([]);\n });\n }, [scaffolderApi, accessToken, host]);\n\n useDebounce(updateAvailableRepositoriesWithOwner, 500, [\n updateAvailableRepositoriesWithOwner,\n ]);\n\n // Update available owners when available repositories with owner change\n const availableOwners = useMemo<string[]>(\n () => uniq(map(availableRepositoriesWithOwner, 'owner')),\n [availableRepositoriesWithOwner],\n );\n\n // Update available repositories when available repositories with owner change or when owner changes\n const updateAvailableRepositories = useCallback(() => {\n const availableRepos = availableRepositoriesWithOwner.flatMap(r =>\n r.owner === owner ? [{ name: r.name }] : [],\n );\n\n onChange({ availableRepos });\n }, [availableRepositoriesWithOwner, owner, onChange]);\n\n useDebounce(updateAvailableRepositories, 500, [updateAvailableRepositories]);\n\n return (\n <>\n <FormControl\n margin=\"normal\"\n required\n error={rawErrors?.length > 0 && !owner}\n >\n {allowedOwners?.length ? (\n <>\n <Select\n native\n label={t('fields.githubRepoPicker.owner.title')}\n onChange={s =>\n onChange({ owner: String(Array.isArray(s) ? s[0] : s) })\n }\n disabled={isDisabled || allowedOwners.length === 1}\n selected={owner}\n items={ownerItems}\n />\n </>\n ) : (\n <Autocomplete\n value={owner}\n onChange={(_, newValue) => {\n onChange({ owner: newValue || '' });\n }}\n options={availableOwners}\n renderInput={params => (\n <TextField\n {...params}\n label={t('fields.githubRepoPicker.owner.inputTitle')}\n disabled={isDisabled}\n required\n />\n )}\n freeSolo\n disabled={isDisabled}\n autoSelect\n />\n )}\n <FormHelperText>\n {t('fields.githubRepoPicker.owner.description')}\n </FormHelperText>\n </FormControl>\n </>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GithubRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/GithubRepoPicker.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useCallback, useMemo, useState } from 'react';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport MuiTextField from '@material-ui/core/TextField';\nimport { Select as MuiSelect, SelectItem } from '@backstage/core-components';\nimport { BaseRepoUrlPickerProps } from './types';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderTranslationRef } from '../../../translation';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';\nimport useDebounce from 'react-use/esm/useDebounce';\nimport MuiAutocomplete from '@material-ui/lab/Autocomplete';\nimport uniq from 'lodash/uniq';\nimport map from 'lodash/map';\nimport { useScaffolderTheme } from '@backstage/plugin-scaffolder-react/alpha';\nimport { Select as BuiSelect } from '@backstage/ui';\nimport { Autocomplete as BuiAutocomplete } from '../Autocomplete';\nimport overrides from '../scaffolderFieldOverrides.module.css';\nimport type { Key } from 'react-aria-components';\n\nexport const GithubRepoPicker = (\n props: BaseRepoUrlPickerProps<{\n allowedOwners?: string[];\n accessToken?: string;\n }>,\n) => {\n const theme = useScaffolderTheme();\n const {\n allowedOwners = [],\n rawErrors,\n state,\n onChange,\n accessToken,\n isDisabled,\n } = props;\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const { host, owner } = state;\n\n const scaffolderApi = useApi(scaffolderApiRef);\n\n const [availableRepositoriesWithOwner, setAvailableRepositoriesWithOwner] =\n useState<{ owner: string; name: string }[]>([]);\n\n // Update available repositories with owner when client is available\n const updateAvailableRepositoriesWithOwner = useCallback(() => {\n if (!scaffolderApi.autocomplete || !accessToken || !host) {\n setAvailableRepositoriesWithOwner([]);\n return;\n }\n\n scaffolderApi\n .autocomplete({\n token: accessToken,\n resource: 'repositoriesWithOwner',\n provider: 'github',\n context: { host },\n })\n .then(({ results }) => {\n setAvailableRepositoriesWithOwner(\n results.map(r => {\n const [rOwner, rName] = r.id.split('/');\n return { owner: rOwner, name: rName };\n }),\n );\n })\n .catch(() => {\n setAvailableRepositoriesWithOwner([]);\n });\n }, [scaffolderApi, accessToken, host]);\n\n useDebounce(updateAvailableRepositoriesWithOwner, 500, [\n updateAvailableRepositoriesWithOwner,\n ]);\n\n // Update available owners when available repositories with owner change\n const availableOwners = useMemo<string[]>(\n () => uniq(map(availableRepositoriesWithOwner, 'owner')),\n [availableRepositoriesWithOwner],\n );\n\n // Update available repositories when available repositories with owner change or when owner changes\n const updateAvailableRepositories = useCallback(() => {\n const availableRepos = availableRepositoriesWithOwner.flatMap(r =>\n r.owner === owner ? [{ name: r.name }] : [],\n );\n\n onChange({ availableRepos });\n }, [availableRepositoriesWithOwner, owner, onChange]);\n\n useDebounce(updateAvailableRepositories, 500, [updateAvailableRepositories]);\n\n if (theme === 'bui') {\n if (allowedOwners?.length) {\n const ownerItems = allowedOwners.map(i => ({ label: i, value: i }));\n\n return (\n <BuiSelect\n className={overrides.select}\n label={t('fields.githubRepoPicker.owner.title')}\n description={t('fields.githubRepoPicker.owner.description')}\n isDisabled={isDisabled || allowedOwners.length === 1}\n isInvalid={rawErrors?.length > 0 && !owner}\n selectedKey={owner ?? null}\n onSelectionChange={(key: Key | null) => {\n if (key !== null) onChange({ owner: String(key) });\n }}\n options={ownerItems}\n isRequired\n />\n );\n }\n\n const options = availableOwners.map(o => ({ label: o, value: o }));\n\n return (\n <BuiAutocomplete\n label={t('fields.githubRepoPicker.owner.inputTitle')}\n description={t('fields.githubRepoPicker.owner.description')}\n inputValue={owner ?? ''}\n onInputChange={value => onChange({ owner: value })}\n onSelectionChange={(key: Key | null) => {\n if (key !== null) {\n onChange({ owner: String(key) });\n }\n }}\n options={options}\n isDisabled={isDisabled}\n isRequired\n isInvalid={rawErrors?.length > 0 && !owner}\n />\n );\n }\n\n const ownerItems: SelectItem[] = allowedOwners\n ? allowedOwners.map(i => ({ label: i, value: i }))\n : [{ label: 'Loading...', value: 'loading' }];\n\n return (\n <>\n <FormControl\n margin=\"normal\"\n required\n error={rawErrors?.length > 0 && !owner}\n >\n {allowedOwners?.length ? (\n <>\n <MuiSelect\n native\n label={t('fields.githubRepoPicker.owner.title')}\n onChange={s =>\n onChange({ owner: String(Array.isArray(s) ? s[0] : s) })\n }\n disabled={isDisabled || allowedOwners.length === 1}\n selected={owner}\n items={ownerItems}\n />\n </>\n ) : (\n <MuiAutocomplete\n value={owner}\n onChange={(_, newValue) => {\n onChange({ owner: newValue || '' });\n }}\n options={availableOwners}\n renderInput={params => (\n <MuiTextField\n {...params}\n label={t('fields.githubRepoPicker.owner.inputTitle')}\n disabled={isDisabled}\n required\n />\n )}\n freeSolo\n disabled={isDisabled}\n autoSelect\n />\n )}\n <FormHelperText>\n {t('fields.githubRepoPicker.owner.description')}\n </FormHelperText>\n </FormControl>\n </>\n );\n};\n"],"names":["ownerItems","BuiSelect","BuiAutocomplete","MuiSelect"],"mappings":"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"}
|