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

Consolidate way of passing items to ItemListLayout (#4850)

This commit is contained in:
Janne Savolainen 2022-02-11 16:32:14 +02:00 committed by GitHub
parent e626cc91d4
commit 668ac58cb3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 13 additions and 7 deletions

View File

@ -73,6 +73,7 @@ export class HelmCharts extends Component<Props> {
tableId="helm_charts"
className="HelmCharts"
store={helmChartStore}
getItems={() => helmChartStore.items}
isSelectable={false}
sortingCallbacks={{
[columnId.name]: chart => chart.getName(),

View File

@ -147,6 +147,7 @@ class NonInjectedHelmReleases extends Component<Dependencies & Props> {
<>
<ItemListLayout
store={legacyReleaseStore}
getItems={() => legacyReleaseStore.items}
preloadStores={false}
isConfigurable
tableId="helm_releases"

View File

@ -86,7 +86,9 @@ class NonInjectedPortForwards extends React.Component<Props & Dependencies> {
<ItemListLayout
isConfigurable
tableId="port_forwards"
className="PortForwards" store={this.props.portForwardStore}
className="PortForwards"
store={this.props.portForwardStore}
getItems={() => this.props.portForwardStore.items}
sortingCallbacks={{
[columnId.name]: item => item.getName(),
[columnId.namespace]: item => item.getNs(),

View File

@ -41,8 +41,7 @@ export type HeaderCustomizer = (placeholders: HeaderPlaceholders) => HeaderPlace
export interface ItemListLayoutProps<I extends ItemObject> {
tableId?: string;
className: IClassName;
items?: I[];
getItems?: () => I[];
getItems: () => I[];
store: ItemStore<I>;
dependentStores?: ItemStore<ItemObject>[];
preloadStores?: boolean;
@ -213,7 +212,7 @@ class NonInjectedItemListLayout<I extends ItemObject> extends React.Component<It
}
}
const items = this.props.getItems?.() ?? this.props.items ?? this.props.store.items;
const items = this.props.getItems();
return applyFilters(filterItems.concat(this.props.filterItems), items);
}

View File

@ -21,11 +21,14 @@ import { TooltipPosition } from "../tooltip";
import { withInjectables } from "@ogre-tools/injectable-react";
import type { ClusterFrameContext } from "../../cluster-frame-context/cluster-frame-context";
import clusterFrameContextInjectable from "../../cluster-frame-context/cluster-frame-context.injectable";
import kubeWatchApiInjectable
from "../../kube-watch-api/kube-watch-api.injectable";
import kubeWatchApiInjectable from "../../kube-watch-api/kube-watch-api.injectable";
import type { KubeWatchSubscribeStoreOptions } from "../../kube-watch-api/kube-watch-api";
export interface KubeObjectListLayoutProps<K extends KubeObject> extends ItemListLayoutProps<K> {
type ItemListLayoutPropsWithoutGetItems<K extends KubeObject> = Omit<ItemListLayoutProps<K>, "getItems">;
export interface KubeObjectListLayoutProps<K extends KubeObject> extends ItemListLayoutPropsWithoutGetItems<K> {
items?: K[];
getItems?: () => K[];
store: KubeObjectStore<K>;
dependentStores?: KubeObjectStore<KubeObject>[];
subscribeStores?: boolean;