Skip to content

Commit ca5c391

Browse files
committed
Merge branch 'feat/react-18' of https://github.com/devtron-labs/devtron-fe-common-lib into feat/react-vite-upgrade
2 parents 5643aad + 90caa7d commit ca5c391

121 files changed

Lines changed: 5916 additions & 4191 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.eslintignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,3 @@ src/Common/Select/Select.tsx
5353
src/Common/ServerError.ts
5454
src/Common/TippyCustomized.tsx
5555
src/Common/ToastBody.tsx
56-
src/Common/Types.ts

package-lock.json

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

package.json

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,13 @@
4242
"@sentry/browser": "^7.119.1",
4343
"@tanstack/eslint-plugin-query": "<5",
4444
"@tanstack/react-query-devtools": "<5",
45-
"@testing-library/jest-dom": "^5.16.2",
46-
"@testing-library/react": "^12.1.4",
4745
"@tippyjs/react": "^4.2.0",
4846
"@typeform/embed-react": "2.20.0",
4947
"@types/dompurify": "^3.0.5",
5048
"@types/json-schema": "^7.0.15",
51-
"@types/react": "17.0.39",
49+
"@types/react": "^18.3.27",
5250
"@types/react-csv": "^1.1.10",
53-
"@types/react-dom": "17.0.13",
54-
"@types/react-router-dom": "^5.3.3",
51+
"@types/react-dom": "^18.3.7",
5552
"@typescript-eslint/eslint-plugin": "8.3.0",
5653
"@typescript-eslint/parser": "8.3.0",
5754
"@vitejs/plugin-react": "4.5.2",
@@ -83,16 +80,13 @@
8380
"vite-tsconfig-paths": "5.0.1"
8481
},
8582
"peerDependencies": {
86-
"@rjsf/core": "^5.13.3",
87-
"@rjsf/utils": "^5.13.3",
88-
"@rjsf/validator-ajv8": "^5.13.3",
8983
"@typeform/embed-react": "2.20.0",
9084
"dompurify": "^3.2.4",
9185
"patch-package": "^8.0.0",
92-
"react": "^17.0.2",
93-
"react-dom": "^17.0.2",
86+
"react": "^18.3.1",
87+
"react-dom": "^18.3.1",
9488
"react-ga4": "^1.4.1",
95-
"react-router-dom": "^5.3.0",
89+
"react-router-dom": "^6.30.3",
9690
"react-select": "5.8.0",
9791
"rxjs": "^7.8.1",
9892
"yaml": "^2.4.1"
@@ -110,14 +104,17 @@
110104
"@lezer/highlight": "1.2.1",
111105
"@replit/codemirror-indentation-markers": "6.5.3",
112106
"@replit/codemirror-vscode-keymap": "6.0.2",
107+
"@rjsf/core": "^6.2.4",
108+
"@rjsf/utils": "^6.2.4",
109+
"@rjsf/validator-ajv8": "^6.2.4",
113110
"@tanstack/react-query": "<5",
114111
"@uiw/codemirror-extensions-hyper-link": "4.23.10",
115112
"@uiw/codemirror-theme-github": "4.23.7",
116113
"@uiw/react-codemirror": "4.23.7",
117114
"@uiw/react-md-editor": "^4.0.11",
118115
"@xyflow/react": "12.4.2",
119116
"ansi_up": "^5.2.1",
120-
"chart.js": "^4.5.0",
117+
"chart.js": "4.5.0",
121118
"codemirror-json-schema": "0.8.0",
122119
"cronstrue": "^3.9.0",
123120
"dayjs": "^1.11.13",
@@ -130,7 +127,7 @@
130127
"qrcode.react": "^4.2.0",
131128
"react-canvas-confetti": "^2.0.7",
132129
"react-csv": "^2.2.2",
133-
"react-day-picker": "^9.11.2",
130+
"react-day-picker": "9.4.3",
134131
"react-draggable": "^4.4.5",
135132
"react-international-phone": "^4.5.0",
136133
"react-virtualized-sticky-tree": "^3.0.0-beta18",
@@ -143,8 +140,8 @@
143140
"vite": "6.3.5"
144141
},
145142
"react-virtualized-sticky-tree": {
146-
"react": "^17.0.2",
147-
"react-dom": "^17.0.2"
143+
"react": "^18.3.1",
144+
"react-dom": "^18.3.1"
148145
}
149146
}
150147
}

src/Common/API/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ export interface FetchInTimeParamsType<Data = object> {
3838
}
3939

4040
export interface FetchAPIParamsType<Data = object>
41-
extends Omit<FetchInTimeParamsType<Data>, 'options'>,
41+
extends
42+
Omit<FetchInTimeParamsType<Data>, 'options'>,
4243
Pick<
4344
APIOptions,
4445
'preventAutoLogout' | 'preventLicenseRedirect' | 'shouldParseServerErrorForUnauthorizedUser' | 'isProxyHost'

src/Common/API/utils.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
import { MutableRefObject } from 'react'
1818

19-
import { URLS } from '@Common/Constants'
2019
import { getUrlWithSearchParams } from '@Common/Helper'
2120
import { ServerErrors } from '@Common/ServerError'
21+
import { ROUTER_URLS } from '@PagesDevtron2.0/index'
2222

2323
import { RESPONSE_MESSAGES } from './constants'
2424

@@ -63,11 +63,14 @@ export const getIsRequestAborted = (error) =>
6363

6464
export const handleDashboardLogout = () => {
6565
const continueParam = `${window.location.pathname.replace(window.__BASE_URL__, '')}${window.location.search}`
66-
window.location.href = getUrlWithSearchParams(`${window.location.origin}${window.__BASE_URL__}${URLS.LOGIN_SSO}`, {
67-
continue: continueParam,
68-
})
66+
window.location.href = getUrlWithSearchParams(
67+
`${window.location.origin}${window.__BASE_URL__}${ROUTER_URLS.LOGIN.SSO}`,
68+
{
69+
continue: continueParam,
70+
},
71+
)
6972
}
7073

7174
export const handleRedirectToLicenseActivation = () => {
72-
window.location.href = `${window.location.origin}${window.__BASE_URL__}${URLS.LICENSE_AUTH}`
75+
window.location.href = `${window.location.origin}${window.__BASE_URL__}${ROUTER_URLS.LICENSE_AUTH}`
7376
}

src/Common/BreadCrumb/BreadCrumb.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@
1515
*/
1616

1717
import React, { useMemo, useEffect } from 'react'
18-
import { Link, useRouteMatch, useParams } from 'react-router-dom'
18+
import { generatePath, Link, useParams } from 'react-router-dom'
1919
import { useBreadcrumbContext, getBreadCrumbSeparator } from './BreadcrumbStore'
2020
import { ConditionalWrap } from '../Helper'
2121
import { Breadcrumb, Breadcrumbs, UseBreadcrumbOptionalProps, UseBreadcrumbState } from './Types'
2222

2323
export const BreadcrumbContext = React.createContext(null)
2424

25-
export function useBreadcrumb(props?: UseBreadcrumbOptionalProps, deps?: any[]): UseBreadcrumbState {
25+
export function useBreadcrumb(pathPattern: string, props?: UseBreadcrumbOptionalProps, deps?: any[]): UseBreadcrumbState {
2626
const sep = props?.sep || '/'
2727
deps = deps || []
28-
const { url, path } = useRouteMatch()
2928
const params = useParams()
29+
const url = generatePath(pathPattern, params)
3030
const { state, setState } = useBreadcrumbContext()
3131

3232
useEffect(() => {
@@ -48,7 +48,7 @@ export function useBreadcrumb(props?: UseBreadcrumbOptionalProps, deps?: any[]):
4848
}
4949

5050
const levels: Breadcrumb[] = useMemo(() => {
51-
const paths = path.split('/').filter(Boolean)
51+
const paths = pathPattern.split('/').filter(Boolean)
5252
const urls = url.split('/').filter(Boolean)
5353
return paths.map((path, idx) => {
5454
const crumb: Breadcrumb = { to: urls[idx], name: path }
@@ -57,7 +57,7 @@ export function useBreadcrumb(props?: UseBreadcrumbOptionalProps, deps?: any[]):
5757
}
5858
return crumb
5959
})
60-
}, [path, url])
60+
}, [pathPattern, url])
6161
const { res: breadcrumbs } = useMemo(
6262
() =>
6363
levels.reduce(
@@ -89,10 +89,12 @@ export function useBreadcrumb(props?: UseBreadcrumbOptionalProps, deps?: any[]):
8989

9090
export const BreadCrumb: React.FC<Breadcrumbs> = ({
9191
breadcrumbs,
92+
path,
9293
sep = '/',
9394
className = 'dc__devtron-breadcrumb__item fs-16 fw-4 lh-1-5 dc__ellipsis-right dc__mxw-155',
9495
}) => {
95-
const { url } = useRouteMatch()
96+
const params = useParams()
97+
const url = generatePath(path, params)
9698
const filteredCrumbs = breadcrumbs.filter((crumb) => !!crumb.name)
9799
return (
98100
<>

src/Common/BreadCrumb/Types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export interface UseBreadcrumbProps {
3838

3939
export interface Breadcrumbs {
4040
breadcrumbs: Breadcrumb[]
41+
path: string
4142
sep?: string
4243
className?: string
4344
}

src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx

Lines changed: 0 additions & 59 deletions
This file was deleted.

src/Common/Constants.ts

Lines changed: 4 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,6 @@
1515
*/
1616

1717
import { SelectPickerOptionType } from '@Shared/Components'
18-
import { CostBreakdownItemViewParamsType, CostBreakdownViewType } from '@PagesDevtron2.0/CostVisibility'
19-
import { BackupAndScheduleListViewEnum, BackupLocationsTypes } from '@PagesDevtron2.0/DataProtectionManagement'
20-
21-
import { InfrastructureManagementAppListType } from './Types'
2218

2319
export const FALLBACK_REQUEST_TIMEOUT = 60000
2420
export const Host = window?.__ORCHESTRATOR_ROOT__ ?? '/orchestrator'
@@ -52,110 +48,19 @@ export const PATTERNS = {
5248
ALPHANUMERIC_WITH_SPECIAL_CHAR_AND_SLASH: /^[A-Za-z0-9._/-]+$/, // allow alphanumeric,(.) ,(-),(_),(/)
5349
EMAIL: /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
5450
}
55-
56-
const APPLICATION_MANAGEMENT_ROOT = '/application-management'
57-
const APPLICATION_MANAGEMENT_TEMPLATES_DEVTRON_APP = `${APPLICATION_MANAGEMENT_ROOT}/templates/devtron-app`
58-
const APPLICATION_MANAGEMENT_CONFIGURATIONS = `${APPLICATION_MANAGEMENT_ROOT}/configurations`
59-
const INFRASTRUCTURE_MANAGEMENT_ROOT = '/infrastructure-management'
60-
const SOFTWARE_RELEASE_MANAGEMENT_ROOT = '/software-release-management'
61-
const COST_VISIBILITY_ROOT = '/cost-visibility'
62-
const SECURITY_CENTER_ROOT = '/security-center'
63-
const AUTOMATION_AND_ENABLEMENT_ROOT = '/automation-and-enablement'
64-
const DATA_PROTECTION_ROOT = '/data-protection-management'
65-
const DATA_PROTECTION_BACKUP_AND_SCHEDULE =
66-
`${DATA_PROTECTION_ROOT}/backup-and-schedule/:view(${Object.values(BackupAndScheduleListViewEnum).join('|')})` as const
67-
const GLOBAL_CONFIG_ROOT = '/global-configuration'
68-
51+
/** @deprecated */
6952
export const URLS = {
70-
LOGIN: '/login',
71-
LOGIN_SSO: '/login/sso',
72-
APP_LIST: 'list',
73-
CREATE_JOB: 'create-job',
74-
GETTING_STARTED: 'getting-started',
75-
STACK_MANAGER_ABOUT: '/stack-manager/about',
7653
APP_CI_DETAILS: 'ci-details',
7754
LOGS: 'Logs',
78-
CREATE: '/create',
79-
RELEASES: '/releases',
80-
DEVTRON_CHARTS: 'dc',
81-
APP_DEPLOYMNENT_HISTORY: 'deployments',
8255
APP_DETAILS: 'details',
8356
APP_DETAILS_K8: 'k8s-resources', // for V2
8457
EXTERNAL_ARGO_APP: 'eaa',
8558
EXTERNAL_FLUX_APP: 'external-flux',
8659
DETAILS: '/details',
87-
CD_DETAILS: 'cd-details',
88-
APP_TRIGGER: 'trigger',
89-
DEPLOYMENT_HISTORY_CONFIGURATIONS: '/configuration',
90-
NETWORK_STATUS_INTERFACE: '/network-status-interface',
91-
COMPARE_CLUSTERS: '/compare-clusters',
60+
DEPLOYMENT_HISTORY_CONFIGURATIONS: 'configuration',
9261
APP_CONFIG: 'edit',
93-
LICENSE_AUTH: '/license-auth',
94-
// APPLICATION MANAGEMENT
95-
APPLICATION_MANAGEMENT: APPLICATION_MANAGEMENT_ROOT,
96-
APPLICATION_MANAGEMENT_OVERVIEW: `${APPLICATION_MANAGEMENT_ROOT}/overview`,
97-
APPLICATION_MANAGEMENT_APP: `${APPLICATION_MANAGEMENT_ROOT}/devtron-app`,
98-
APPLICATION_MANAGEMENT_APP_LIST: `${APPLICATION_MANAGEMENT_ROOT}/devtron-app/list`,
99-
APPLICATION_MANAGEMENT_CREATE_DEVTRON_APP: `${APPLICATION_MANAGEMENT_ROOT}/devtron-app/list/create-app`,
100-
APPLICATION_MANAGEMENT_APPLICATION_GROUP: `${APPLICATION_MANAGEMENT_ROOT}/application-group`,
101-
APPLICATION_MANAGEMENT_TEMPLATES_DEVTRON_APP,
102-
APPLICATION_MANAGEMENT_TEMPLATES_DEVTRON_APP_CREATE: `${APPLICATION_MANAGEMENT_TEMPLATES_DEVTRON_APP}/create`,
103-
// NOTE: using appId since we are re-using AppConfig component
104-
APPLICATION_MANAGEMENT_TEMPLATES_DEVTRON_APP_DETAIL: `${APPLICATION_MANAGEMENT_TEMPLATES_DEVTRON_APP}/detail/:appId`,
105-
APPLICATION_MANAGEMENT_CONFIGURATIONS,
106-
APPLICATION_MANAGEMENT_CONFIGURATIONS_DEPLOYMENT_CHARTS: `${APPLICATION_MANAGEMENT_CONFIGURATIONS}/deployment-charts`,
107-
APPLICATION_MANAGEMENT_CONFIGURATIONS_SCOPED_VARIABLES: `${APPLICATION_MANAGEMENT_CONFIGURATIONS}/scoped-variables`,
108-
APPLICATION_MANAGEMENT_CONFIGURATIONS_BUILD_INFRA: `${APPLICATION_MANAGEMENT_CONFIGURATIONS}/build-infra`,
109-
APPLICATION_MANAGEMENT_CONFIGURATIONS_BUILD_INFRA_PROFILES: `${APPLICATION_MANAGEMENT_CONFIGURATIONS}/build-infra/profiles`,
110-
APPLICATION_MANAGEMENT_CONFIGURATIONS_NOTIFICATIONS: `${APPLICATION_MANAGEMENT_CONFIGURATIONS}/notifications`,
111-
// INFRASTRUCTURE MANAGEMENT
112-
INFRASTRUCTURE_MANAGEMENT: INFRASTRUCTURE_MANAGEMENT_ROOT,
113-
INFRASTRUCTURE_MANAGEMENT_OVERVIEW: `${INFRASTRUCTURE_MANAGEMENT_ROOT}/overview`,
114-
INFRASTRUCTURE_MANAGEMENT_APP_LIST: `${INFRASTRUCTURE_MANAGEMENT_ROOT}/apps/:appType(${Object.values(InfrastructureManagementAppListType).join('|')})`,
115-
INFRASTRUCTURE_MANAGEMENT_APP: `${INFRASTRUCTURE_MANAGEMENT_ROOT}/apps`,
116-
INFRASTRUCTURE_MANAGEMENT_CHART_STORE: `${INFRASTRUCTURE_MANAGEMENT_ROOT}/chart-store`,
117-
INFRASTRUCTURE_MANAGEMENT_CHART_STORE_DISCOVER: `${INFRASTRUCTURE_MANAGEMENT_ROOT}/chart-store/discover`,
118-
INFRASTRUCTURE_MANAGEMENT_RESOURCE_BROWSER: `${INFRASTRUCTURE_MANAGEMENT_ROOT}/resource-browser`,
119-
INFRASTRUCTURE_MANAGEMENT_RESOURCE_WATCHER: `${INFRASTRUCTURE_MANAGEMENT_ROOT}/resource-watcher`,
120-
// SOFTWARE RELEASE MANAGEMENT
121-
SOFTWARE_RELEASE_MANAGEMENT: SOFTWARE_RELEASE_MANAGEMENT_ROOT,
122-
// COST VISIBILITY
123-
COST_VISIBILITY: COST_VISIBILITY_ROOT,
124-
COST_VISIBILITY_OVERVIEW: `${COST_VISIBILITY_ROOT}/overview`,
125-
COST_BREAKDOWN_ROUTE: `${COST_VISIBILITY_ROOT}/breakdown/:breakdownViewType`,
126-
COST_BREAKDOWN_CLUSTERS: `${COST_VISIBILITY_ROOT}/breakdown/${CostBreakdownViewType.CLUSTERS}`,
127-
COST_BREAKDOWN_ENVIRONMENTS: `${COST_VISIBILITY_ROOT}/breakdown/${CostBreakdownViewType.ENVIRONMENTS}`,
128-
COST_BREAKDOWN_PROJECTS: `${COST_VISIBILITY_ROOT}/breakdown/${CostBreakdownViewType.PROJECTS}`,
129-
COST_BREAKDOWN_APPLICATIONS: `${COST_VISIBILITY_ROOT}/breakdown/${CostBreakdownViewType.APPLICATIONS}`,
130-
COST_BREAKDOWN_DETAIL: `:${CostBreakdownItemViewParamsType.ITEM_NAME}/:${CostBreakdownItemViewParamsType.VIEW}/:${CostBreakdownItemViewParamsType.DETAIL}?`,
131-
COST_CONFIGURATIONS: `${COST_VISIBILITY_ROOT}/configurations`,
132-
// SECURITY CENTER
133-
SECURITY_CENTER: SECURITY_CENTER_ROOT,
134-
SECURITY_CENTER_OVERVIEW: `${SECURITY_CENTER_ROOT}/overview`,
135-
SECURITY_CENTER_VULNERABILITIES: `${SECURITY_CENTER_ROOT}/vulnerabilities`,
136-
SECURITY_CENTER_VULNERABILITY_DEPLOYMENTS: `${SECURITY_CENTER_ROOT}/vulnerabilities/deployments`,
137-
SECURITY_CENTER_VULNERABILITY_CVES: `${SECURITY_CENTER_ROOT}/vulnerabilities/cves`,
138-
SECURITY_CENTER_SECURITY_ENABLEMENT: `${SECURITY_CENTER_ROOT}/security-enablement`,
139-
SECURITY_CENTER_POLICIES: `${SECURITY_CENTER_ROOT}/policies`,
140-
// AUTOMATION AND ENABLEMENT
141-
AUTOMATION_AND_ENABLEMENT: AUTOMATION_AND_ENABLEMENT_ROOT,
142-
AUTOMATION_AND_ENABLEMENT_JOB: `${AUTOMATION_AND_ENABLEMENT_ROOT}/job`,
143-
// DATA PROTECTION
144-
DATA_PROTECTION: DATA_PROTECTION_ROOT,
145-
DATA_PROTECTION_OVERVIEW: `${DATA_PROTECTION_ROOT}/overview`,
146-
DATA_PROTECTION_BACKUP_AND_SCHEDULE,
147-
DATA_PROTECTION_BACKUP_AND_SCHEDULE_DETAIL: `${DATA_PROTECTION_BACKUP_AND_SCHEDULE}/detail/:id`,
148-
DATA_PROTECTION_RESTORES: `${DATA_PROTECTION_ROOT}/restores`,
149-
DATA_PROTECTION_RESTORES_DETAIL: `${DATA_PROTECTION_ROOT}/restores/:restoreId`,
150-
DATA_PROTECTION_BACKUP_LOCATIONS: `${DATA_PROTECTION_ROOT}/backup-locations/:type(${Object.values(BackupLocationsTypes).join('|')})`,
151-
BACKUP_LOCATION_DETAILS: `/:locationId`,
152-
// GLOBAL CONFIGURATION
153-
GLOBAL_CONFIG: GLOBAL_CONFIG_ROOT,
154-
GLOBAL_CONFIG_DOCKER: `${GLOBAL_CONFIG_ROOT}/docker`,
155-
GLOBAL_CONFIG_EDIT_CLUSTER: `${GLOBAL_CONFIG_ROOT}/cluster-env/edit/:clusterId`,
156-
GLOBAL_CONFIG_PROJECTS: `${GLOBAL_CONFIG_ROOT}/projects`,
157-
PERMISSION_GROUPS: `${GLOBAL_CONFIG_ROOT}/auth/groups`,
158-
EXTERNAL_APPS: 'ea',
62+
APPLICATION_MANAGEMENT_APP: '/application-management/devtron-app',
63+
GLOBAL_CONFIG_EDIT_CLUSTER: '/global-configuration/cluster-env/edit/:clusterId',
15964
} as const
16065

16166
export const ROUTES = {
@@ -175,7 +80,6 @@ export const ROUTES = {
17580
INFRA_CONFIG_PROFILE: 'infra-config/profile',
17681
SCAN_RESULT: 'scan-result',
17782
NOTIFIER: 'notification',
178-
APP_LIST: 'app/list',
17983
TELEMETRY_EVENT: 'telemetry/event',
18084
SERVER_INFO_API: 'server',
18185
ATTRIBUTES_USER: 'attributes/user',

src/Common/CustomTagSelector/Types.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,10 @@ export interface TagLabelValueSelectorType {
7474
noBackDrop?: boolean
7575
}
7676

77-
export interface ResizableTagTextAreaProps
78-
extends Omit<DetailedHTMLProps<TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, 'value'> {
77+
export interface ResizableTagTextAreaProps extends Omit<
78+
DetailedHTMLProps<TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>,
79+
'value'
80+
> {
7981
minHeight?: number
8082
maxHeight?: number
8183
value: string

0 commit comments

Comments
 (0)