diff --git a/src/renderer/components/+apps-helm-charts/helm-charts.tsx b/src/renderer/components/+apps-helm-charts/helm-charts.tsx index 348ce00969..9328cbca66 100644 --- a/src/renderer/components/+apps-helm-charts/helm-charts.tsx +++ b/src/renderer/components/+apps-helm-charts/helm-charts.tsx @@ -34,6 +34,10 @@ export class HelmCharts extends Component { return helmChartStore.getByName(chartName, repo); } + get items() { + return helmChartStore.items.filter(item => !item.deprecated); + } + showDetails = (chart: HelmChart) => { if (!chart) { navigation.merge(helmChartsURL()); @@ -72,9 +76,7 @@ export class HelmCharts extends Component { (chart: HelmChart) => chart.getAppVersion(), (chart: HelmChart) => chart.getKeywords(), ]} - filterItems={[ - (items: HelmChart[]) => items.filter(item => !item.deprecated) - ]} + items={this.items} customizeHeader={() => ( )} diff --git a/src/renderer/components/+custom-resources/crd-list.tsx b/src/renderer/components/+custom-resources/crd-list.tsx index f8b77c09a9..43d600d537 100644 --- a/src/renderer/components/+custom-resources/crd-list.tsx +++ b/src/renderer/components/+custom-resources/crd-list.tsx @@ -33,6 +33,15 @@ export class CrdList extends React.Component { return crdGroupsUrlParam.get(); } + get items() { + const selectedGroups = this.groups; + const storeItems = crdStore.items; + + return selectedGroups.length ? + storeItems.filter(item => selectedGroups.includes(item.getGroup())) : + storeItems; + } + onSelectGroup(group: string) { const groups = new Set(this.groups); @@ -62,11 +71,7 @@ export class CrdList extends React.Component { store={crdStore} sortingCallbacks={sortingCallbacks} searchFilters={Object.values(sortingCallbacks)} - filterItems={[ - (items: CustomResourceDefinition[]) => { - return selectedGroups.length ? items.filter(item => selectedGroups.includes(item.getGroup())) : items; - } - ]} + items={this.items} renderHeaderTitle="Custom Resources" customizeHeader={() => { let placeholder = <>All groups; diff --git a/src/renderer/components/item-object-list/item-list-layout.tsx b/src/renderer/components/item-object-list/item-list-layout.tsx index 5eeb7b2f11..c7871420f0 100644 --- a/src/renderer/components/item-object-list/item-list-layout.tsx +++ b/src/renderer/components/item-object-list/item-list-layout.tsx @@ -45,7 +45,6 @@ export interface ItemListLayoutProps { isClusterScoped?: boolean; hideFilters?: boolean; searchFilters?: SearchFilter[]; - filterItems?: ItemsFilter[]; // header (title, filtering, searching, etc.) showHeader?: boolean; @@ -86,7 +85,6 @@ const defaultProps: Partial = { copyClassNameFromHeadCells: true, preloadStores: true, dependentStores: [], - filterItems: [], hasDetailsView: true, onDetails: noop, virtual: true @@ -196,14 +194,8 @@ export class ItemListLayout extends React.Component { return filters.reduce((items, filter) => filter(items), items); } - @computed get allItems() { - const { filterItems, store } = this.props; - - return this.applyFilters(filterItems, store.items); - } - @computed get items() { - const { allItems, filters, filterCallbacks } = this; + const { filters, filterCallbacks } = this; const filterItems: ItemsFilter[] = []; const filterGroups = groupBy(filters, ({ type }) => type); @@ -215,9 +207,7 @@ export class ItemListLayout extends React.Component { } }); - const items = this.props.items ?? allItems; - - return this.applyFilters(filterItems, items); + return this.applyFilters(filterItems, this.props.items); } @autobind()