From 007a0174f0252cee86a533633e4de3fbbfa2838a Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Thu, 1 Jun 2023 11:00:21 +0300 Subject: [PATCH] Add table and add-remove buttons injection tokens Signed-off-by: Alex Andreev --- packages/table/index.ts | 56 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 packages/table/index.ts diff --git a/packages/table/index.ts b/packages/table/index.ts new file mode 100644 index 0000000000..67a48d618b --- /dev/null +++ b/packages/table/index.ts @@ -0,0 +1,56 @@ +/** + * 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 { + BaseKubeObjectListLayoutColumn, + GeneralKubeObjectListLayoutColumn, + SpecificKubeListLayoutColumn, +} from "@k8slens/list-layout"; +import { getInjectionToken } from "@ogre-tools/injectable"; +import type { IComputedValue, IObservableValue } from "mobx"; + +type Column = ( + | BaseKubeObjectListLayoutColumn + | SpecificKubeListLayoutColumn + | GeneralKubeObjectListLayoutColumn +); + +export interface TableComponentProps { + tableId?: string; + columns?: Column[]; + save?: (state: object) => void; + load?: (tableId: string) => object; + initialState?: { + dataItems: IComputedValue; + headingColumns: object[]; + customizeRows?: (row: object) => object; + getRowId?: (dataItem: any) => string | number | symbol; + searchBox?: IComputedValue | IObservableValue; + } +} + +export interface TableComponent { + Component: React.ComponentType; +} + +export interface AddRemoveButtonsProps extends React.HTMLAttributes { + onAdd?: () => void; + onRemove?: () => void; + addTooltip?: React.ReactNode; + removeTooltip?: React.ReactNode; +} + +export interface AddOrRemoveButtons { + Component: React.ComponentType; +} + +export const tableComponentInjectionToken = getInjectionToken({ + id: "table-component-injection-token", +}); + +export const addOrRemoveButtonsInjectionToken = getInjectionToken({ + id: "add-or-remove-buttons-injection-token", +}); \ No newline at end of file