@backstage/plugin-scaffolder 1.39.0-next.2 → 1.39.0

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.
Files changed (31) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/alpha/components/TemplateEditorPage/TemplateEditorForm.esm.js +1 -1
  3. package/dist/alpha/components/TemplateEditorPage/TemplateEditorForm.esm.js.map +1 -1
  4. package/dist/alpha/components/TemplatesSubPage.esm.js +16 -2
  5. package/dist/alpha/components/TemplatesSubPage.esm.js.map +1 -1
  6. package/dist/alpha/extensions.esm.js +4 -1
  7. package/dist/alpha/extensions.esm.js.map +1 -1
  8. package/dist/alpha.d.ts +2 -0
  9. package/dist/components/fields/EntityTagsPicker/EntityTagsPicker.esm.js +2 -2
  10. package/dist/components/fields/EntityTagsPicker/EntityTagsPicker.esm.js.map +1 -1
  11. package/dist/components/fields/RepoUrlPicker/AzureRepoPicker.esm.js +11 -9
  12. package/dist/components/fields/RepoUrlPicker/AzureRepoPicker.esm.js.map +1 -1
  13. package/dist/components/fields/RepoUrlPicker/BitbucketRepoPicker.esm.js +10 -8
  14. package/dist/components/fields/RepoUrlPicker/BitbucketRepoPicker.esm.js.map +1 -1
  15. package/dist/components/fields/RepoUrlPicker/GerritRepoPicker.esm.js +12 -5
  16. package/dist/components/fields/RepoUrlPicker/GerritRepoPicker.esm.js.map +1 -1
  17. package/dist/components/fields/RepoUrlPicker/GiteaRepoPicker.esm.js +17 -9
  18. package/dist/components/fields/RepoUrlPicker/GiteaRepoPicker.esm.js.map +1 -1
  19. package/dist/components/fields/RepoUrlPicker/GithubRepoPicker.esm.js +21 -9
  20. package/dist/components/fields/RepoUrlPicker/GithubRepoPicker.esm.js.map +1 -1
  21. package/dist/components/fields/RepoUrlPicker/GitlabRepoPicker.esm.js +21 -10
  22. package/dist/components/fields/RepoUrlPicker/GitlabRepoPicker.esm.js.map +1 -1
  23. package/dist/components/fields/RepoUrlPicker/RepoUrlPicker.esm.js +29 -7
  24. package/dist/components/fields/RepoUrlPicker/RepoUrlPicker.esm.js.map +1 -1
  25. package/dist/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.esm.js +83 -46
  26. package/dist/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.esm.js.map +1 -1
  27. package/dist/components/fields/RepoUrlPicker/schema.esm.js +7 -0
  28. package/dist/components/fields/RepoUrlPicker/schema.esm.js.map +1 -1
  29. package/dist/index.d.ts +10 -0
  30. package/dist/plugins/scaffolder/package.json.esm.js +1 -1
  31. package/package.json +27 -27
@@ -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 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
+ {"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 ownerLabel?: string;\n ownerDescription?: string;\n }>,\n) => {\n const theme = useScaffolderTheme();\n const {\n allowedOwners = [],\n allowedProjects = [],\n onChange,\n rawErrors,\n state,\n accessToken,\n isDisabled,\n ownerLabel,\n ownerDescription,\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={\n ownerLabel ?? t('fields.bitbucketRepoPicker.workspaces.title')\n }\n description={\n ownerDescription ??\n t('fields.bitbucketRepoPicker.workspaces.description')\n }\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={\n ownerLabel ?? t('fields.bitbucketRepoPicker.workspaces.inputTitle')\n }\n description={\n ownerDescription ??\n t('fields.bitbucketRepoPicker.workspaces.description')\n }\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={\n ownerLabel ?? t('fields.bitbucketRepoPicker.workspaces.title')\n }\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={\n ownerLabel ??\n t('fields.bitbucketRepoPicker.workspaces.inputTitle')\n }\n disabled={isDisabled}\n required\n />\n )}\n disabled={isDisabled}\n freeSolo\n autoSelect\n />\n )}\n <FormHelperText>\n {ownerDescription ??\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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"}
@@ -8,7 +8,14 @@ import { TextField } from '@backstage/ui';
8
8
 
9
9
  const GerritRepoPicker = (props) => {
10
10
  const theme = useScaffolderTheme();
11
- const { onChange, rawErrors, state, isDisabled } = props;
11
+ const {
12
+ onChange,
13
+ rawErrors,
14
+ state,
15
+ isDisabled,
16
+ ownerLabel,
17
+ ownerDescription
18
+ } = props;
12
19
  const { t } = useTranslationRef(scaffolderTranslationRef);
13
20
  const { workspace, owner } = state;
14
21
  if (theme === "bui") {
@@ -16,8 +23,8 @@ const GerritRepoPicker = (props) => {
16
23
  /* @__PURE__ */ jsx(
17
24
  TextField,
18
25
  {
19
- label: t("fields.gerritRepoPicker.owner.title"),
20
- description: t("fields.gerritRepoPicker.owner.description"),
26
+ label: ownerLabel ?? t("fields.gerritRepoPicker.owner.title"),
27
+ description: ownerDescription ?? t("fields.gerritRepoPicker.owner.description"),
21
28
  onChange: (value) => onChange({ owner: value }),
22
29
  isDisabled,
23
30
  value: owner ?? "",
@@ -43,9 +50,9 @@ const GerritRepoPicker = (props) => {
43
50
  MuiTextField,
44
51
  {
45
52
  id: "ownerInput",
46
- label: t("fields.gerritRepoPicker.owner.title"),
53
+ label: ownerLabel ?? t("fields.gerritRepoPicker.owner.title"),
47
54
  onChange: (e) => onChange({ owner: e.target.value }),
48
- helperText: t("fields.gerritRepoPicker.owner.description"),
55
+ helperText: ownerDescription ?? t("fields.gerritRepoPicker.owner.description"),
49
56
  disabled: isDisabled,
50
57
  value: owner
51
58
  }
@@ -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 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
+ {"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 = (\n props: BaseRepoUrlPickerProps<{\n ownerLabel?: string;\n ownerDescription?: string;\n }>,\n) => {\n const theme = useScaffolderTheme();\n const {\n onChange,\n rawErrors,\n state,\n isDisabled,\n ownerLabel,\n ownerDescription,\n } = props;\n const { t } = useTranslationRef(scaffolderTranslationRef);\n const { workspace, owner } = state;\n\n if (theme === 'bui') {\n return (\n <>\n <BuiTextField\n label={ownerLabel ?? t('fields.gerritRepoPicker.owner.title')}\n description={\n ownerDescription ?? t('fields.gerritRepoPicker.owner.description')\n }\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={ownerLabel ?? t('fields.gerritRepoPicker.owner.title')}\n onChange={e => onChange({ owner: e.target.value })}\n helperText={\n ownerDescription ?? t('fields.gerritRepoPicker.owner.description')\n }\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":"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"}
@@ -11,7 +11,15 @@ import overrides from '../scaffolderFieldOverrides.module.css.esm.js';
11
11
 
12
12
  const GiteaRepoPicker = (props) => {
13
13
  const theme = useScaffolderTheme();
14
- const { allowedOwners = [], state, onChange, rawErrors, isDisabled } = props;
14
+ const {
15
+ allowedOwners = [],
16
+ state,
17
+ onChange,
18
+ rawErrors,
19
+ isDisabled,
20
+ ownerLabel,
21
+ ownerDescription
22
+ } = props;
15
23
  const { t } = useTranslationRef(scaffolderTranslationRef);
16
24
  const { owner } = state;
17
25
  if (theme === "bui") {
@@ -21,8 +29,8 @@ const GiteaRepoPicker = (props) => {
21
29
  Select,
22
30
  {
23
31
  className: overrides.select,
24
- label: t("fields.giteaRepoPicker.owner.title"),
25
- description: t("fields.giteaRepoPicker.owner.description"),
32
+ label: ownerLabel ?? t("fields.giteaRepoPicker.owner.title"),
33
+ description: ownerDescription ?? t("fields.giteaRepoPicker.owner.description"),
26
34
  isDisabled: isDisabled || allowedOwners.length === 1,
27
35
  isInvalid: rawErrors?.length > 0 && !owner,
28
36
  selectedKey: owner ?? null,
@@ -37,8 +45,8 @@ const GiteaRepoPicker = (props) => {
37
45
  return /* @__PURE__ */ jsx(
38
46
  TextField,
39
47
  {
40
- label: t("fields.giteaRepoPicker.owner.inputTitle"),
41
- description: t("fields.giteaRepoPicker.owner.description"),
48
+ label: ownerLabel ?? t("fields.giteaRepoPicker.owner.inputTitle"),
49
+ description: ownerDescription ?? t("fields.giteaRepoPicker.owner.description"),
42
50
  onChange: (value) => onChange({ owner: value }),
43
51
  isDisabled,
44
52
  value: owner ?? "",
@@ -59,7 +67,7 @@ const GiteaRepoPicker = (props) => {
59
67
  Select$1,
60
68
  {
61
69
  native: true,
62
- label: t("fields.giteaRepoPicker.owner.title"),
70
+ label: ownerLabel ?? t("fields.giteaRepoPicker.owner.title"),
63
71
  onChange: (selected) => onChange({
64
72
  owner: String(
65
73
  Array.isArray(selected) ? selected[0] : selected
@@ -70,14 +78,14 @@ const GiteaRepoPicker = (props) => {
70
78
  items: ownerItems
71
79
  }
72
80
  ),
73
- /* @__PURE__ */ jsx(FormHelperText, { children: t("fields.giteaRepoPicker.owner.description") })
81
+ /* @__PURE__ */ jsx(FormHelperText, { children: ownerDescription ?? t("fields.giteaRepoPicker.owner.description") })
74
82
  ] }) : /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
75
83
  MuiTextField,
76
84
  {
77
85
  id: "ownerInput",
78
- label: t("fields.giteaRepoPicker.owner.inputTitle"),
86
+ label: ownerLabel ?? t("fields.giteaRepoPicker.owner.inputTitle"),
79
87
  onChange: (e) => onChange({ owner: e.target.value }),
80
- helperText: t("fields.giteaRepoPicker.owner.description"),
88
+ helperText: ownerDescription ?? t("fields.giteaRepoPicker.owner.description"),
81
89
  disabled: isDisabled,
82
90
  value: owner
83
91
  }
@@ -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 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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"}
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 ownerLabel?: string;\n ownerDescription?: string;\n }>,\n) => {\n const theme = useScaffolderTheme();\n const {\n allowedOwners = [],\n state,\n onChange,\n rawErrors,\n isDisabled,\n ownerLabel,\n ownerDescription,\n } = 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={ownerLabel ?? t('fields.giteaRepoPicker.owner.title')}\n description={\n ownerDescription ?? t('fields.giteaRepoPicker.owner.description')\n }\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={ownerLabel ?? t('fields.giteaRepoPicker.owner.inputTitle')}\n description={\n ownerDescription ?? t('fields.giteaRepoPicker.owner.description')\n }\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={ownerLabel ?? 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 {ownerDescription ??\n t('fields.giteaRepoPicker.owner.description')}\n </FormHelperText>\n </>\n ) : (\n <>\n <MuiTextField\n id=\"ownerInput\"\n label={ownerLabel ?? t('fields.giteaRepoPicker.owner.inputTitle')}\n onChange={e => onChange({ owner: e.target.value })}\n helperText={\n ownerDescription ??\n t('fields.giteaRepoPicker.owner.description')\n }\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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"}
@@ -25,7 +25,10 @@ const GithubRepoPicker = (props) => {
25
25
  state,
26
26
  onChange,
27
27
  accessToken,
28
- isDisabled
28
+ isDisabled,
29
+ ownerLabel,
30
+ ownerDescription,
31
+ disableRepoAutocomplete
29
32
  } = props;
30
33
  const { t } = useTranslationRef(scaffolderTranslationRef);
31
34
  const { host, owner } = state;
@@ -60,11 +63,20 @@ const GithubRepoPicker = (props) => {
60
63
  [availableRepositoriesWithOwner]
61
64
  );
62
65
  const updateAvailableRepositories = useCallback(() => {
66
+ if (disableRepoAutocomplete) {
67
+ onChange({ availableRepos: [] });
68
+ return;
69
+ }
63
70
  const availableRepos = availableRepositoriesWithOwner.flatMap(
64
71
  (r) => r.owner === owner ? [{ name: r.name }] : []
65
72
  );
66
73
  onChange({ availableRepos });
67
- }, [availableRepositoriesWithOwner, owner, onChange]);
74
+ }, [
75
+ disableRepoAutocomplete,
76
+ availableRepositoriesWithOwner,
77
+ owner,
78
+ onChange
79
+ ]);
68
80
  useDebounce(updateAvailableRepositories, 500, [updateAvailableRepositories]);
69
81
  if (theme === "bui") {
70
82
  if (allowedOwners?.length) {
@@ -73,8 +85,8 @@ const GithubRepoPicker = (props) => {
73
85
  Select,
74
86
  {
75
87
  className: overrides.select,
76
- label: t("fields.githubRepoPicker.owner.title"),
77
- description: t("fields.githubRepoPicker.owner.description"),
88
+ label: ownerLabel ?? t("fields.githubRepoPicker.owner.title"),
89
+ description: ownerDescription ?? t("fields.githubRepoPicker.owner.description"),
78
90
  isDisabled: isDisabled || allowedOwners.length === 1,
79
91
  isInvalid: rawErrors?.length > 0 && !owner,
80
92
  selectedKey: owner ?? null,
@@ -90,8 +102,8 @@ const GithubRepoPicker = (props) => {
90
102
  return /* @__PURE__ */ jsx(
91
103
  Autocomplete,
92
104
  {
93
- label: t("fields.githubRepoPicker.owner.inputTitle"),
94
- description: t("fields.githubRepoPicker.owner.description"),
105
+ label: ownerLabel ?? t("fields.githubRepoPicker.owner.inputTitle"),
106
+ description: ownerDescription ?? t("fields.githubRepoPicker.owner.description"),
95
107
  inputValue: owner ?? "",
96
108
  onInputChange: (value) => onChange({ owner: value }),
97
109
  onSelectionChange: (key) => {
@@ -118,7 +130,7 @@ const GithubRepoPicker = (props) => {
118
130
  Select$1,
119
131
  {
120
132
  native: true,
121
- label: t("fields.githubRepoPicker.owner.title"),
133
+ label: ownerLabel ?? t("fields.githubRepoPicker.owner.title"),
122
134
  onChange: (s) => onChange({ owner: String(Array.isArray(s) ? s[0] : s) }),
123
135
  disabled: isDisabled || allowedOwners.length === 1,
124
136
  selected: owner,
@@ -136,7 +148,7 @@ const GithubRepoPicker = (props) => {
136
148
  MuiTextField,
137
149
  {
138
150
  ...params,
139
- label: t("fields.githubRepoPicker.owner.inputTitle"),
151
+ label: ownerLabel ?? t("fields.githubRepoPicker.owner.inputTitle"),
140
152
  disabled: isDisabled,
141
153
  required: true
142
154
  }
@@ -146,7 +158,7 @@ const GithubRepoPicker = (props) => {
146
158
  autoSelect: true
147
159
  }
148
160
  ),
149
- /* @__PURE__ */ jsx(FormHelperText, { children: t("fields.githubRepoPicker.owner.description") })
161
+ /* @__PURE__ */ jsx(FormHelperText, { children: ownerDescription ?? t("fields.githubRepoPicker.owner.description") })
150
162
  ]
151
163
  }
152
164
  ) });
@@ -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 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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"}
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 ownerLabel?: string;\n ownerDescription?: string;\n disableRepoAutocomplete?: boolean;\n }>,\n) => {\n const theme = useScaffolderTheme();\n const {\n allowedOwners = [],\n rawErrors,\n state,\n onChange,\n accessToken,\n isDisabled,\n ownerLabel,\n ownerDescription,\n disableRepoAutocomplete,\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 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 // Only surface repository suggestions when repo autocomplete is enabled.\n // Owner suggestions are still derived from the fetch above.\n if (disableRepoAutocomplete) {\n onChange({ availableRepos: [] });\n return;\n }\n\n const availableRepos = availableRepositoriesWithOwner.flatMap(r =>\n r.owner === owner ? [{ name: r.name }] : [],\n );\n\n onChange({ availableRepos });\n }, [\n disableRepoAutocomplete,\n availableRepositoriesWithOwner,\n owner,\n onChange,\n ]);\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={ownerLabel ?? t('fields.githubRepoPicker.owner.title')}\n description={\n ownerDescription ?? t('fields.githubRepoPicker.owner.description')\n }\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={ownerLabel ?? t('fields.githubRepoPicker.owner.inputTitle')}\n description={\n ownerDescription ?? t('fields.githubRepoPicker.owner.description')\n }\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={ownerLabel ?? 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={\n ownerLabel ?? t('fields.githubRepoPicker.owner.inputTitle')\n }\n disabled={isDisabled}\n required\n />\n )}\n freeSolo\n disabled={isDisabled}\n autoSelect\n />\n )}\n <FormHelperText>\n {ownerDescription ?? t('fields.githubRepoPicker.owner.description')}\n </FormHelperText>\n </FormControl>\n </>\n );\n};\n"],"names":["ownerItems","BuiSelect","BuiAutocomplete","MuiSelect"],"mappings":"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"}
@@ -23,7 +23,10 @@ const GitlabRepoPicker = (props) => {
23
23
  onChange,
24
24
  rawErrors,
25
25
  accessToken,
26
- isDisabled
26
+ isDisabled,
27
+ ownerLabel,
28
+ ownerDescription,
29
+ disableRepoAutocomplete
27
30
  } = props;
28
31
  const [availableGroups, setAvailableGroups] = useState([]);
29
32
  const { t } = useTranslationRef(scaffolderTranslationRef);
@@ -52,7 +55,7 @@ const GitlabRepoPicker = (props) => {
52
55
  }, [scaffolderApi, accessToken, host]);
53
56
  useDebounce(updateAvailableGroups, 500, [updateAvailableGroups]);
54
57
  const updateAvailableRepositories = useCallback(() => {
55
- if (!scaffolderApi.autocomplete || !accessToken || !host || !owner) {
58
+ if (disableRepoAutocomplete || !scaffolderApi.autocomplete || !accessToken || !host || !owner) {
56
59
  onChange({ availableRepos: [] });
57
60
  return;
58
61
  }
@@ -72,7 +75,15 @@ const GitlabRepoPicker = (props) => {
72
75
  }).catch(() => {
73
76
  onChange({ availableRepos: [] });
74
77
  });
75
- }, [scaffolderApi, accessToken, host, owner, onChange, availableGroups]);
78
+ }, [
79
+ disableRepoAutocomplete,
80
+ scaffolderApi,
81
+ accessToken,
82
+ host,
83
+ owner,
84
+ onChange,
85
+ availableGroups
86
+ ]);
76
87
  useDebounce(updateAvailableRepositories, 500, [updateAvailableRepositories]);
77
88
  if (theme === "bui") {
78
89
  if (allowedOwners?.length) {
@@ -81,8 +92,8 @@ const GitlabRepoPicker = (props) => {
81
92
  Select,
82
93
  {
83
94
  className: overrides.select,
84
- label: t("fields.gitlabRepoPicker.owner.title"),
85
- description: t("fields.gitlabRepoPicker.owner.description"),
95
+ label: ownerLabel ?? t("fields.gitlabRepoPicker.owner.title"),
96
+ description: ownerDescription ?? t("fields.gitlabRepoPicker.owner.description"),
86
97
  isDisabled: isDisabled || allowedOwners.length === 1,
87
98
  isInvalid: rawErrors?.length > 0 && !owner,
88
99
  selectedKey: owner ?? null,
@@ -101,8 +112,8 @@ const GitlabRepoPicker = (props) => {
101
112
  return /* @__PURE__ */ jsx(
102
113
  Autocomplete,
103
114
  {
104
- label: t("fields.gitlabRepoPicker.owner.inputTitle"),
105
- description: t("fields.gitlabRepoPicker.owner.description"),
115
+ label: ownerLabel ?? t("fields.gitlabRepoPicker.owner.inputTitle"),
116
+ description: ownerDescription ?? t("fields.gitlabRepoPicker.owner.description"),
106
117
  inputValue: owner ?? "",
107
118
  onInputChange: (value) => onChange({ owner: value }),
108
119
  onSelectionChange: (key) => {
@@ -129,7 +140,7 @@ const GitlabRepoPicker = (props) => {
129
140
  Select$1,
130
141
  {
131
142
  native: true,
132
- label: t("fields.gitlabRepoPicker.owner.title"),
143
+ label: ownerLabel ?? t("fields.gitlabRepoPicker.owner.title"),
133
144
  onChange: (selected) => onChange({
134
145
  owner: String(
135
146
  Array.isArray(selected) ? selected[0] : selected
@@ -151,7 +162,7 @@ const GitlabRepoPicker = (props) => {
151
162
  MuiTextField,
152
163
  {
153
164
  ...params,
154
- label: t("fields.gitlabRepoPicker.owner.inputTitle"),
165
+ label: ownerLabel ?? t("fields.gitlabRepoPicker.owner.inputTitle"),
155
166
  disabled: isDisabled,
156
167
  required: true
157
168
  }
@@ -161,7 +172,7 @@ const GitlabRepoPicker = (props) => {
161
172
  autoSelect: true
162
173
  }
163
174
  ),
164
- /* @__PURE__ */ jsx(FormHelperText, { children: t("fields.gitlabRepoPicker.owner.description") })
175
+ /* @__PURE__ */ jsx(FormHelperText, { children: ownerDescription ?? t("fields.gitlabRepoPicker.owner.description") })
165
176
  ]
166
177
  }
167
178
  ) });
@@ -1 +1 @@
1
- {"version":3,"file":"GitlabRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/GitlabRepoPicker.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, 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\nexport const GitlabRepoPicker = (\n props: BaseRepoUrlPickerProps<{\n allowedOwners?: string[];\n allowedRepos?: string[];\n accessToken?: string;\n }>,\n) => {\n const theme = useScaffolderTheme();\n const {\n allowedOwners = [],\n state,\n onChange,\n rawErrors,\n accessToken,\n isDisabled,\n } = props;\n const [availableGroups, setAvailableGroups] = useState<\n { title: string; id: string }[]\n >([]);\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const { owner, host } = state;\n\n const scaffolderApi = useApi(scaffolderApiRef);\n\n const updateAvailableGroups = useCallback(() => {\n if (!scaffolderApi.autocomplete || !accessToken || !host) {\n setAvailableGroups([]);\n return;\n }\n\n scaffolderApi\n .autocomplete({\n token: accessToken,\n resource: 'groups',\n provider: 'gitlab',\n context: { host },\n })\n .then(({ results }) => {\n setAvailableGroups(\n results.map(r => ({\n title: r.title!,\n id: r.id,\n })),\n );\n })\n .catch(() => {\n setAvailableGroups([]);\n });\n }, [scaffolderApi, accessToken, host]);\n\n useDebounce(updateAvailableGroups, 500, [updateAvailableGroups]);\n\n // Update available repositories when client is available and group changes\n const updateAvailableRepositories = useCallback(() => {\n if (!scaffolderApi.autocomplete || !accessToken || !host || !owner) {\n onChange({ availableRepos: [] });\n return;\n }\n\n const selectedGroup = availableGroups.find(group => group.title === owner);\n\n scaffolderApi\n .autocomplete({\n token: accessToken,\n resource: 'repositories',\n context: {\n id: selectedGroup?.id ?? '',\n host,\n },\n provider: 'gitlab',\n })\n .then(({ results }) => {\n onChange({\n availableRepos: results.map(r => ({ name: r.title!, id: r.id })),\n });\n })\n .catch(() => {\n onChange({ availableRepos: [] });\n });\n }, [scaffolderApi, accessToken, host, owner, onChange, availableGroups]);\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.gitlabRepoPicker.owner.title')}\n description={t('fields.gitlabRepoPicker.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 = availableGroups.map(group => ({\n label: group.title,\n value: group.title,\n }));\n\n return (\n <BuiAutocomplete\n label={t('fields.gitlabRepoPicker.owner.inputTitle')}\n description={t('fields.gitlabRepoPicker.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.gitlabRepoPicker.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 </>\n ) : (\n <MuiAutocomplete\n value={owner}\n onChange={(_, newValue) => {\n onChange({ owner: newValue || '' });\n }}\n options={availableGroups.map(group => group.title)}\n renderInput={params => (\n <MuiTextField\n {...params}\n label={t('fields.gitlabRepoPicker.owner.inputTitle')}\n disabled={isDisabled}\n required\n />\n )}\n freeSolo\n disabled={isDisabled}\n autoSelect\n />\n )}\n <FormHelperText>\n {t('fields.gitlabRepoPicker.owner.description')}\n </FormHelperText>\n </FormControl>\n </>\n );\n};\n"],"names":["ownerItems","BuiSelect","BuiAutocomplete","MuiSelect"],"mappings":"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"}
1
+ {"version":3,"file":"GitlabRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/GitlabRepoPicker.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, 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\nexport const GitlabRepoPicker = (\n props: BaseRepoUrlPickerProps<{\n allowedOwners?: string[];\n allowedRepos?: string[];\n accessToken?: string;\n ownerLabel?: string;\n ownerDescription?: string;\n disableRepoAutocomplete?: boolean;\n }>,\n) => {\n const theme = useScaffolderTheme();\n const {\n allowedOwners = [],\n state,\n onChange,\n rawErrors,\n accessToken,\n isDisabled,\n ownerLabel,\n ownerDescription,\n disableRepoAutocomplete,\n } = props;\n const [availableGroups, setAvailableGroups] = useState<\n { title: string; id: string }[]\n >([]);\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const { owner, host } = state;\n\n const scaffolderApi = useApi(scaffolderApiRef);\n\n const updateAvailableGroups = useCallback(() => {\n if (!scaffolderApi.autocomplete || !accessToken || !host) {\n setAvailableGroups([]);\n return;\n }\n\n scaffolderApi\n .autocomplete({\n token: accessToken,\n resource: 'groups',\n provider: 'gitlab',\n context: { host },\n })\n .then(({ results }) => {\n setAvailableGroups(\n results.map(r => ({\n title: r.title!,\n id: r.id,\n })),\n );\n })\n .catch(() => {\n setAvailableGroups([]);\n });\n }, [scaffolderApi, accessToken, host]);\n\n useDebounce(updateAvailableGroups, 500, [updateAvailableGroups]);\n\n const updateAvailableRepositories = useCallback(() => {\n if (\n disableRepoAutocomplete ||\n !scaffolderApi.autocomplete ||\n !accessToken ||\n !host ||\n !owner\n ) {\n onChange({ availableRepos: [] });\n return;\n }\n\n const selectedGroup = availableGroups.find(group => group.title === owner);\n\n scaffolderApi\n .autocomplete({\n token: accessToken,\n resource: 'repositories',\n context: {\n id: selectedGroup?.id ?? '',\n host,\n },\n provider: 'gitlab',\n })\n .then(({ results }) => {\n onChange({\n availableRepos: results.map(r => ({ name: r.title!, id: r.id })),\n });\n })\n .catch(() => {\n onChange({ availableRepos: [] });\n });\n }, [\n disableRepoAutocomplete,\n scaffolderApi,\n accessToken,\n host,\n owner,\n onChange,\n availableGroups,\n ]);\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={ownerLabel ?? t('fields.gitlabRepoPicker.owner.title')}\n description={\n ownerDescription ?? t('fields.gitlabRepoPicker.owner.description')\n }\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 = availableGroups.map(group => ({\n label: group.title,\n value: group.title,\n }));\n\n return (\n <BuiAutocomplete\n label={ownerLabel ?? t('fields.gitlabRepoPicker.owner.inputTitle')}\n description={\n ownerDescription ?? t('fields.gitlabRepoPicker.owner.description')\n }\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={ownerLabel ?? t('fields.gitlabRepoPicker.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 </>\n ) : (\n <MuiAutocomplete\n value={owner}\n onChange={(_, newValue) => {\n onChange({ owner: newValue || '' });\n }}\n options={availableGroups.map(group => group.title)}\n renderInput={params => (\n <MuiTextField\n {...params}\n label={\n ownerLabel ?? t('fields.gitlabRepoPicker.owner.inputTitle')\n }\n disabled={isDisabled}\n required\n />\n )}\n freeSolo\n disabled={isDisabled}\n autoSelect\n />\n )}\n <FormHelperText>\n {ownerDescription ?? t('fields.gitlabRepoPicker.owner.description')}\n </FormHelperText>\n </FormControl>\n </>\n );\n};\n"],"names":["ownerItems","BuiSelect","BuiAutocomplete","MuiSelect"],"mappings":"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"}