diff --git a/src/renderer/components/+custom-resources/crd-list.tsx b/src/renderer/components/+custom-resources/crd-list.tsx index f8b77c09a9..57959fa1d0 100644 --- a/src/renderer/components/+custom-resources/crd-list.tsx +++ b/src/renderer/components/+custom-resources/crd-list.tsx @@ -29,23 +29,31 @@ enum columnId { @observer export class CrdList extends React.Component { - @computed get groups(): string[] { + get selectedGroups(): string[] { return crdGroupsUrlParam.get(); } - onSelectGroup(group: string) { - const groups = new Set(this.groups); + @computed get items() { + if (this.selectedGroups.length) { + return crdStore.items.filter(item => this.selectedGroups.includes(item.getGroup())); + } + + return crdStore.items; // show all by default + } + + toggleSelection(group: string) { + const groups = new Set(crdGroupsUrlParam.get()); if (groups.has(group)) { - groups.delete(group); // toggle selection + groups.delete(group); } else { groups.add(group); } - crdGroupsUrlParam.set(Array.from(groups)); + crdGroupsUrlParam.set([...groups]); } render() { - const selectedGroups = this.groups; + const { items, selectedGroups } = this; const sortingCallbacks = { [columnId.kind]: (crd: CustomResourceDefinition) => crd.getResourceKind(), [columnId.group]: (crd: CustomResourceDefinition) => crd.getGroup(), @@ -60,13 +68,9 @@ export class CrdList extends React.Component { className="CrdList" isClusterScoped={true} store={crdStore} + items={items} sortingCallbacks={sortingCallbacks} searchFilters={Object.values(sortingCallbacks)} - filterItems={[ - (items: CustomResourceDefinition[]) => { - return selectedGroups.length ? items.filter(item => selectedGroups.includes(item.getGroup())) : items; - } - ]} renderHeaderTitle="Custom Resources" customizeHeader={() => { let placeholder = <>All groups; @@ -81,7 +85,8 @@ export class CrdList extends React.Component { className="group-select" placeholder={placeholder} options={Object.keys(crdStore.groups)} - onChange={({ value: group }: SelectOption) => this.onSelectGroup(group)} + onChange={({ value: group }: SelectOption) => this.toggleSelection(group)} + closeMenuOnSelect={false} controlShouldRenderValue={false} formatOptionLabel={({ value: group }: SelectOption) => { const isSelected = selectedGroups.includes(group); 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 e222f7929c..493457b2aa 100644 --- a/src/renderer/components/item-object-list/item-list-layout.tsx +++ b/src/renderer/components/item-object-list/item-list-layout.tsx @@ -45,6 +45,7 @@ export interface ItemListLayoutProps { isClusterScoped?: boolean; hideFilters?: boolean; searchFilters?: SearchFilter[]; + /** @deprecated */ filterItems?: ItemsFilter[]; // header (title, filtering, searching, etc.) diff --git a/src/renderer/components/layout/sidebar-item.tsx b/src/renderer/components/layout/sidebar-item.tsx index 6b574e265f..e2eb942db4 100644 --- a/src/renderer/components/layout/sidebar-item.tsx +++ b/src/renderer/components/layout/sidebar-item.tsx @@ -64,7 +64,8 @@ export class SidebarItem extends React.Component {
isActive} + className={cssNames("nav-item flex gaps align-center", { expandable: isExpandable })} onClick={isExpandable ? prevDefault(toggleExpand) : undefined}> {icon} {text} @@ -75,7 +76,7 @@ export class SidebarItem extends React.Component { {isExpandable && expanded && (
    - {subMenus.map(({ url, title, routePath }) => { + {subMenus.map(({ title, routePath, url = routePath }) => { const subItemId = `${id}${routePath}`; return ( @@ -84,7 +85,7 @@ export class SidebarItem extends React.Component { id={subItemId} url={url} text={title} - isActive={isActiveRoute({ exact: true, path: routePath })} + isActive={isActiveRoute({ path: url, exact: true })} /> ); })} diff --git a/src/renderer/components/layout/sidebar.tsx b/src/renderer/components/layout/sidebar.tsx index 0e9131193b..7f0ddd818f 100644 --- a/src/renderer/components/layout/sidebar.tsx +++ b/src/renderer/components/layout/sidebar.tsx @@ -66,6 +66,7 @@ export class Sidebar extends React.Component { url={crdURL({ query: { groups: group } })} subMenus={submenus} text={group} + isActive={false} /> ); }); @@ -145,7 +146,7 @@ export class Sidebar extends React.Component { focusable={false} className="pin-icon" tooltip="Compact view" - material={compact ? "keyboard_arrow_left" : "keyboard_arrow_right"} + material={compact ? "keyboard_arrow_right" : "keyboard_arrow_left"} onClick={toggle} />