/
NavLinkResourceCluster.tsx
35 lines (32 loc) · 1.15 KB
/
NavLinkResourceCluster.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import * as _ from 'lodash';
import { referenceForExtensionModel, ExtensionK8sModel } from '@console/internal/module/k8s';
import { NavLink, NavLinkProps } from './NavLink';
import { matchesExtensionModel, matchesModel } from './utils';
export class NavLinkResourceCluster extends NavLink<NavLinkResourceClusterProps> {
static isActive(props, resourcePath) {
if (props.model) {
return (
resourcePath === `/k8s/cluster/${referenceForExtensionModel(props.model)}` ||
_.startsWith(resourcePath, `/k8s/cluster/${referenceForExtensionModel(props.model)}`) ||
matchesExtensionModel(resourcePath, props.model)
);
}
return (
NavLink.isActive(props, resourcePath) ||
resourcePath === props.resource ||
_.startsWith(resourcePath, `${props.resource}/`) ||
matchesModel(resourcePath, props.model)
);
}
get to() {
const { model } = this.props;
if (model) {
return `/k8s/cluster/${referenceForExtensionModel(model)}`;
}
return `/k8s/cluster/${this.props.resource}`;
}
}
export type NavLinkResourceClusterProps = NavLinkProps & {
resource: string;
model?: ExtensionK8sModel;
};