diff --git a/.changeset/orange-women-fry.md b/.changeset/orange-women-fry.md index 681d75c875..493a1aed57 100644 --- a/.changeset/orange-women-fry.md +++ b/.changeset/orange-women-fry.md @@ -1,5 +1,6 @@ --- '@backstage/plugin-catalog-react': patch +'@backstage/plugin-catalog': patch --- A new `filter` parameter has been added to `EntityContextMenuItemBlueprint` to make it easier to configure which entities a menu item should appear for. The `filter` parameter is a function which accepts an entity and returns a boolean. diff --git a/plugins/catalog-react/report-alpha.api.md b/plugins/catalog-react/report-alpha.api.md index f69bbe476d..595741ab67 100644 --- a/plugins/catalog-react/report-alpha.api.md +++ b/plugins/catalog-react/report-alpha.api.md @@ -16,6 +16,12 @@ import { ResourcePermission } from '@backstage/plugin-permission-common'; import { RouteRef } from '@backstage/frontend-plugin-api'; import { TranslationRef } from '@backstage/core-plugin-api/alpha'; +// @alpha +export function buildFilterFn( + filterFunction?: (entity: Entity) => boolean, + filterExpression?: string, +): (entity: Entity) => boolean; + // @alpha export const CatalogFilterBlueprint: ExtensionBlueprint<{ kind: 'catalog-filter'; @@ -334,8 +340,12 @@ export const EntityContextMenuItemBlueprint: ExtensionBlueprint<{ params: EntityContextMenuItemParams; output: ConfigurableExtensionDataRef; inputs: {}; - config: {}; - configInput: {}; + config: { + filter: EntityPredicate | undefined; + }; + configInput: { + filter?: EntityPredicate | undefined; + }; dataRefs: never; }>; @@ -343,7 +353,7 @@ export const EntityContextMenuItemBlueprint: ExtensionBlueprint<{ export type EntityContextMenuItemParams = { useProps: UseProps; icon: JSX_2.Element; - filter?: (entity: Entity) => boolean; + filter?: string | EntityPredicate | ((entity: Entity) => boolean); }; // @alpha (undocumented) diff --git a/plugins/catalog/report-alpha.api.md b/plugins/catalog/report-alpha.api.md index 54d4187536..246c7929f0 100644 --- a/plugins/catalog/report-alpha.api.md +++ b/plugins/catalog/report-alpha.api.md @@ -863,8 +863,12 @@ const _default: FrontendPlugin< 'entity-context-menu-item:catalog/copy-entity-url': ExtensionDefinition<{ kind: 'entity-context-menu-item'; name: 'copy-entity-url'; - config: {}; - configInput: {}; + config: { + filter: EntityPredicate | undefined; + }; + configInput: { + filter?: EntityPredicate | undefined; + }; output: ConfigurableExtensionDataRef< JSX_2.Element, 'core.reactElement', @@ -876,8 +880,12 @@ const _default: FrontendPlugin< 'entity-context-menu-item:catalog/inspect-entity': ExtensionDefinition<{ kind: 'entity-context-menu-item'; name: 'inspect-entity'; - config: {}; - configInput: {}; + config: { + filter: EntityPredicate | undefined; + }; + configInput: { + filter?: EntityPredicate | undefined; + }; output: ConfigurableExtensionDataRef< JSX_2.Element, 'core.reactElement', @@ -889,8 +897,12 @@ const _default: FrontendPlugin< 'entity-context-menu-item:catalog/unregister-entity': ExtensionDefinition<{ kind: 'entity-context-menu-item'; name: 'unregister-entity'; - config: {}; - configInput: {}; + config: { + filter: EntityPredicate | undefined; + }; + configInput: { + filter?: EntityPredicate | undefined; + }; output: ConfigurableExtensionDataRef< JSX_2.Element, 'core.reactElement',