1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Create table feature in core package

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Alex Andreev 2023-05-24 12:21:48 +03:00
parent ad1e095fbc
commit 6b7812d72d
5 changed files with 34 additions and 9 deletions

View File

@ -9,7 +9,8 @@ import {
rendererExtensionApi as Renderer, rendererExtensionApi as Renderer,
commonExtensionApi as Common, commonExtensionApi as Common,
registerLensCore, registerLensCore,
metricsFeature metricsFeature,
tableFeature,
} from "@k8slens/core/renderer"; } from "@k8slens/core/renderer";
import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration"; import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration";
import { registerFeature } from "@k8slens/feature-core"; import { registerFeature } from "@k8slens/feature-core";
@ -49,7 +50,8 @@ runInAction(() => {
keyboardShortcutsFeature, keyboardShortcutsFeature,
reactApplicationFeature, reactApplicationFeature,
routingFeature, routingFeature,
metricsFeature metricsFeature,
tableFeature,
); );
autoRegister({ autoRegister({

View File

@ -0,0 +1,15 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { tableComponentInjectionToken } from "@k8slens/table-tokens";
import { getInjectable } from "@ogre-tools/injectable";
import { Table } from "../../renderer/components/table/table";
const tableComponentInjectable = getInjectable({
id: "table-component",
instantiate: () => ({ Component: Table }),
injectionToken: tableComponentInjectionToken,
});
export default tableComponentInjectable;

View File

@ -0,0 +1,10 @@
import { getFeature } from "@k8slens/feature-core";
import tableComponentInjectable from "./table-component.injectable";
export const tableFeature = getFeature({
id: "core-table-feature",
register: (di) => {
di.register(tableComponentInjectable);
},
});

View File

@ -80,7 +80,7 @@ interface Dependencies {
openConfirmDialog: OpenConfirmDialog; openConfirmDialog: OpenConfirmDialog;
toggleTableColumnVisibility: ToggleTableColumnVisibility; toggleTableColumnVisibility: ToggleTableColumnVisibility;
isTableColumnHidden: IsTableColumnHidden; isTableColumnHidden: IsTableColumnHidden;
table?: TableComponent; table: TableComponent;
} }
@observer @observer
@ -311,14 +311,11 @@ class NonInjectedItemListLayoutContent<
const items = getItems(); const items = getItems();
const selectedItems = store.pickOnlySelected(items); const selectedItems = store.pickOnlySelected(items);
if (table) {
return <table.Component tableId={tableId} columns={this.context.columns} {...this.props} />
}
return ( return (
<div className="items box grow flex column"> <div className="items box grow flex column">
<Table <table.Component
tableId={tableId} tableId={tableId}
columns={this.context.columns}
virtual={virtual} virtual={virtual}
selectable={hasDetailsView} selectable={hasDetailsView}
sortable={sortingCallbacks} sortable={sortingCallbacks}
@ -332,7 +329,7 @@ class NonInjectedItemListLayoutContent<
> >
{this.renderTableHeader()} {this.renderTableHeader()}
{this.renderItems()} {this.renderItems()}
</Table> </table.Component>
<Observer> <Observer>
{() => ( {() => (

View File

@ -22,3 +22,4 @@ export * as ReactRouterDom from "react-router-dom";
export * as rendererExtensionApi from "../extensions/renderer-api"; export * as rendererExtensionApi from "../extensions/renderer-api";
export * as commonExtensionApi from "../extensions/common-api"; export * as commonExtensionApi from "../extensions/common-api";
export { metricsFeature } from "../features/metrics/metrics-feature"; export { metricsFeature } from "../features/metrics/metrics-feature";
export { tableFeature } from "../features/table/table-feature";