catalog: group catalog extension data refs
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Grouped all `/alpha` extension data reference exports under `catalogExtensionData`.
|
||||
@@ -13,6 +13,16 @@ import { ResolvedExtensionInputs } from '@backstage/frontend-plugin-api';
|
||||
import { ResourcePermission } from '@backstage/plugin-permission-common';
|
||||
import { RouteRef } from '@backstage/frontend-plugin-api';
|
||||
|
||||
// @alpha (undocumented)
|
||||
export const catalogExtensionData: {
|
||||
entityContentTitle: ConfigurableExtensionDataRef<string, {}>;
|
||||
entityFilterFunction: ConfigurableExtensionDataRef<
|
||||
(entity: Entity) => boolean,
|
||||
{}
|
||||
>;
|
||||
entityFilterExpression: ConfigurableExtensionDataRef<string, {}>;
|
||||
};
|
||||
|
||||
// @alpha (undocumented)
|
||||
export function createEntityCardExtension<
|
||||
TInputs extends AnyExtensionInputMap,
|
||||
@@ -26,8 +36,8 @@ export function createEntityCardExtension<
|
||||
disabled?: boolean;
|
||||
inputs?: TInputs;
|
||||
filter?:
|
||||
| typeof entityFilterFunctionExtensionDataRef.T
|
||||
| typeof entityFilterExpressionExtensionDataRef.T;
|
||||
| typeof catalogExtensionData.entityFilterFunction.T
|
||||
| typeof catalogExtensionData.entityFilterExpression.T;
|
||||
loader: (options: {
|
||||
inputs: Expand<ResolvedExtensionInputs<TInputs>>;
|
||||
}) => Promise<JSX.Element>;
|
||||
@@ -51,8 +61,8 @@ export function createEntityContentExtension<
|
||||
defaultPath: string;
|
||||
defaultTitle: string;
|
||||
filter?:
|
||||
| typeof entityFilterFunctionExtensionDataRef.T
|
||||
| typeof entityFilterExpressionExtensionDataRef.T;
|
||||
| typeof catalogExtensionData.entityFilterFunction.T
|
||||
| typeof catalogExtensionData.entityFilterExpression.T;
|
||||
loader: (options: {
|
||||
inputs: Expand<ResolvedExtensionInputs<TInputs>>;
|
||||
}) => Promise<JSX.Element>;
|
||||
@@ -62,24 +72,6 @@ export function createEntityContentExtension<
|
||||
filter?: string | undefined;
|
||||
}>;
|
||||
|
||||
// @alpha (undocumented)
|
||||
export const entityContentTitleExtensionDataRef: ConfigurableExtensionDataRef<
|
||||
string,
|
||||
{}
|
||||
>;
|
||||
|
||||
// @alpha (undocumented)
|
||||
export const entityFilterExpressionExtensionDataRef: ConfigurableExtensionDataRef<
|
||||
string,
|
||||
{}
|
||||
>;
|
||||
|
||||
// @alpha (undocumented)
|
||||
export const entityFilterFunctionExtensionDataRef: ConfigurableExtensionDataRef<
|
||||
(entity: Entity) => boolean,
|
||||
{}
|
||||
>;
|
||||
|
||||
// @alpha
|
||||
export function isOwnerOf(owner: Entity, entity: Entity): boolean;
|
||||
|
||||
|
||||
@@ -33,17 +33,17 @@ export { useEntityPermission } from './hooks/useEntityPermission';
|
||||
export { isOwnerOf } from './utils';
|
||||
|
||||
/** @alpha */
|
||||
export const entityContentTitleExtensionDataRef =
|
||||
createExtensionDataRef<string>('plugin.catalog.entity.content.title');
|
||||
|
||||
/** @alpha */
|
||||
export const entityFilterFunctionExtensionDataRef = createExtensionDataRef<
|
||||
(entity: Entity) => boolean
|
||||
>('plugin.catalog.entity.filter.fn');
|
||||
|
||||
/** @alpha */
|
||||
export const entityFilterExpressionExtensionDataRef =
|
||||
createExtensionDataRef<string>('plugin.catalog.entity.filter.expression');
|
||||
export const catalogExtensionData = {
|
||||
entityContentTitle: createExtensionDataRef<string>(
|
||||
'catalog.entity-content-title',
|
||||
),
|
||||
entityFilterFunction: createExtensionDataRef<(entity: Entity) => boolean>(
|
||||
'catalog.entity-filter-function',
|
||||
),
|
||||
entityFilterExpression: createExtensionDataRef<string>(
|
||||
'catalog.entity-filter-expression',
|
||||
),
|
||||
};
|
||||
|
||||
// TODO: Figure out how to merge with provided config schema
|
||||
/** @alpha */
|
||||
@@ -56,8 +56,8 @@ export function createEntityCardExtension<
|
||||
disabled?: boolean;
|
||||
inputs?: TInputs;
|
||||
filter?:
|
||||
| typeof entityFilterFunctionExtensionDataRef.T
|
||||
| typeof entityFilterExpressionExtensionDataRef.T;
|
||||
| typeof catalogExtensionData.entityFilterFunction.T
|
||||
| typeof catalogExtensionData.entityFilterExpression.T;
|
||||
loader: (options: {
|
||||
inputs: Expand<ResolvedExtensionInputs<TInputs>>;
|
||||
}) => Promise<JSX.Element>;
|
||||
@@ -73,8 +73,8 @@ export function createEntityCardExtension<
|
||||
disabled: options.disabled ?? true,
|
||||
output: {
|
||||
element: coreExtensionData.reactElement,
|
||||
filterFunction: entityFilterFunctionExtensionDataRef.optional(),
|
||||
filterExpression: entityFilterExpressionExtensionDataRef.optional(),
|
||||
filterFunction: catalogExtensionData.entityFilterFunction.optional(),
|
||||
filterExpression: catalogExtensionData.entityFilterExpression.optional(),
|
||||
},
|
||||
inputs: options.inputs,
|
||||
configSchema: createSchemaFromZod(z =>
|
||||
@@ -114,8 +114,8 @@ export function createEntityContentExtension<
|
||||
defaultPath: string;
|
||||
defaultTitle: string;
|
||||
filter?:
|
||||
| typeof entityFilterFunctionExtensionDataRef.T
|
||||
| typeof entityFilterExpressionExtensionDataRef.T;
|
||||
| typeof catalogExtensionData.entityFilterFunction.T
|
||||
| typeof catalogExtensionData.entityFilterExpression.T;
|
||||
loader: (options: {
|
||||
inputs: Expand<ResolvedExtensionInputs<TInputs>>;
|
||||
}) => Promise<JSX.Element>;
|
||||
@@ -133,9 +133,9 @@ export function createEntityContentExtension<
|
||||
element: coreExtensionData.reactElement,
|
||||
path: coreExtensionData.routePath,
|
||||
routeRef: coreExtensionData.routeRef.optional(),
|
||||
title: entityContentTitleExtensionDataRef,
|
||||
filterFunction: entityFilterFunctionExtensionDataRef.optional(),
|
||||
filterExpression: entityFilterExpressionExtensionDataRef.optional(),
|
||||
title: catalogExtensionData.entityContentTitle,
|
||||
filterFunction: catalogExtensionData.entityFilterFunction.optional(),
|
||||
filterExpression: catalogExtensionData.entityFilterExpression.optional(),
|
||||
},
|
||||
inputs: options.inputs,
|
||||
configSchema: createSchemaFromZod(z =>
|
||||
@@ -173,15 +173,15 @@ export function createEntityContentExtension<
|
||||
function mergeFilters(inputs: {
|
||||
options: {
|
||||
filter?:
|
||||
| typeof entityFilterFunctionExtensionDataRef.T
|
||||
| typeof entityFilterExpressionExtensionDataRef.T;
|
||||
| typeof catalogExtensionData.entityFilterFunction.T
|
||||
| typeof catalogExtensionData.entityFilterExpression.T;
|
||||
};
|
||||
config: {
|
||||
filter?: string;
|
||||
};
|
||||
}): {
|
||||
filterFunction?: typeof entityFilterFunctionExtensionDataRef.T;
|
||||
filterExpression?: typeof entityFilterExpressionExtensionDataRef.T;
|
||||
filterFunction?: typeof catalogExtensionData.entityFilterFunction.T;
|
||||
filterExpression?: typeof catalogExtensionData.entityFilterExpression.T;
|
||||
} {
|
||||
const { options, config } = inputs;
|
||||
if (config.filter) {
|
||||
|
||||
@@ -21,8 +21,7 @@ import {
|
||||
} from '@backstage/frontend-plugin-api';
|
||||
import {
|
||||
createEntityContentExtension,
|
||||
entityFilterFunctionExtensionDataRef,
|
||||
entityFilterExpressionExtensionDataRef,
|
||||
catalogExtensionData,
|
||||
} from '@backstage/plugin-catalog-react/alpha';
|
||||
|
||||
export const OverviewEntityContent = createEntityContentExtension({
|
||||
@@ -33,8 +32,8 @@ export const OverviewEntityContent = createEntityContentExtension({
|
||||
inputs: {
|
||||
cards: createExtensionInput({
|
||||
element: coreExtensionData.reactElement,
|
||||
filterFunction: entityFilterFunctionExtensionDataRef.optional(),
|
||||
filterExpression: entityFilterExpressionExtensionDataRef.optional(),
|
||||
filterFunction: catalogExtensionData.entityFilterFunction.optional(),
|
||||
filterExpression: catalogExtensionData.entityFilterExpression.optional(),
|
||||
}),
|
||||
},
|
||||
loader: async ({ inputs }) =>
|
||||
|
||||
@@ -28,7 +28,7 @@ import {
|
||||
AsyncEntityProvider,
|
||||
entityRouteRef,
|
||||
} from '@backstage/plugin-catalog-react';
|
||||
import { entityContentTitleExtensionDataRef } from '@backstage/plugin-catalog-react/alpha';
|
||||
import { catalogExtensionData } from '@backstage/plugin-catalog-react/alpha';
|
||||
import { rootRouteRef } from '../routes';
|
||||
import { useEntityFromUrl } from '../components/CatalogEntityPage/useEntityFromUrl';
|
||||
|
||||
@@ -56,7 +56,7 @@ export const CatalogEntityPage = createPageExtension({
|
||||
element: coreExtensionData.reactElement,
|
||||
path: coreExtensionData.routePath,
|
||||
routeRef: coreExtensionData.routeRef.optional(),
|
||||
title: entityContentTitleExtensionDataRef,
|
||||
title: catalogExtensionData.entityContentTitle,
|
||||
}),
|
||||
},
|
||||
loader: async ({ inputs }) => {
|
||||
|
||||
Reference in New Issue
Block a user