Add ApiBlueprint for form-decorators

Signed-off-by: Tim Hansen <timbonicush@spotify.com>
This commit is contained in:
Tim Hansen
2024-12-18 15:40:25 -07:00
parent 071ef159ea
commit cfa7d68566
3 changed files with 34 additions and 1 deletions
@@ -14,8 +14,14 @@
* limitations under the License.
*/
import {
ApiBlueprint,
createApiFactory,
createExtensionInput,
} from '@backstage/frontend-plugin-api';
import { ScaffolderFormDecoratorsApi } from './types';
import { ScaffolderFormDecorator } from '@backstage/plugin-scaffolder-react/alpha';
import { formDecoratorsApiRef } from './ref';
/** @alpha */
export class DefaultScaffolderFormDecoratorsApi
@@ -37,3 +43,28 @@ export class DefaultScaffolderFormDecoratorsApi
return this.options.decorators;
}
}
/** @alpha */
export const formDecoratorsApi = ApiBlueprint.makeWithOverrides({
name: 'form-decorators',
inputs: {
// TODO: this should come from the inputs that the form decorators use
formDecorators: createExtensionInput([]),
},
factory(originalFactory, { inputs }) {
// TODO: this should come from the inputs that the form decorators use
const formDecorators =
inputs.formDecorators as unknown as ScaffolderFormDecorator[];
return originalFactory({
factory: createApiFactory({
api: formDecoratorsApiRef,
deps: {},
factory: () =>
DefaultScaffolderFormDecoratorsApi.create({
decorators: formDecorators,
}),
}),
});
},
});
+1 -1
View File
@@ -16,4 +16,4 @@
export { formDecoratorsApiRef } from './ref';
export type { ScaffolderFormDecoratorsApi } from './types';
export { DefaultScaffolderFormDecoratorsApi } from './FormDecoratorsApi';
export * from './FormDecoratorsApi';
+2
View File
@@ -33,6 +33,7 @@ import {
scaffolderApi,
} from './extensions';
import { formFieldsApi } from '@backstage/plugin-scaffolder-react/alpha';
import { formDecoratorsApi } from './api';
/** @alpha */
export default createFrontendPlugin({
@@ -53,6 +54,7 @@ export default createFrontendPlugin({
scaffolderApi,
scaffolderPage,
scaffolderNavItem,
formDecoratorsApi,
formFieldsApi,
repoUrlPickerFormField,
],