diff --git a/packages/list-layout/index.ts b/packages/list-layout/index.ts index 564641a4a2..1d461d9585 100644 --- a/packages/list-layout/index.ts +++ b/packages/list-layout/index.ts @@ -1 +1,4 @@ -export * from "./kube-object-list-layout-column-injection-token"; +export * from "./src/list-layout-column"; +export * from "./src/general-kube-column-token"; +export * from "./src/kube-list-layout-column"; +export * from "./src/pod-list-layout-token"; diff --git a/packages/list-layout/package.json b/packages/list-layout/package.json index 2e4c27d195..bba0dc06e7 100644 --- a/packages/list-layout/package.json +++ b/packages/list-layout/package.json @@ -32,6 +32,7 @@ "lint:fix": "lens-lint --fix" }, "peerDependencies": { + "@k8slens/kube-object": "^1.0.0-alpha.1", "@ogre-tools/injectable": "^15.1.2", "react": "^17.0.2" }, diff --git a/packages/list-layout/src/general-kube-column-token.ts b/packages/list-layout/src/general-kube-column-token.ts new file mode 100644 index 0000000000..a67fd6e4b9 --- /dev/null +++ b/packages/list-layout/src/general-kube-column-token.ts @@ -0,0 +1,11 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getInjectionToken } from "@ogre-tools/injectable"; +import type { GeneralKubeObjectListLayoutColumn } from "./kube-list-layout-column"; + +export const kubeObjectListLayoutColumnInjectionToken = getInjectionToken({ + id: "kube-object-list-layout-column", +}); diff --git a/packages/list-layout/src/kube-list-layout-column.ts b/packages/list-layout/src/kube-list-layout-column.ts new file mode 100644 index 0000000000..3816fa8d8b --- /dev/null +++ b/packages/list-layout/src/kube-list-layout-column.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import type { KubeObject } from "@k8slens/kube-object"; +import type { ReactNode } from "react"; +import type { TableSortCallback, SearchFilter, TableCellProps } from "./list-layout-column"; + +export interface BaseKubeObjectListLayoutColumn { + id: string; + priority: number; + sortingCallBack?: TableSortCallback; + searchFilter?: SearchFilter; + header: TableCellProps | undefined | null; + content: (item: K) => ReactNode | TableCellProps; +} + +export interface GeneralKubeObjectListLayoutColumn extends BaseKubeObjectListLayoutColumn { + kind: string; + apiVersion: string | string[]; +} + +export interface SpecificKubeListLayoutColumn extends BaseKubeObjectListLayoutColumn {} diff --git a/packages/list-layout/kube-object-list-layout-column-injection-token.tsx b/packages/list-layout/src/list-layout-column.ts similarity index 75% rename from packages/list-layout/kube-object-list-layout-column-injection-token.tsx rename to packages/list-layout/src/list-layout-column.ts index a1827ff502..7b614cc839 100644 --- a/packages/list-layout/kube-object-list-layout-column-injection-token.tsx +++ b/packages/list-layout/src/list-layout-column.ts @@ -2,13 +2,13 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ + import type { ReactNode } from "react"; import type { SingleOrMany } from "@k8slens/utilities"; -import { getInjectionToken } from "@ogre-tools/injectable"; export interface ItemObject { - getId(): string; - getName(): string; + getId: () => string; + getName: () => string; } export type TableSortBy = string; @@ -80,18 +80,3 @@ export interface TableCellProps extends React.DOMAttributes { */ _nowrap?: boolean; } - -export interface KubeObjectListLayoutColumn { - id: string; - kind: string; - apiVersion: string; - priority: number; - sortingCallBack?: TableSortCallback; - searchFilter?: SearchFilter; - header: TableCellProps | undefined | null; - content: (item: Item) => ReactNode | TableCellProps; -} - -export const kubeObjectListLayoutColumnInjectionToken = getInjectionToken>({ - id: "kube-object-list-layout-column", -}); diff --git a/packages/list-layout/src/pod-list-layout-token.ts b/packages/list-layout/src/pod-list-layout-token.ts new file mode 100644 index 0000000000..c6bda35581 --- /dev/null +++ b/packages/list-layout/src/pod-list-layout-token.ts @@ -0,0 +1,12 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import type { Pod } from "@k8slens/kube-object"; +import { getInjectionToken } from "@ogre-tools/injectable"; +import type { SpecificKubeListLayoutColumn } from "./kube-list-layout-column"; + +export const podListLayoutColumnInjectionToken = getInjectionToken>({ + id: "kube-object-list-layout-column", +}); diff --git a/packages/list-layout/webpack.config.js b/packages/list-layout/webpack.config.js index b54738d0a7..3183f30179 100644 --- a/packages/list-layout/webpack.config.js +++ b/packages/list-layout/webpack.config.js @@ -1 +1 @@ -module.exports = require("@k8slens/webpack").configForReact; \ No newline at end of file +module.exports = require("@k8slens/webpack").configForNode;