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,
commonExtensionApi as Common,
registerLensCore,
metricsFeature
metricsFeature,
tableFeature,
} from "@k8slens/core/renderer";
import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration";
import { registerFeature } from "@k8slens/feature-core";
@ -49,7 +50,8 @@ runInAction(() => {
keyboardShortcutsFeature,
reactApplicationFeature,
routingFeature,
metricsFeature
metricsFeature,
tableFeature,
);
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;
toggleTableColumnVisibility: ToggleTableColumnVisibility;
isTableColumnHidden: IsTableColumnHidden;
table?: TableComponent;
table: TableComponent;
}
@observer
@ -311,14 +311,11 @@ class NonInjectedItemListLayoutContent<
const items = getItems();
const selectedItems = store.pickOnlySelected(items);
if (table) {
return <table.Component tableId={tableId} columns={this.context.columns} {...this.props} />
}
return (
<div className="items box grow flex column">
<Table
<table.Component
tableId={tableId}
columns={this.context.columns}
virtual={virtual}
selectable={hasDetailsView}
sortable={sortingCallbacks}
@ -332,7 +329,7 @@ class NonInjectedItemListLayoutContent<
>
{this.renderTableHeader()}
{this.renderItems()}
</Table>
</table.Component>
<Observer>
{() => (

View File

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