Unverified Commit 1ac5588f authored by Jari Kolehmainen's avatar Jari Kolehmainen Committed by GitHub
Browse files

Allow to control catalog entity menu item visibility based on source (#2499)


* allow to control catalog entity menu item visibility based on source
Signed-off-by: default avatarJari Kolehmainen <jari.kolehmainen@gmail.com>

* fix
Signed-off-by: default avatarJari Kolehmainen <jari.kolehmainen@gmail.com>
parent 95ebb52f
Showing with 7 additions and 2 deletions
+7 -2
......@@ -49,11 +49,13 @@ export class KubernetesCluster implements CatalogEntity {
{
icon: "settings",
title: "Settings",
onlyVisibleForSource: "local",
onClick: async () => context.navigate(`/cluster/${this.metadata.uid}/settings`)
},
{
icon: "delete",
title: "Delete",
onlyVisibleForSource: "local",
onClick: async () => clusterStore.removeById(this.metadata.uid),
confirm: {
message: `Remove Kubernetes Cluster "${this.metadata.name} from Lens?`
......
......@@ -45,6 +45,7 @@ export interface CatalogEntityActionContext {
export type CatalogEntityContextMenu = {
icon: string;
title: string;
onlyVisibleForSource?: string; // show only if empty or if matches with entity source
onClick: () => Promise<void>;
confirm?: {
message: string;
......
......@@ -127,6 +127,7 @@ export class Catalog extends React.Component {
@autobind()
renderItemMenu(item: CatalogEntityItem) {
const menuItems = this.contextMenu.menuItems.filter((menuItem) => !menuItem.onlyVisibleForSource || menuItem.onlyVisibleForSource === item.entity.metadata.source);
const onOpen = async () => {
await item.onContextMenuOpen(this.contextMenu);
};
......@@ -139,7 +140,7 @@ export class Catalog extends React.Component {
<MenuItem key="remove-from-hotbar" onClick={() => this.removeFromHotbar(item) }>
<Icon material="clear" small interactive={true} title="Remove from hotbar"/> Remove from Hotbar
</MenuItem>
{ this.contextMenu.menuItems.map((menuItem, index) => {
{ menuItems.map((menuItem, index) => {
return (
<MenuItem key={index} onClick={() => this.onMenuItemClick(menuItem)}>
<Icon material={menuItem.icon} small interactive={true} title={menuItem.title}/> {menuItem.title}
......
......@@ -100,6 +100,7 @@ export class HotbarIcon extends React.Component<Props> {
await entity.onContextMenuOpen(this.contextMenu);
this.toggleMenu();
};
const menuItems = this.contextMenu?.menuItems.filter((menuItem) => !menuItem.onlyVisibleForSource || menuItem.onlyVisibleForSource === entity.metadata.source);
return (
<div className={className}>
......@@ -117,7 +118,7 @@ export class HotbarIcon extends React.Component<Props> {
<MenuItem key="remove-from-hotbar" onClick={() => this.removeFromHotbar(entity) }>
<Icon material="clear" small interactive={true} title="Remove from hotbar"/> Remove from Hotbar
</MenuItem>
{ this.contextMenu && this.contextMenu.menuItems.map((menuItem) => {
{ this.contextMenu && menuItems.map((menuItem) => {
return (
<MenuItem key={menuItem.title} onClick={() => this.onMenuItemClick(menuItem) }>
<Icon material={menuItem.icon} small interactive={true} title={menuItem.title}/> {menuItem.title}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment