add filter support for EntityContextMenuItemBlueprint

Signed-off-by: Mark Dunphy <markd@spotify.com>
This commit is contained in:
Mark Dunphy
2025-05-01 11:42:10 -04:00
parent ee613ecd90
commit 2a292db5b2
@@ -24,7 +24,8 @@ import MenuItem from '@material-ui/core/MenuItem';
import ListItemIcon from '@material-ui/core/ListItemIcon';
import ListItemText from '@material-ui/core/ListItemText';
import { useEntityContextMenu } from '../../hooks/useEntityContextMenu';
import type { Entity } from '@backstage/catalog-model';
import { useEntity } from '../../hooks/useEntity';
/** @alpha */
export type UseProps = () =>
| {
@@ -42,6 +43,7 @@ export type UseProps = () =>
export type EntityContextMenuItemParams = {
useProps: UseProps;
icon: JSX.Element;
filter?: (entity: Entity) => boolean;
};
/** @alpha */
@@ -53,6 +55,7 @@ export const EntityContextMenuItemBlueprint = createExtensionBlueprint({
const loader = async () => {
const Component = () => {
const { onMenuClose } = useEntityContextMenu();
const { entity } = useEntity();
const { title, ...menuItemProps } = params.useProps();
let handleClick = undefined;
@@ -67,6 +70,10 @@ export const EntityContextMenuItemBlueprint = createExtensionBlueprint({
};
}
if (entity && params.filter && !params.filter(entity)) {
return null;
}
return (
<MenuItem {...menuItemProps} onClick={handleClick}>
<ListItemIcon>{params.icon}</ListItemIcon>