Skip to content

Commit 37acab1

Browse files
authored
Merge pull request #979 from devtron-labs/feat/ent-navigation
refactor: Extract navigation types into a dedicated module and refine…
2 parents b840f07 + dfa9ec4 commit 37acab1

7 files changed

Lines changed: 123 additions & 74 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devtron-labs/devtron-fe-common-lib",
3-
"version": "1.21.0-pre-2",
3+
"version": "1.21.0-pre-3",
44
"description": "Supporting common component library",
55
"type": "module",
66
"main": "dist/index.js",
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './types'
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
import { customEnv, Never } from 'src'
2+
3+
import { IconsProps } from '@Shared/Components'
4+
5+
export type NavigationItemID =
6+
| 'application-management-overview'
7+
| 'application-management-devtron-applications'
8+
| 'application-management-application-groups'
9+
| 'application-management-bulk-edit'
10+
| 'application-management-application-templates'
11+
| 'application-management-projects'
12+
| 'application-management-configurations'
13+
| 'application-management-policies'
14+
| 'infrastructure-management-overview'
15+
| 'infrastructure-management-applications'
16+
| 'infrastructure-management-chart-store'
17+
| 'infrastructure-management-resource-browser'
18+
| 'infrastructure-management-resource-watcher'
19+
| 'infrastructure-management-catalog-framework'
20+
| 'software-release-management-overview'
21+
| 'software-release-management-release-hub'
22+
| 'software-release-management-tenants'
23+
| 'cost-visibility-overview'
24+
| 'cost-visibility-cost-breakdown'
25+
| 'cost-visibility-configurations'
26+
| 'security-center-overview'
27+
| 'security-center-security-vulnerabilities'
28+
| 'security-center-security-enablement'
29+
| 'security-center-security-policy'
30+
| 'automation-and-enablement-jobs'
31+
| 'automation-and-enablement-alerting'
32+
| 'automation-and-enablement-incident-response'
33+
| 'automation-and-enablement-api-portal'
34+
| 'automation-and-enablement-runbook-automation'
35+
| 'global-configuration-sso-login-services'
36+
| 'global-configuration-host-urls'
37+
| 'global-configuration-external-links'
38+
| 'global-configuration-chart-repository'
39+
| 'global-configuration-cluster-and-environments'
40+
| 'global-configuration-container-oci-registry'
41+
| 'global-configuration-authorization'
42+
| 'data-protection-overview'
43+
| 'data-protection-backup-and-schedule'
44+
| 'data-protection-restores'
45+
| 'data-protection-backup-repositories'
46+
| 'data-protection-backup-locations'
47+
| 'data-protection-history-and-logs'
48+
49+
export type NavigationSubMenuItemID =
50+
| 'application-management-configurations-gitops'
51+
| 'application-management-configurations-git-accounts'
52+
| 'application-management-configurations-deployment-charts'
53+
| 'application-management-configurations-notifications'
54+
| 'application-management-configurations-catalog-frameworks'
55+
| 'application-management-configurations-scoped-variables'
56+
| 'application-management-configurations-build-infra'
57+
| 'application-management-policies-deployment-window'
58+
| 'application-management-policies-approval-policy'
59+
| 'application-management-policies-plugin-policy'
60+
| 'application-management-policies-pull-image-digest'
61+
| 'application-management-policies-tag-policy'
62+
| 'application-management-policies-filter-conditions'
63+
| 'application-management-policies-image-promotion'
64+
| 'application-management-policies-lock-deployment-configuration'
65+
| 'cost-visibility-cost-breakdown-clusters'
66+
| 'cost-visibility-cost-breakdown-environments'
67+
| 'cost-visibility-cost-breakdown-projects'
68+
| 'cost-visibility-cost-breakdown-applications'
69+
| 'global-configuration-authorization-user-permissions'
70+
| 'global-configuration-authorization-permission-groups'
71+
| 'global-configuration-authorization-api-tokens'
72+
73+
export type NavigationRootItemID =
74+
| 'application-management'
75+
| 'infrastructure-management'
76+
| 'software-release-management'
77+
| 'cost-visibility'
78+
| 'security-center'
79+
| 'automation-and-enablement'
80+
| 'data-protection-management'
81+
| 'global-configuration'
82+
83+
export type CommonNavigationItemType = {
84+
title: string
85+
dataTestId: string
86+
icon: IconsProps['name']
87+
href: string
88+
disabled?: boolean
89+
keywords?: string[]
90+
forceHideEnvKey?: keyof customEnv
91+
hideNav?: boolean
92+
isAvailableInEA?: boolean
93+
}
94+
95+
export type NavigationItemType = Pick<
96+
CommonNavigationItemType,
97+
'dataTestId' | 'title' | 'disabled' | 'keywords' | 'hideNav' | 'forceHideEnvKey' | 'isAvailableInEA'
98+
> & {
99+
id: NavigationItemID
100+
} & (
101+
| (Pick<CommonNavigationItemType, 'icon' | 'href'> & {
102+
hasSubMenu?: false
103+
subItems?: never
104+
})
105+
| (Never<Pick<CommonNavigationItemType, 'icon' | 'href'>> & {
106+
hasSubMenu: true
107+
subItems: (Omit<CommonNavigationItemType, 'icon' | 'isAvailableInEA'> & { id: NavigationSubMenuItemID })[]
108+
})
109+
)
110+
111+
export interface NavigationGroupType
112+
extends Pick<CommonNavigationItemType, 'title' | 'icon' | 'hideNav' | 'forceHideEnvKey' | 'isAvailableInEA'> {
113+
id: NavigationRootItemID
114+
items: NavigationItemType[]
115+
disabled?: boolean
116+
}

src/Pages-Devtron-2.0/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ export * from './ApplicationManagement'
22
export * from './CostVisibility'
33
export * from './DataProtectionManagement'
44
export * from './InfrastructureManagement'
5+
export * from './Navigation'
56
export * from './SecurityCenter'

src/Shared/Components/SelectPicker/SelectPickerTextArea.component.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,8 @@ export const SelectPickerTextArea = ({
183183
selectRef.current.inputRef.selectionEnd = selectionStart + 1
184184
})
185185

186-
return
186+
updateValueIfOnlyDirty()
187187
}
188-
189-
updateValueIfOnlyDirty()
190188
}
191189

192190
return (

src/Shared/Hooks/useUserPreferences/types.ts

Lines changed: 1 addition & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -17,74 +17,7 @@
1717
import { USER_PREFERENCES_ATTRIBUTE_KEY } from '@Shared/Hooks/useUserPreferences/constants'
1818
import { AppThemeType, ThemeConfigType, ThemePreferenceType } from '@Shared/Providers/ThemeProvider/types'
1919
import { ResourceKindType } from '@Shared/types'
20-
21-
export type NavigationItemID =
22-
| 'application-management-overview'
23-
| 'application-management-devtron-applications'
24-
| 'application-management-application-groups'
25-
| 'application-management-bulk-edit'
26-
| 'application-management-application-templates'
27-
| 'application-management-projects'
28-
| 'application-management-configurations'
29-
| 'application-management-policies'
30-
| 'infrastructure-management-overview'
31-
| 'infrastructure-management-applications'
32-
| 'infrastructure-management-chart-store'
33-
| 'infrastructure-management-resource-browser'
34-
| 'infrastructure-management-resource-watcher'
35-
| 'infrastructure-management-catalog-framework'
36-
| 'software-release-management-overview'
37-
| 'software-release-management-release-hub'
38-
| 'software-release-management-tenants'
39-
| 'cost-visibility-overview'
40-
| 'cost-visibility-cost-breakdown'
41-
| 'cost-visibility-configurations'
42-
| 'security-center-overview'
43-
| 'security-center-security-vulnerabilities'
44-
| 'security-center-security-enablement'
45-
| 'security-center-security-policy'
46-
| 'automation-and-enablement-jobs'
47-
| 'automation-and-enablement-alerting'
48-
| 'automation-and-enablement-incident-response'
49-
| 'automation-and-enablement-api-portal'
50-
| 'automation-and-enablement-runbook-automation'
51-
| 'global-configuration-sso-login-services'
52-
| 'global-configuration-host-urls'
53-
| 'global-configuration-cluster-and-environments'
54-
| 'global-configuration-container-oci-registry'
55-
| 'global-configuration-authorization'
56-
| 'data-protection-overview'
57-
| 'data-protection-backup-and-schedule'
58-
| 'data-protection-restores'
59-
| 'data-protection-backup-repositories'
60-
| 'data-protection-backup-locations'
61-
| 'data-protection-history-and-logs'
62-
63-
export type NavigationSubMenuItemID =
64-
| 'application-management-configurations-gitops'
65-
| 'application-management-configurations-git-accounts'
66-
| 'application-management-configurations-external-links'
67-
| 'application-management-configurations-chart-repository'
68-
| 'application-management-configurations-deployment-charts'
69-
| 'application-management-configurations-notifications'
70-
| 'application-management-configurations-catalog-frameworks'
71-
| 'application-management-configurations-scoped-variables'
72-
| 'application-management-configurations-build-infra'
73-
| 'application-management-policies-deployment-window'
74-
| 'application-management-policies-approval-policy'
75-
| 'application-management-policies-plugin-policy'
76-
| 'application-management-policies-pull-image-digest'
77-
| 'application-management-policies-tag-policy'
78-
| 'application-management-policies-filter-conditions'
79-
| 'application-management-policies-image-promotion'
80-
| 'application-management-policies-lock-deployment-configuration'
81-
| 'cost-visibility-cost-breakdown-clusters'
82-
| 'cost-visibility-cost-breakdown-environments'
83-
| 'cost-visibility-cost-breakdown-projects'
84-
| 'cost-visibility-cost-breakdown-applications'
85-
| 'global-configuration-authorization-user-permissions'
86-
| 'global-configuration-authorization-permission-groups'
87-
| 'global-configuration-authorization-api-tokens'
20+
import { NavigationItemID, NavigationSubMenuItemID } from '@PagesDevtron2.0/Navigation'
8821

8922
export interface GetUserPreferencesQueryParamsType {
9023
key: typeof USER_PREFERENCES_ATTRIBUTE_KEY

0 commit comments

Comments
 (0)