diff --git a/extensions/example-extension/page.tsx b/extensions/example-extension/page.tsx index 7cf93b4cec..6516e738ff 100644 --- a/extensions/example-extension/page.tsx +++ b/extensions/example-extension/page.tsx @@ -92,10 +92,6 @@ export interface SimpleParamsPageParams { @observer export class SimpleParamsPage extends React.Component { - async componentDidMount() { - await namespaceStore.loadAll(); - } - deactivate = () => { const { extension } = this.props; @@ -137,3 +133,25 @@ export class SimpleParamsPage extends React.Component { } } +export interface NonStringParamsPageProps extends Interface.PageComponentProps { + extension: LensRendererExtension; // provided in "./renderer.tsx" +} + +export interface NonStringParamsPageParams { + exampleId: string; + namespaceId: Number; +} + +@observer +export class NonStringParamsPage extends React.Component { + render() { + const { exampleId, namespaceId } = this.props.params; + + return ( +
+

exampleId is {exampleId.get()}

+

namespaceId is {namespaceId.get()}

+
+ ); + } +} diff --git a/extensions/example-extension/renderer.tsx b/extensions/example-extension/renderer.tsx index bad8dc4844..e1dd7c648e 100644 --- a/extensions/example-extension/renderer.tsx +++ b/extensions/example-extension/renderer.tsx @@ -1,7 +1,8 @@ import { Component, Interface, K8sApi, LensRendererExtension } from "@k8slens/extensions"; import { ExamplePage, ExamplePageParams, namespaceStore, - SimplePage, SimpleParamsPage, SimpleParamsPageParams + SimplePage, SimpleParamsPage, SimpleParamsPageParams, + NonStringParamsPage, NonStringParamsPageParams } from "./page"; import React from "react"; import path from "path"; @@ -29,6 +30,20 @@ export default class ExampleExtension extends LensRendererExtension { namespace: "default" } }, + { + id: "page-with-non-string-params", + components: { + Page: (props: Interface.PageComponentProps) => { + return ; + }, + }, + params: { + exampleId: "demo", + namespaceId: { + defaultValue: 7 + } + } + }, { id: "page-with-complicated-params", components: { @@ -57,14 +72,14 @@ export default class ExampleExtension extends LensRendererExtension { clusterPageMenus: Interface.ClusterPageMenuRegistration[] = [ { - id: "top-example-menu", +// id: "top-example-menu", title: "Example extension", components: { Icon: ExampleIcon, }, }, { - parentId: "top-example-menu", +// parentId: "top-example-menu", title: "Simple Page", target: { pageId: "simple-page" @@ -74,10 +89,10 @@ export default class ExampleExtension extends LensRendererExtension { }, }, { - parentId: "top-example-menu", +// parentId: "top-example-menu", title: "Simple Params", target: { - pageId: "page-with-simple-parms", + pageId: "page-with-simple-params", params: { exampleId: "no-secret", namespace: "test" @@ -88,7 +103,21 @@ export default class ExampleExtension extends LensRendererExtension { }, }, { - parentId: "top-example-menu", +// parentId: "top-example-menu", + title: "Non-String Params", + target: { + pageId: "page-with-non-string-params", + params: { + exampleId: "A string", + namespaceId: 42 + } + }, + components: { + Icon: ExampleIcon, + }, + }, + { +// parentId: "top-example-menu", title: "Complicated Params", target: { pageId: "page-with-complicated-params"