scaffolder: merge default field extensions with custom field extensions
Signed-off-by: Mike Lewis <mtlewis@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Previously when supplying custom scaffolder field extensions, it was necessary to also include the default ones if they were needed. Since the field extensions are keyed by name, there's no harm in leaving the default ones in place when adding custom ones - if templates don't refer to them they will be ignored, and if custom ones are introduced with the same name, the custom ones will take priority over the default ones.
|
||||
|
||||
Users configuring custom field extensions can remove the default ones from the scaffolder route after this change, and they'll still be available:
|
||||
|
||||
```diff
|
||||
<Route path="/create" element={<ScaffolderPage />}>
|
||||
<ScaffolderFieldExtensions>
|
||||
- <EntityPickerFieldExtension />
|
||||
- <EntityNamePickerFieldExtension />
|
||||
- <RepoUrlPickerFieldExtension />
|
||||
- <OwnerPickerFieldExtension />
|
||||
<LowerCaseValuePickerFieldExtension />
|
||||
</ScaffolderFieldExtensions>
|
||||
</Route>
|
||||
```
|
||||
@@ -45,10 +45,6 @@ import {
|
||||
ScaffolderPage,
|
||||
scaffolderPlugin,
|
||||
ScaffolderFieldExtensions,
|
||||
RepoUrlPickerFieldExtension,
|
||||
OwnerPickerFieldExtension,
|
||||
EntityPickerFieldExtension,
|
||||
EntityNamePickerFieldExtension,
|
||||
} from '@backstage/plugin-scaffolder';
|
||||
import { SearchPage } from '@backstage/plugin-search';
|
||||
import { TechRadarPage } from '@backstage/plugin-tech-radar';
|
||||
@@ -129,10 +125,6 @@ const routes = (
|
||||
/>
|
||||
<Route path="/create" element={<ScaffolderPage />}>
|
||||
<ScaffolderFieldExtensions>
|
||||
<EntityPickerFieldExtension />
|
||||
<EntityNamePickerFieldExtension />
|
||||
<RepoUrlPickerFieldExtension />
|
||||
<OwnerPickerFieldExtension />
|
||||
<LowerCaseValuePickerFieldExtension />
|
||||
</ScaffolderFieldExtensions>
|
||||
</Route>
|
||||
|
||||
@@ -32,7 +32,7 @@ import { useElementFilter } from '@backstage/core-plugin-api';
|
||||
export const Router = () => {
|
||||
const outlet = useOutlet();
|
||||
|
||||
const foundExtensions = useElementFilter(outlet, elements =>
|
||||
const customFieldExtensions = useElementFilter(outlet, elements =>
|
||||
elements
|
||||
.selectByComponentData({
|
||||
key: FIELD_EXTENSION_WRAPPER_KEY,
|
||||
@@ -42,9 +42,15 @@ export const Router = () => {
|
||||
}),
|
||||
);
|
||||
|
||||
const fieldExtensions = foundExtensions.length
|
||||
? foundExtensions
|
||||
: DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS;
|
||||
const fieldExtensions = [
|
||||
...customFieldExtensions,
|
||||
...DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS.filter(
|
||||
({ name }) =>
|
||||
!customFieldExtensions.some(
|
||||
customFieldExtension => customFieldExtension.name === name,
|
||||
),
|
||||
),
|
||||
];
|
||||
|
||||
return (
|
||||
<Routes>
|
||||
|
||||
Reference in New Issue
Block a user