@backstage/plugin-scaffolder 1.39.0-next.1 → 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 (35) hide show
  1. package/CHANGELOG.md +49 -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/ListTasksPage/columns/CreatedAtColumn.esm.js +2 -5
  10. package/dist/components/ListTasksPage/columns/CreatedAtColumn.esm.js.map +1 -1
  11. package/dist/components/RenderSchema/RenderSchema.esm.js +5 -2
  12. package/dist/components/RenderSchema/RenderSchema.esm.js.map +1 -1
  13. package/dist/components/fields/EntityTagsPicker/EntityTagsPicker.esm.js +2 -2
  14. package/dist/components/fields/EntityTagsPicker/EntityTagsPicker.esm.js.map +1 -1
  15. package/dist/components/fields/RepoUrlPicker/AzureRepoPicker.esm.js +11 -9
  16. package/dist/components/fields/RepoUrlPicker/AzureRepoPicker.esm.js.map +1 -1
  17. package/dist/components/fields/RepoUrlPicker/BitbucketRepoPicker.esm.js +10 -8
  18. package/dist/components/fields/RepoUrlPicker/BitbucketRepoPicker.esm.js.map +1 -1
  19. package/dist/components/fields/RepoUrlPicker/GerritRepoPicker.esm.js +12 -5
  20. package/dist/components/fields/RepoUrlPicker/GerritRepoPicker.esm.js.map +1 -1
  21. package/dist/components/fields/RepoUrlPicker/GiteaRepoPicker.esm.js +17 -9
  22. package/dist/components/fields/RepoUrlPicker/GiteaRepoPicker.esm.js.map +1 -1
  23. package/dist/components/fields/RepoUrlPicker/GithubRepoPicker.esm.js +21 -9
  24. package/dist/components/fields/RepoUrlPicker/GithubRepoPicker.esm.js.map +1 -1
  25. package/dist/components/fields/RepoUrlPicker/GitlabRepoPicker.esm.js +21 -10
  26. package/dist/components/fields/RepoUrlPicker/GitlabRepoPicker.esm.js.map +1 -1
  27. package/dist/components/fields/RepoUrlPicker/RepoUrlPicker.esm.js +29 -7
  28. package/dist/components/fields/RepoUrlPicker/RepoUrlPicker.esm.js.map +1 -1
  29. package/dist/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.esm.js +83 -46
  30. package/dist/components/fields/RepoUrlPicker/RepoUrlPickerRepoName.esm.js.map +1 -1
  31. package/dist/components/fields/RepoUrlPicker/schema.esm.js +7 -0
  32. package/dist/components/fields/RepoUrlPicker/schema.esm.js.map +1 -1
  33. package/dist/index.d.ts +10 -0
  34. package/dist/plugins/scaffolder/package.json.esm.js +1 -1
  35. package/package.json +27 -27
@@ -1 +1 @@
1
- {"version":3,"file":"EntityTagsPicker.esm.js","sources":["../../../../src/components/fields/EntityTagsPicker/EntityTagsPicker.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 { type Key, ChangeEvent, useCallback, useMemo, useState } from 'react';\nimport useAsync from 'react-use/esm/useAsync';\nimport useEffectOnce from 'react-use/esm/useEffectOnce';\nimport { GetEntityFacetsRequest } from '@backstage/catalog-client';\nimport { makeValidator } from '@backstage/catalog-model';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport TextField from '@material-ui/core/TextField';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport { EntityTagsPickerProps } from './schema';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderTranslationRef } from '../../../translation';\nimport {\n ScaffolderField,\n useScaffolderTheme,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { Autocomplete as BuiAutocomplete } from '../Autocomplete';\nimport { chipStyle, chipRemoveStyle } from '../buiChipStyles';\n\nexport { EntityTagsPickerSchema } from './schema';\n\n/**\n * The underlying component that is rendered in the form for the `EntityTagsPicker`\n * field extension.\n *\n * @public\n */\nexport const EntityTagsPicker = (props: EntityTagsPickerProps) => {\n const theme = useScaffolderTheme();\n const { t } = useTranslationRef(scaffolderTranslationRef);\n const {\n formData,\n onChange,\n schema: {\n title = t('fields.entityTagsPicker.title'),\n description = t('fields.entityTagsPicker.description'),\n },\n uiSchema,\n rawErrors,\n required,\n errors,\n } = props;\n const catalogApi = useApi(catalogApiRef);\n const [tagOptions, setTagOptions] = useState<string[]>([]);\n const [inputValue, setInputValue] = useState('');\n const [inputError, setInputError] = useState(false);\n const tagValidator = makeValidator().isValidTag;\n const kinds = uiSchema['ui:options']?.kinds;\n const showCounts = uiSchema['ui:options']?.showCounts;\n const helperText = uiSchema['ui:options']?.helperText;\n const isDisabled = uiSchema?.['ui:disabled'] ?? false;\n\n const { loading, value: existingTags } = useAsync(async () => {\n const facet = 'metadata.tags';\n const tagsRequest: GetEntityFacetsRequest = { facets: [facet] };\n if (kinds) {\n tagsRequest.filter = { kind: kinds };\n }\n\n const { facets } = await catalogApi.getEntityFacets(tagsRequest);\n\n const tagFacets = Object.fromEntries(\n facets[facet].map(({ value, count }) => [value, count]),\n );\n\n setTagOptions(\n Object.keys(tagFacets).sort((a, b) =>\n showCounts ? tagFacets[b] - tagFacets[a] : a.localeCompare(b),\n ),\n );\n\n return tagFacets;\n });\n\n const setTags = (_: ChangeEvent<{}>, values: string[] | null) => {\n // Reset error state in case all tags were removed\n let hasError = false;\n let addDuplicate = false;\n const currentTags = formData || [];\n\n // If adding a new tag\n if (values?.length && currentTags.length < values.length) {\n const newTag = (values[values.length - 1] = values[values.length - 1]\n .toLocaleLowerCase('en-US')\n .trim());\n hasError = !tagValidator(newTag);\n addDuplicate = currentTags.indexOf(newTag) !== -1;\n }\n\n setInputError(hasError);\n setInputValue(!hasError ? '' : inputValue);\n if (!hasError && !addDuplicate) {\n onChange(values || []);\n }\n };\n\n // BUI: computed tag options\n const buiTagOptions = useMemo(() => {\n if (!existingTags) return [];\n return Object.keys(existingTags).sort((a, b) =>\n showCounts ? existingTags[b] - existingTags[a] : a.localeCompare(b),\n );\n }, [existingTags, showCounts]);\n\n const selectedTags = useMemo(() => formData || [], [formData]);\n const availableOptions = useMemo(\n () =>\n buiTagOptions\n .filter(tag => !selectedTags.includes(tag))\n .map(tag => ({\n value: tag,\n label:\n showCounts && existingTags ? `${tag} (${existingTags[tag]})` : tag,\n })),\n [buiTagOptions, selectedTags, showCounts, existingTags],\n );\n\n const handleSelectionChange = useCallback(\n (key: Key | null) => {\n if (key !== null) {\n const tag = String(key);\n if (!selectedTags.includes(tag)) {\n onChange([...selectedTags, tag]);\n }\n setInputValue('');\n setInputError(false);\n } else if (inputValue) {\n const newTag = inputValue.toLocaleLowerCase('en-US').trim();\n const isValid = tagValidator(newTag);\n const isDuplicate = selectedTags.includes(newTag);\n setInputError(!isValid);\n\n if (isValid && !isDuplicate) {\n onChange([...selectedTags, newTag]);\n setInputValue('');\n }\n }\n },\n [selectedTags, onChange, inputValue, tagValidator],\n );\n\n const handleRemove = useCallback(\n (tag: string) => {\n onChange(selectedTags.filter(item => item !== tag));\n },\n [selectedTags, onChange],\n );\n\n // Initialize field to always return an array\n useEffectOnce(() => onChange(formData || []));\n\n if (theme === 'bui') {\n return (\n <ScaffolderField\n rawErrors={rawErrors}\n rawDescription={\n (helperText as string) ?? uiSchema['ui:description'] ?? description\n }\n required={required}\n disabled={isDisabled}\n errors={errors}\n >\n <div>\n {selectedTags.length > 0 && (\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: 'var(--bui-space-1)',\n marginBottom: 'var(--bui-space-2)',\n }}\n >\n {selectedTags.map(tag => (\n <span key={tag} style={chipStyle}>\n {tag}\n {!isDisabled && (\n <button\n type=\"button\"\n onClick={() => handleRemove(tag)}\n style={chipRemoveStyle}\n aria-label={`Remove ${tag}`}\n >\n &times;\n </button>\n )}\n </span>\n ))}\n </div>\n )}\n <BuiAutocomplete\n label={title}\n isRequired={required}\n isDisabled={isDisabled}\n selectedKey={null}\n inputValue={inputValue}\n onInputChange={setInputValue}\n onSelectionChange={handleSelectionChange}\n isLoading={loading}\n options={availableOptions}\n allowsCustomValue\n isInvalid={inputError || (rawErrors && rawErrors.length > 0)}\n />\n </div>\n </ScaffolderField>\n );\n }\n\n return (\n <ScaffolderField\n rawErrors={rawErrors}\n rawDescription={helperText ?? uiSchema['ui:description'] ?? description}\n required={required}\n disabled={isDisabled}\n errors={errors}\n >\n <Autocomplete\n multiple\n freeSolo\n filterSelectedOptions\n onChange={setTags}\n disabled={isDisabled}\n value={formData || []}\n inputValue={inputValue}\n loading={loading}\n options={tagOptions}\n ChipProps={{ size: 'small' }}\n renderOption={option =>\n showCounts ? `${option} (${existingTags?.[option]})` : option\n }\n renderInput={params => (\n <TextField\n {...params}\n label={title}\n disabled={isDisabled}\n onChange={e => setInputValue(e.target.value)}\n error={inputError}\n FormHelperTextProps={{ margin: 'dense', style: { marginLeft: 0 } }}\n />\n )}\n />\n </ScaffolderField>\n );\n};\n"],"names":["BuiAutocomplete","Autocomplete","TextField"],"mappings":"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"}
1
+ {"version":3,"file":"EntityTagsPicker.esm.js","sources":["../../../../src/components/fields/EntityTagsPicker/EntityTagsPicker.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 { type Key, ChangeEvent, useCallback, useMemo, useState } from 'react';\nimport useAsync from 'react-use/esm/useAsync';\nimport useEffectOnce from 'react-use/esm/useEffectOnce';\nimport { GetEntityFacetsRequest } from '@backstage/catalog-client';\nimport { makeValidator } from '@backstage/catalog-model';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport TextField from '@material-ui/core/TextField';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport { EntityTagsPickerProps } from './schema';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderTranslationRef } from '../../../translation';\nimport {\n ScaffolderField,\n useScaffolderTheme,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { Autocomplete as BuiAutocomplete } from '../Autocomplete';\nimport { chipStyle, chipRemoveStyle } from '../buiChipStyles';\n\nexport { EntityTagsPickerSchema } from './schema';\n\n/**\n * The underlying component that is rendered in the form for the `EntityTagsPicker`\n * field extension.\n *\n * @public\n */\nexport const EntityTagsPicker = (props: EntityTagsPickerProps) => {\n const theme = useScaffolderTheme();\n const { t } = useTranslationRef(scaffolderTranslationRef);\n const {\n formData,\n onChange,\n schema: {\n title = t('fields.entityTagsPicker.title'),\n description = t('fields.entityTagsPicker.description'),\n },\n uiSchema,\n rawErrors,\n required,\n errors,\n } = props;\n const catalogApi = useApi(catalogApiRef);\n const [tagOptions, setTagOptions] = useState<string[]>([]);\n const [inputValue, setInputValue] = useState('');\n const [inputError, setInputError] = useState(false);\n const tagValidator = makeValidator().isValidTag;\n const kinds = uiSchema['ui:options']?.kinds;\n const showCounts = uiSchema['ui:options']?.showCounts;\n const helperText = uiSchema['ui:options']?.helperText;\n const isDisabled = uiSchema?.['ui:disabled'] ?? false;\n\n const { loading, value: existingTags } = useAsync(async () => {\n const facet = 'metadata.tags';\n const tagsRequest: GetEntityFacetsRequest = { facets: [facet] };\n if (kinds) {\n tagsRequest.filter = { kind: kinds };\n }\n\n const { facets } = await catalogApi.getEntityFacets(tagsRequest);\n\n const tagFacets = Object.fromEntries(\n facets[facet].map(({ value, count }) => [value, count]),\n );\n\n setTagOptions(\n Object.keys(tagFacets).sort((a, b) =>\n showCounts ? tagFacets[b] - tagFacets[a] : a.localeCompare(b),\n ),\n );\n\n return tagFacets;\n });\n\n const setTags = (_: ChangeEvent<{}>, values: string[] | null) => {\n // Reset error state in case all tags were removed\n let hasError = false;\n let addDuplicate = false;\n const currentTags = formData || [];\n\n // If adding a new tag\n if (values?.length && currentTags.length < values.length) {\n const newTag = (values[values.length - 1] = values[values.length - 1]\n .toLowerCase()\n .trim());\n hasError = !tagValidator(newTag);\n addDuplicate = currentTags.indexOf(newTag) !== -1;\n }\n\n setInputError(hasError);\n setInputValue(!hasError ? '' : inputValue);\n if (!hasError && !addDuplicate) {\n onChange(values || []);\n }\n };\n\n // BUI: computed tag options\n const buiTagOptions = useMemo(() => {\n if (!existingTags) return [];\n return Object.keys(existingTags).sort((a, b) =>\n showCounts ? existingTags[b] - existingTags[a] : a.localeCompare(b),\n );\n }, [existingTags, showCounts]);\n\n const selectedTags = useMemo(() => formData || [], [formData]);\n const availableOptions = useMemo(\n () =>\n buiTagOptions\n .filter(tag => !selectedTags.includes(tag))\n .map(tag => ({\n value: tag,\n label:\n showCounts && existingTags ? `${tag} (${existingTags[tag]})` : tag,\n })),\n [buiTagOptions, selectedTags, showCounts, existingTags],\n );\n\n const handleSelectionChange = useCallback(\n (key: Key | null) => {\n if (key !== null) {\n const tag = String(key);\n if (!selectedTags.includes(tag)) {\n onChange([...selectedTags, tag]);\n }\n setInputValue('');\n setInputError(false);\n } else if (inputValue) {\n const newTag = inputValue.toLowerCase().trim();\n const isValid = tagValidator(newTag);\n const isDuplicate = selectedTags.includes(newTag);\n setInputError(!isValid);\n\n if (isValid && !isDuplicate) {\n onChange([...selectedTags, newTag]);\n setInputValue('');\n }\n }\n },\n [selectedTags, onChange, inputValue, tagValidator],\n );\n\n const handleRemove = useCallback(\n (tag: string) => {\n onChange(selectedTags.filter(item => item !== tag));\n },\n [selectedTags, onChange],\n );\n\n // Initialize field to always return an array\n useEffectOnce(() => onChange(formData || []));\n\n if (theme === 'bui') {\n return (\n <ScaffolderField\n rawErrors={rawErrors}\n rawDescription={\n (helperText as string) ?? uiSchema['ui:description'] ?? description\n }\n required={required}\n disabled={isDisabled}\n errors={errors}\n >\n <div>\n {selectedTags.length > 0 && (\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: 'var(--bui-space-1)',\n marginBottom: 'var(--bui-space-2)',\n }}\n >\n {selectedTags.map(tag => (\n <span key={tag} style={chipStyle}>\n {tag}\n {!isDisabled && (\n <button\n type=\"button\"\n onClick={() => handleRemove(tag)}\n style={chipRemoveStyle}\n aria-label={`Remove ${tag}`}\n >\n &times;\n </button>\n )}\n </span>\n ))}\n </div>\n )}\n <BuiAutocomplete\n label={title}\n isRequired={required}\n isDisabled={isDisabled}\n selectedKey={null}\n inputValue={inputValue}\n onInputChange={setInputValue}\n onSelectionChange={handleSelectionChange}\n isLoading={loading}\n options={availableOptions}\n allowsCustomValue\n isInvalid={inputError || (rawErrors && rawErrors.length > 0)}\n />\n </div>\n </ScaffolderField>\n );\n }\n\n return (\n <ScaffolderField\n rawErrors={rawErrors}\n rawDescription={helperText ?? uiSchema['ui:description'] ?? description}\n required={required}\n disabled={isDisabled}\n errors={errors}\n >\n <Autocomplete\n multiple\n freeSolo\n filterSelectedOptions\n onChange={setTags}\n disabled={isDisabled}\n value={formData || []}\n inputValue={inputValue}\n loading={loading}\n options={tagOptions}\n ChipProps={{ size: 'small' }}\n renderOption={option =>\n showCounts ? `${option} (${existingTags?.[option]})` : option\n }\n renderInput={params => (\n <TextField\n {...params}\n label={title}\n disabled={isDisabled}\n onChange={e => setInputValue(e.target.value)}\n error={inputError}\n FormHelperTextProps={{ margin: 'dense', style: { marginLeft: 0 } }}\n />\n )}\n />\n </ScaffolderField>\n );\n};\n"],"names":["BuiAutocomplete","Autocomplete","TextField"],"mappings":"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"}
@@ -17,7 +17,9 @@ const AzureRepoPicker = (props) => {
17
17
  rawErrors,
18
18
  state,
19
19
  onChange,
20
- isDisabled
20
+ isDisabled,
21
+ ownerLabel,
22
+ ownerDescription
21
23
  } = props;
22
24
  const { t } = useTranslationRef(scaffolderTranslationRef);
23
25
  const { organization, project } = state;
@@ -32,8 +34,8 @@ const AzureRepoPicker = (props) => {
32
34
  Select$1,
33
35
  {
34
36
  className: overrides.select,
35
- label: t("fields.azureRepoPicker.organization.title"),
36
- description: t("fields.azureRepoPicker.organization.description"),
37
+ label: ownerLabel ?? t("fields.azureRepoPicker.organization.title"),
38
+ description: ownerDescription ?? t("fields.azureRepoPicker.organization.description"),
37
39
  isDisabled: isDisabled || allowedOrganizations.length === 1,
38
40
  isInvalid: rawErrors?.length > 0 && !organization,
39
41
  selectedKey: organization ?? null,
@@ -48,8 +50,8 @@ const AzureRepoPicker = (props) => {
48
50
  return /* @__PURE__ */ jsx(
49
51
  TextField,
50
52
  {
51
- label: t("fields.azureRepoPicker.organization.title"),
52
- description: t("fields.azureRepoPicker.organization.description"),
53
+ label: ownerLabel ?? t("fields.azureRepoPicker.organization.title"),
54
+ description: ownerDescription ?? t("fields.azureRepoPicker.organization.description"),
53
55
  onChange: (value) => onChange({ organization: value }),
54
56
  isDisabled,
55
57
  value: organization ?? "",
@@ -113,21 +115,21 @@ const AzureRepoPicker = (props) => {
113
115
  Select,
114
116
  {
115
117
  native: true,
116
- label: t("fields.azureRepoPicker.organization.title"),
118
+ label: ownerLabel ?? t("fields.azureRepoPicker.organization.title"),
117
119
  onChange: (s) => onChange({ organization: String(Array.isArray(s) ? s[0] : s) }),
118
120
  disabled: isDisabled || allowedOrganizations.length === 1,
119
121
  selected: organization,
120
122
  items: organizationItems
121
123
  }
122
124
  ),
123
- /* @__PURE__ */ jsx(FormHelperText, { children: t("fields.azureRepoPicker.organization.description") })
125
+ /* @__PURE__ */ jsx(FormHelperText, { children: ownerDescription ?? t("fields.azureRepoPicker.organization.description") })
124
126
  ] }) : /* @__PURE__ */ jsx(
125
127
  MuiTextField,
126
128
  {
127
129
  id: "orgInput",
128
- label: t("fields.azureRepoPicker.organization.title"),
130
+ label: ownerLabel ?? t("fields.azureRepoPicker.organization.title"),
129
131
  onChange: (e) => onChange({ organization: e.target.value }),
130
- helperText: t("fields.azureRepoPicker.organization.description"),
132
+ helperText: ownerDescription ?? t("fields.azureRepoPicker.organization.description"),
131
133
  disabled: isDisabled,
132
134
  value: organization
133
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AzureRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/AzureRepoPicker.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 */\n\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport MuiTextField from '@material-ui/core/TextField';\nimport { BaseRepoUrlPickerProps } from './types';\nimport { Select as MuiSelect, SelectItem } from '@backstage/core-components';\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 AzureRepoPicker = (\n props: BaseRepoUrlPickerProps<{\n allowedOrganizations?: string[];\n allowedProject?: string[];\n }>,\n) => {\n const theme = useScaffolderTheme();\n const {\n allowedOrganizations = [],\n allowedProject = [],\n rawErrors,\n state,\n onChange,\n isDisabled,\n } = props;\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const { organization, project } = state;\n\n if (theme === 'bui') {\n const renderOrganizationPicker = () => {\n if (allowedOrganizations?.length) {\n const organizationItems = allowedOrganizations.map(i => ({\n label: i,\n value: i,\n }));\n\n return (\n <BuiSelect\n className={overrides.select}\n label={t('fields.azureRepoPicker.organization.title')}\n description={t('fields.azureRepoPicker.organization.description')}\n isDisabled={isDisabled || allowedOrganizations.length === 1}\n isInvalid={rawErrors?.length > 0 && !organization}\n selectedKey={organization ?? null}\n onSelectionChange={(key: Key | null) => {\n if (key !== null) onChange({ organization: String(key) });\n }}\n options={organizationItems}\n isRequired\n />\n );\n }\n\n return (\n <BuiTextField\n label={t('fields.azureRepoPicker.organization.title')}\n description={t('fields.azureRepoPicker.organization.description')}\n onChange={value => onChange({ organization: value })}\n isDisabled={isDisabled}\n value={organization ?? ''}\n isInvalid={rawErrors?.length > 0 && !organization}\n isRequired\n />\n );\n };\n\n const renderProjectPicker = () => {\n if (allowedProject?.length) {\n const projectItems = allowedProject.map(i => ({\n label: i,\n value: i,\n }));\n\n return (\n <BuiSelect\n className={overrides.select}\n label={t('fields.azureRepoPicker.project.title')}\n description={t('fields.azureRepoPicker.project.description')}\n isDisabled={isDisabled || allowedProject.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 return (\n <BuiTextField\n label={t('fields.azureRepoPicker.project.title')}\n description={t('fields.azureRepoPicker.project.description')}\n onChange={value => onChange({ project: value })}\n value={project ?? ''}\n isDisabled={isDisabled}\n isInvalid={rawErrors?.length > 0 && !project}\n isRequired\n />\n );\n };\n\n return (\n <>\n {renderOrganizationPicker()}\n {renderProjectPicker()}\n </>\n );\n }\n\n const organizationItems: SelectItem[] = allowedOrganizations\n ? allowedOrganizations.map(i => ({ label: i, value: i }))\n : [{ label: 'Loading...', value: 'loading' }];\n\n const projectItems: SelectItem[] = allowedProject\n ? allowedProject.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 && !organization}\n >\n {allowedOrganizations?.length ? (\n <>\n <MuiSelect\n native\n label={t('fields.azureRepoPicker.organization.title')}\n onChange={s =>\n onChange({ organization: String(Array.isArray(s) ? s[0] : s) })\n }\n disabled={isDisabled || allowedOrganizations.length === 1}\n selected={organization}\n items={organizationItems}\n />\n <FormHelperText>\n {t('fields.azureRepoPicker.organization.description')}\n </FormHelperText>\n </>\n ) : (\n <MuiTextField\n id=\"orgInput\"\n label={t('fields.azureRepoPicker.organization.title')}\n onChange={e => onChange({ organization: e.target.value })}\n helperText={t('fields.azureRepoPicker.organization.description')}\n disabled={isDisabled}\n value={organization}\n />\n )}\n </FormControl>\n <FormControl\n margin=\"normal\"\n required\n error={rawErrors?.length > 0 && !project}\n >\n {allowedProject?.length ? (\n <>\n <MuiSelect\n native\n label={t('fields.azureRepoPicker.project.title')}\n onChange={s =>\n onChange({ project: String(Array.isArray(s) ? s[0] : s) })\n }\n disabled={isDisabled || allowedProject.length === 1}\n selected={project}\n items={projectItems}\n />\n <FormHelperText>\n {t('fields.azureRepoPicker.project.description')}\n </FormHelperText>\n </>\n ) : (\n <MuiTextField\n id=\"projectInput\"\n label={t('fields.azureRepoPicker.project.title')}\n onChange={e => onChange({ project: e.target.value })}\n value={project}\n disabled={isDisabled}\n helperText={t('fields.azureRepoPicker.project.description')}\n />\n )}\n </FormControl>\n </>\n );\n};\n"],"names":["organizationItems","BuiSelect","BuiTextField","projectItems","MuiSelect"],"mappings":"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"}
1
+ {"version":3,"file":"AzureRepoPicker.esm.js","sources":["../../../../src/components/fields/RepoUrlPicker/AzureRepoPicker.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 */\n\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport MuiTextField from '@material-ui/core/TextField';\nimport { BaseRepoUrlPickerProps } from './types';\nimport { Select as MuiSelect, SelectItem } from '@backstage/core-components';\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 AzureRepoPicker = (\n props: BaseRepoUrlPickerProps<{\n allowedOrganizations?: string[];\n allowedProject?: string[];\n ownerLabel?: string;\n ownerDescription?: string;\n }>,\n) => {\n const theme = useScaffolderTheme();\n const {\n allowedOrganizations = [],\n allowedProject = [],\n rawErrors,\n state,\n onChange,\n isDisabled,\n ownerLabel,\n ownerDescription,\n } = props;\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const { organization, project } = state;\n\n if (theme === 'bui') {\n const renderOrganizationPicker = () => {\n if (allowedOrganizations?.length) {\n const organizationItems = allowedOrganizations.map(i => ({\n label: i,\n value: i,\n }));\n\n return (\n <BuiSelect\n className={overrides.select}\n label={ownerLabel ?? t('fields.azureRepoPicker.organization.title')}\n description={\n ownerDescription ??\n t('fields.azureRepoPicker.organization.description')\n }\n isDisabled={isDisabled || allowedOrganizations.length === 1}\n isInvalid={rawErrors?.length > 0 && !organization}\n selectedKey={organization ?? null}\n onSelectionChange={(key: Key | null) => {\n if (key !== null) onChange({ organization: String(key) });\n }}\n options={organizationItems}\n isRequired\n />\n );\n }\n\n return (\n <BuiTextField\n label={ownerLabel ?? t('fields.azureRepoPicker.organization.title')}\n description={\n ownerDescription ??\n t('fields.azureRepoPicker.organization.description')\n }\n onChange={value => onChange({ organization: value })}\n isDisabled={isDisabled}\n value={organization ?? ''}\n isInvalid={rawErrors?.length > 0 && !organization}\n isRequired\n />\n );\n };\n\n const renderProjectPicker = () => {\n if (allowedProject?.length) {\n const projectItems = allowedProject.map(i => ({\n label: i,\n value: i,\n }));\n\n return (\n <BuiSelect\n className={overrides.select}\n label={t('fields.azureRepoPicker.project.title')}\n description={t('fields.azureRepoPicker.project.description')}\n isDisabled={isDisabled || allowedProject.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 return (\n <BuiTextField\n label={t('fields.azureRepoPicker.project.title')}\n description={t('fields.azureRepoPicker.project.description')}\n onChange={value => onChange({ project: value })}\n value={project ?? ''}\n isDisabled={isDisabled}\n isInvalid={rawErrors?.length > 0 && !project}\n isRequired\n />\n );\n };\n\n return (\n <>\n {renderOrganizationPicker()}\n {renderProjectPicker()}\n </>\n );\n }\n\n const organizationItems: SelectItem[] = allowedOrganizations\n ? allowedOrganizations.map(i => ({ label: i, value: i }))\n : [{ label: 'Loading...', value: 'loading' }];\n\n const projectItems: SelectItem[] = allowedProject\n ? allowedProject.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 && !organization}\n >\n {allowedOrganizations?.length ? (\n <>\n <MuiSelect\n native\n label={\n ownerLabel ?? t('fields.azureRepoPicker.organization.title')\n }\n onChange={s =>\n onChange({ organization: String(Array.isArray(s) ? s[0] : s) })\n }\n disabled={isDisabled || allowedOrganizations.length === 1}\n selected={organization}\n items={organizationItems}\n />\n <FormHelperText>\n {ownerDescription ??\n t('fields.azureRepoPicker.organization.description')}\n </FormHelperText>\n </>\n ) : (\n <MuiTextField\n id=\"orgInput\"\n label={ownerLabel ?? t('fields.azureRepoPicker.organization.title')}\n onChange={e => onChange({ organization: e.target.value })}\n helperText={\n ownerDescription ??\n t('fields.azureRepoPicker.organization.description')\n }\n disabled={isDisabled}\n value={organization}\n />\n )}\n </FormControl>\n <FormControl\n margin=\"normal\"\n required\n error={rawErrors?.length > 0 && !project}\n >\n {allowedProject?.length ? (\n <>\n <MuiSelect\n native\n label={t('fields.azureRepoPicker.project.title')}\n onChange={s =>\n onChange({ project: String(Array.isArray(s) ? s[0] : s) })\n }\n disabled={isDisabled || allowedProject.length === 1}\n selected={project}\n items={projectItems}\n />\n <FormHelperText>\n {t('fields.azureRepoPicker.project.description')}\n </FormHelperText>\n </>\n ) : (\n <MuiTextField\n id=\"projectInput\"\n label={t('fields.azureRepoPicker.project.title')}\n onChange={e => onChange({ project: e.target.value })}\n value={project}\n disabled={isDisabled}\n helperText={t('fields.azureRepoPicker.project.description')}\n />\n )}\n </FormControl>\n </>\n );\n};\n"],"names":["organizationItems","BuiSelect","BuiTextField","projectItems","MuiSelect"],"mappings":"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"}
@@ -24,7 +24,9 @@ const BitbucketRepoPicker = (props) => {
24
24
  rawErrors,
25
25
  state,
26
26
  accessToken,
27
- isDisabled
27
+ isDisabled,
28
+ ownerLabel,
29
+ ownerDescription
28
30
  } = props;
29
31
  const { t } = useTranslationRef(scaffolderTranslationRef);
30
32
  const { host, workspace, project } = state;
@@ -98,8 +100,8 @@ const BitbucketRepoPicker = (props) => {
98
100
  Select$1,
99
101
  {
100
102
  className: overrides.select,
101
- label: t("fields.bitbucketRepoPicker.workspaces.title"),
102
- description: t("fields.bitbucketRepoPicker.workspaces.description"),
103
+ label: ownerLabel ?? t("fields.bitbucketRepoPicker.workspaces.title"),
104
+ description: ownerDescription ?? t("fields.bitbucketRepoPicker.workspaces.description"),
103
105
  isDisabled: isDisabled || allowedOwners.length === 1,
104
106
  isInvalid: rawErrors?.length > 0 && !workspace,
105
107
  selectedKey: workspace ?? null,
@@ -118,8 +120,8 @@ const BitbucketRepoPicker = (props) => {
118
120
  return /* @__PURE__ */ jsx(
119
121
  Autocomplete,
120
122
  {
121
- label: t("fields.bitbucketRepoPicker.workspaces.inputTitle"),
122
- description: t("fields.bitbucketRepoPicker.workspaces.description"),
123
+ label: ownerLabel ?? t("fields.bitbucketRepoPicker.workspaces.inputTitle"),
124
+ description: ownerDescription ?? t("fields.bitbucketRepoPicker.workspaces.description"),
123
125
  inputValue: workspace ?? "",
124
126
  onInputChange: (value) => onChange({ workspace: value }),
125
127
  onSelectionChange: (key) => {
@@ -196,7 +198,7 @@ const BitbucketRepoPicker = (props) => {
196
198
  Select,
197
199
  {
198
200
  native: true,
199
- label: t("fields.bitbucketRepoPicker.workspaces.title"),
201
+ label: ownerLabel ?? t("fields.bitbucketRepoPicker.workspaces.title"),
200
202
  onChange: (s) => onChange({ workspace: String(Array.isArray(s) ? s[0] : s) }),
201
203
  disabled: isDisabled || allowedOwners.length === 1,
202
204
  selected: workspace,
@@ -214,7 +216,7 @@ const BitbucketRepoPicker = (props) => {
214
216
  MuiTextField,
215
217
  {
216
218
  ...params,
217
- label: t("fields.bitbucketRepoPicker.workspaces.inputTitle"),
219
+ label: ownerLabel ?? t("fields.bitbucketRepoPicker.workspaces.inputTitle"),
218
220
  disabled: isDisabled,
219
221
  required: true
220
222
  }
@@ -224,7 +226,7 @@ const BitbucketRepoPicker = (props) => {
224
226
  autoSelect: true
225
227
  }
226
228
  ),
227
- /* @__PURE__ */ jsx(FormHelperText, { children: t("fields.bitbucketRepoPicker.workspaces.description") })
229
+ /* @__PURE__ */ jsx(FormHelperText, { children: ownerDescription ?? t("fields.bitbucketRepoPicker.workspaces.description") })
228
230
  ]
229
231
  }
230
232
  ),
@@ -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":";;;;;;;;;;;;;;;;;AA0CO,MAAM,mBAAA,GAAsB,CACjC,KAAA,KAOG;AACH,EAAA,MAAM,QAAQ,kBAAA,EAAmB;AACjC,EAAA,MAAM;AAAA,IACJ,gBAAgB,EAAC;AAAA,IACjB,kBAAkB,EAAC;AAAA,IACnB,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,OAAA,EAAQ,GAAI,KAAA;AAErC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,KAAS,eAAA,IAAmB,aAAA,CAAc,MAAA,EAAQ;AACpD,MAAA,QAAA,CAAS,EAAE,SAAA,EAAW,aAAA,CAAc,CAAC,GAAG,CAAA;AAAA,IAC1C;AAAA,EACF,CAAA,EAAG,CAAC,aAAA,EAAe,IAAA,EAAM,QAAQ,CAAC,CAAA;AAElC,EAAA,MAAM,aAAA,GAAgB,OAAO,gBAAgB,CAAA;AAE7C,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,QAAA,CAAmB,EAAE,CAAA;AAC3E,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,QAAA,CAAmB,EAAE,CAAA;AAGvE,EAAA,MAAM,yBAAA,GAA4B,YAAY,MAAM;AAClD,IAAA,IACE,CAAC,aAAA,CAAc,YAAA,IACf,CAAC,WAAA,IACD,SAAS,eAAA,EACT;AACA,MAAA,sBAAA,CAAuB,EAAE,CAAA;AACzB,MAAA;AAAA,IACF;AAEA,IAAA,aAAA,CACG,YAAA,CAAa;AAAA,MACZ,SAAS,EAAC;AAAA,MACV,KAAA,EAAO,WAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACX,CAAA,CACA,IAAA,CAAK,CAAC,EAAE,SAAQ,KAAM;AACrB,MAAA,sBAAA,CAAuB,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,IAC/C,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACX,MAAA,sBAAA,CAAuB,EAAE,CAAA;AAAA,IAC3B,CAAC,CAAA;AAAA,EACL,CAAA,EAAG,CAAC,aAAA,EAAe,WAAA,EAAa,IAAI,CAAC,CAAA;AAErC,EAAA,WAAA,CAAY,yBAAA,EAA2B,GAAA,EAAK,CAAC,yBAAyB,CAAC,CAAA;AAGvE,EAAA,MAAM,uBAAA,GAA0B,YAAY,MAAM;AAChD,IAAA,IACE,CAAC,cAAc,YAAA,IACf,CAAC,eACD,IAAA,KAAS,eAAA,IACT,CAAC,SAAA,EACD;AACA,MAAA,oBAAA,CAAqB,EAAE,CAAA;AACvB,MAAA;AAAA,IACF;AAEA,IAAA,aAAA,CACG,YAAA,CAAa;AAAA,MACZ,KAAA,EAAO,WAAA;AAAA,MACP,QAAA,EAAU,UAAA;AAAA,MACV,OAAA,EAAS,EAAE,SAAA,EAAU;AAAA,MACrB,QAAA,EAAU;AAAA,KACX,CAAA,CACA,IAAA,CAAK,CAAC,EAAE,SAAQ,KAAM;AACrB,MAAA,oBAAA,CAAqB,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,IAC7C,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACX,MAAA,oBAAA,CAAqB,EAAE,CAAA;AAAA,IACzB,CAAC,CAAA;AAAA,EACL,GAAG,CAAC,aAAA,EAAe,WAAA,EAAa,IAAA,EAAM,SAAS,CAAC,CAAA;AAEhD,EAAA,WAAA,CAAY,uBAAA,EAAyB,GAAA,EAAK,CAAC,uBAAuB,CAAC,CAAA;AAGnE,EAAA,MAAM,2BAAA,GAA8B,YAAY,MAAM;AACpD,IAAA,IACE,CAAC,aAAA,CAAc,YAAA,IACf,CAAC,WAAA,IACD,SAAS,eAAA,IACT,CAAC,SAAA,IACD,CAAC,OAAA,EACD;AACA,MAAA,QAAA,CAAS,EAAE,cAAA,EAAgB,EAAC,EAAG,CAAA;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,aAAA,CACG,YAAA,CAAa;AAAA,MACZ,KAAA,EAAO,WAAA;AAAA,MACP,QAAA,EAAU,cAAA;AAAA,MACV,OAAA,EAAS,EAAE,SAAA,EAAW,OAAA,EAAQ;AAAA,MAC9B,QAAA,EAAU;AAAA,KACX,CAAA,CACA,IAAA,CAAK,CAAC,EAAE,SAAQ,KAAM;AACrB,MAAA,QAAA,CAAS;AAAA,QACP,cAAA,EAAgB,QAAQ,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,IAAA,EAAM,CAAA,CAAE,IAAG,CAAE;AAAA,OAClD,CAAA;AAAA,IACH,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACX,MAAA,QAAA,CAAS,EAAE,cAAA,EAAgB,EAAC,EAAG,CAAA;AAAA,IACjC,CAAC,CAAA;AAAA,EACL,CAAA,EAAG,CAAC,aAAA,EAAe,WAAA,EAAa,MAAM,SAAA,EAAW,OAAA,EAAS,QAAQ,CAAC,CAAA;AAEnE,EAAA,WAAA,CAAY,2BAAA,EAA6B,GAAA,EAAK,CAAC,2BAA2B,CAAC,CAAA;AAE3E,EAAA,IAAI,UAAU,KAAA,EAAO;AACnB,IAAA,MAAM,wBAAwB,MAAM;AAClC,MAAA,IAAI,IAAA,KAAS,iBAAiB,OAAO,IAAA;AAErC,MAAA,IAAI,eAAe,MAAA,EAAQ;AACzB,QAAA,MAAMA,WAAAA,GAAa,cAAc,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE,CAAE,CAAA;AAElE,QAAA,uBACE,GAAA;AAAA,UAACC,QAAA;AAAA,UAAA;AAAA,YACC,WAAW,SAAA,CAAU,MAAA;AAAA,YACrB,KAAA,EACE,UAAA,IAAc,CAAA,CAAE,6CAA6C,CAAA;AAAA,YAE/D,WAAA,EACE,gBAAA,IACA,CAAA,CAAE,mDAAmD,CAAA;AAAA,YAEvD,UAAA,EAAY,UAAA,IAAc,aAAA,CAAc,MAAA,KAAW,CAAA;AAAA,YACnD,SAAA,EAAW,SAAA,EAAW,MAAA,GAAS,CAAA,IAAK,CAAC,SAAA;AAAA,YACrC,aAAa,SAAA,IAAa,IAAA;AAAA,YAC1B,iBAAA,EAAmB,CAAC,GAAA,KAAoB;AACtC,cAAA,IAAI,GAAA,KAAQ,MAAM,QAAA,CAAS,EAAE,WAAW,MAAA,CAAO,GAAG,GAAG,CAAA;AAAA,YACvD,CAAA;AAAA,YACA,OAAA,EAASD,WAAAA;AAAA,YACT,UAAA,EAAU;AAAA;AAAA,SACZ;AAAA,MAEJ;AAEA,MAAA,MAAM,gBAAA,GAAmB,mBAAA,CAAoB,GAAA,CAAI,CAAA,CAAA,MAAM;AAAA,QACrD,KAAA,EAAO,CAAA;AAAA,QACP,KAAA,EAAO;AAAA,OACT,CAAE,CAAA;AAEF,MAAA,uBACE,GAAA;AAAA,QAACE,YAAA;AAAA,QAAA;AAAA,UACC,KAAA,EACE,UAAA,IAAc,CAAA,CAAE,kDAAkD,CAAA;AAAA,UAEpE,WAAA,EACE,gBAAA,IACA,CAAA,CAAE,mDAAmD,CAAA;AAAA,UAEvD,YAAY,SAAA,IAAa,EAAA;AAAA,UACzB,eAAe,CAAA,KAAA,KAAS,QAAA,CAAS,EAAE,SAAA,EAAW,OAAO,CAAA;AAAA,UACrD,iBAAA,EAAmB,CAAC,GAAA,KAAoB;AACtC,YAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,cAAA,QAAA,CAAS,EAAE,SAAA,EAAW,MAAA,CAAO,GAAG,GAAG,CAAA;AAAA,YACrC;AAAA,UACF,CAAA;AAAA,UACA,OAAA,EAAS,gBAAA;AAAA,UACT,UAAA;AAAA,UACA,UAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAW,SAAA,EAAW,MAAA,GAAS,CAAA,IAAK,CAAC;AAAA;AAAA,OACvC;AAAA,IAEJ,CAAA;AAEA,IAAA,MAAM,sBAAsB,MAAM;AAChC,MAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,QAAA,MAAMC,aAAAA,GAAe,gBAAgB,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE,CAAE,CAAA;AAEtE,QAAA,uBACE,GAAA;AAAA,UAACF,QAAA;AAAA,UAAA;AAAA,YACC,WAAW,SAAA,CAAU,MAAA;AAAA,YACrB,KAAA,EAAO,EAAE,0CAA0C,CAAA;AAAA,YACnD,WAAA,EAAa,EAAE,gDAAgD,CAAA;AAAA,YAC/D,UAAA,EAAY,UAAA,IAAc,eAAA,CAAgB,MAAA,KAAW,CAAA;AAAA,YACrD,SAAA,EAAW,SAAA,EAAW,MAAA,GAAS,CAAA,IAAK,CAAC,OAAA;AAAA,YACrC,aAAa,OAAA,IAAW,IAAA;AAAA,YACxB,iBAAA,EAAmB,CAAC,GAAA,KAAoB;AACtC,cAAA,IAAI,GAAA,KAAQ,MAAM,QAAA,CAAS,EAAE,SAAS,MAAA,CAAO,GAAG,GAAG,CAAA;AAAA,YACrD,CAAA;AAAA,YACA,OAAA,EAASE,aAAAA;AAAA,YACT,UAAA,EAAU;AAAA;AAAA,SACZ;AAAA,MAEJ;AAEA,MAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,GAAA,CAAI,CAAA,CAAA,MAAM;AAAA,QACjD,KAAA,EAAO,CAAA;AAAA,QACP,KAAA,EAAO;AAAA,OACT,CAAE,CAAA;AAEF,MAAA,uBACE,GAAA;AAAA,QAACD,YAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,+CAA+C,CAAA;AAAA,UACxD,WAAA,EAAa,EAAE,gDAAgD,CAAA;AAAA,UAC/D,YAAY,OAAA,IAAW,EAAA;AAAA,UACvB,eAAe,CAAA,KAAA,KAAS,QAAA,CAAS,EAAE,OAAA,EAAS,OAAO,CAAA;AAAA,UACnD,iBAAA,EAAmB,CAAC,GAAA,KAAoB;AACtC,YAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,cAAA,QAAA,CAAS,EAAE,OAAA,EAAS,MAAA,CAAO,GAAG,GAAG,CAAA;AAAA,YACnC;AAAA,UACF,CAAA;AAAA,UACA,OAAA,EAAS,cAAA;AAAA,UACT,UAAA;AAAA,UACA,UAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAW,SAAA,EAAW,MAAA,GAAS,CAAA,IAAK,CAAC;AAAA;AAAA,OACvC;AAAA,IAEJ,CAAA;AAEA,IAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,qBAAA,EAAsB;AAAA,MACtB,mBAAA;AAAoB,KAAA,EACvB,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,UAAA,GAA2B,aAAA,GAC7B,aAAA,EAAe,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE,CAAE,CAAA,GAChD,EAAC;AACL,EAAA,MAAM,YAAA,GAA6B,eAAA,GAC/B,eAAA,EAAiB,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE,CAAE,CAAA,GAClD,EAAC;AAEL,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA,KAAS,eAAA,oBACR,IAAA;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,QAEhC,QAAA,EAAA;AAAA,UAAA,aAAA,EAAe,MAAA,mBACd,GAAA;AAAA,YAACE,MAAA;AAAA,YAAA;AAAA,cACC,MAAA,EAAM,IAAA;AAAA,cACN,KAAA,EACE,UAAA,IAAc,CAAA,CAAE,6CAA6C,CAAA;AAAA,cAE/D,QAAA,EAAU,CAAA,CAAA,KACR,QAAA,CAAS,EAAE,WAAW,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAI,CAAA,CAAE,CAAC,CAAA,GAAI,CAAC,GAAG,CAAA;AAAA,cAE7D,QAAA,EAAU,UAAA,IAAc,aAAA,CAAc,MAAA,KAAW,CAAA;AAAA,cACjD,QAAA,EAAU,SAAA;AAAA,cACV,KAAA,EAAO;AAAA;AAAA,WACT,mBAEA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,SAAA;AAAA,cACP,QAAA,EAAU,CAAC,CAAA,EAAG,QAAA,KAAa;AACzB,gBAAA,QAAA,CAAS,EAAE,SAAA,EAAW,QAAA,IAAY,EAAA,EAAI,CAAA;AAAA,cACxC,CAAA;AAAA,cACA,OAAA,EAAS,mBAAA;AAAA,cACT,aAAa,CAAA,MAAA,qBACX,GAAA;AAAA,gBAAC,YAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAA;AAAA,kBACJ,KAAA,EACE,UAAA,IACA,CAAA,CAAE,kDAAkD,CAAA;AAAA,kBAEtD,QAAA,EAAU,UAAA;AAAA,kBACV,QAAA,EAAQ;AAAA;AAAA,eACV;AAAA,cAEF,QAAA,EAAU,UAAA;AAAA,cACV,QAAA,EAAQ,IAAA;AAAA,cACR,UAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BAEF,GAAA,CAAC,cAAA,EAAA,EACE,QAAA,EAAA,gBAAA,IACC,CAAA,CAAE,mDAAmD,CAAA,EACzD;AAAA;AAAA;AAAA,KACF;AAAA,oBAEF,IAAA;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,OAAA;AAAA,QAEhC,QAAA,EAAA;AAAA,UAAA,eAAA,EAAiB,MAAA,mBAChB,GAAA;AAAA,YAACA,MAAA;AAAA,YAAA;AAAA,cACC,MAAA,EAAM,IAAA;AAAA,cACN,KAAA,EAAO,EAAE,0CAA0C,CAAA;AAAA,cACnD,QAAA,EAAU,CAAA,CAAA,KACR,QAAA,CAAS,EAAE,SAAS,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAI,CAAA,CAAE,CAAC,CAAA,GAAI,CAAC,GAAG,CAAA;AAAA,cAE3D,QAAA,EAAU,UAAA,IAAc,eAAA,CAAgB,MAAA,KAAW,CAAA;AAAA,cACnD,QAAA,EAAU,OAAA;AAAA,cACV,KAAA,EAAO;AAAA;AAAA,WACT,mBAEA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,OAAA;AAAA,cACP,QAAA,EAAU,CAAC,CAAA,EAAG,QAAA,KAAa;AACzB,gBAAA,QAAA,CAAS,EAAE,OAAA,EAAS,QAAA,IAAY,EAAA,EAAI,CAAA;AAAA,cACtC,CAAA;AAAA,cACA,OAAA,EAAS,iBAAA;AAAA,cACT,QAAA,EAAU,UAAA;AAAA,cACV,aAAa,CAAA,MAAA,qBACX,GAAA;AAAA,gBAAC,YAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAA;AAAA,kBACJ,KAAA,EAAO,EAAE,+CAA+C,CAAA;AAAA,kBACxD,QAAA,EAAU,UAAA;AAAA,kBACV,QAAA,EAAQ;AAAA;AAAA,eACV;AAAA,cAEF,QAAA,EAAQ,IAAA;AAAA,cACR,UAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BAEF,GAAA,CAAC,cAAA,EAAA,EACE,QAAA,EAAA,CAAA,CAAE,gDAAgD,CAAA,EACrD;AAAA;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -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
  ) });