chore: migrate the EntityCardExtension to EntityCardBlueprint

Signed-off-by: blam <ben@blam.sh>
This commit is contained in:
blam
2024-07-23 10:32:30 +02:00
parent 5c8833cab3
commit c3f5650774
+39
View File
@@ -22,6 +22,7 @@ import {
RouteRef,
coreExtensionData,
createExtension,
createExtensionBlueprint,
createExtensionDataRef,
createSchemaFromZod,
} from '@backstage/frontend-plugin-api';
@@ -47,6 +48,44 @@ export const catalogExtensionData = {
}),
};
/** @alpha */
export const EntityCardBlueprint = createExtensionBlueprint({
kind: 'entity-card',
attachTo: { id: 'entity-content:catalog/overview', input: 'cards' },
configSchema: createSchemaFromZod(z =>
z.object({
filter: z.string().optional(),
}),
),
output: {
element: coreExtensionData.reactElement,
filterFunction: catalogExtensionData.entityFilterFunction.optional(),
filterExpression: catalogExtensionData.entityFilterExpression.optional(),
},
factory(
params: {
filter?:
| typeof catalogExtensionData.entityFilterFunction.T
| typeof catalogExtensionData.entityFilterExpression.T;
loader: () => Promise<JSX.Element>;
},
{ node, config },
) {
const ExtensionComponent = lazy(() =>
params.loader().then(element => ({ default: () => element })),
);
return {
element: (
<ExtensionBoundary node={node}>
<ExtensionComponent />
</ExtensionBoundary>
),
...mergeFilters({ config, options: params }),
};
},
});
// TODO: Figure out how to merge with provided config schema
/** @alpha */
export function createEntityCardExtension<