mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Add optional badge to Catalog Category label (#5156)
* Add optional badge to Catalog Category label. Signed-off-by: Panu Horsmalahti <phorsmalahti@mirantis.com> * Don't render badge container if there is no badge. Change CatalogCategoryLabel interface. Signed-off-by: Panu Horsmalahti <phorsmalahti@mirantis.com> * Add badgeBackgroundColor CSS variable for extensions. Regenerate theme-vars.css. Signed-off-by: Panu Horsmalahti <phorsmalahti@mirantis.com> * Use category as prop in CatalogCategoryLabel Signed-off-by: Panu Horsmalahti <phorsmalahti@mirantis.com>
This commit is contained in:
1 parent
66330485b1
commit
ca21e0842a
8 files changed
+117
-4
No files matched your search
+23
-2
@@ -3,15 +3,18 @@
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
import React from "react";
|
||||
import { CatalogCategory, CatalogCategorySpec } from "../catalog";
|
||||
|
||||
class TestCatalogCategory extends CatalogCategory {
|
||||
class TestCatalogCategoryWithoutBadge extends CatalogCategory {
|
||||
public readonly apiVersion = "catalog.k8slens.dev/v1alpha1";
|
||||
public readonly kind = "CatalogCategory";
|
||||
|
||||
public metadata = {
|
||||
name: "Test Category",
|
||||
icon: "",
|
||||
};
|
||||
|
||||
public spec: CatalogCategorySpec = {
|
||||
group: "entity.k8slens.dev",
|
||||
versions: [],
|
||||
@@ -21,10 +24,28 @@ class TestCatalogCategory extends CatalogCategory {
|
||||
};
|
||||
}
|
||||
|
||||
class TestCatalogCategoryWithBadge extends TestCatalogCategoryWithoutBadge {
|
||||
getBadge() {
|
||||
return (<div>Test Badge</div>);
|
||||
}
|
||||
}
|
||||
|
||||
describe("CatalogCategory", () => {
|
||||
it("returns name", () => {
|
||||
const category = new TestCatalogCategory();
|
||||
const category = new TestCatalogCategoryWithoutBadge();
|
||||
|
||||
expect(category.getName()).toEqual("Test Category");
|
||||
});
|
||||
|
||||
it("doesn't return badge by default", () => {
|
||||
const category = new TestCatalogCategoryWithoutBadge();
|
||||
|
||||
expect(category.getBadge()).toEqual(null);
|
||||
});
|
||||
|
||||
it("returns a badge", () => {
|
||||
const category = new TestCatalogCategoryWithBadge();
|
||||
|
||||
expect(category.getBadge()).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -180,6 +180,15 @@ export abstract class CatalogCategory extends (EventEmitter as new () => TypedEm
|
||||
return this.metadata.name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the badge of this category.
|
||||
* Defaults to no badge.
|
||||
* The badge is displayed next to the Category name in the Catalog Category menu
|
||||
*/
|
||||
public getBadge(): React.ReactNode {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a filter for menu items of catalogAddMenu
|
||||
* @param fn The function that should return a truthy value if that menu item should be displayed
|
||||
|
||||
Reference in new issue
Block a user