diff --git a/package-lock.json b/package-lock.json index 35c03b3bc..be9407117 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.21.0-pre-2", + "version": "1.21.0-pre-3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.21.0-pre-2", + "version": "1.21.0-pre-3", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 64a08f45d..108dd10fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.21.0-pre-2", + "version": "1.21.0-pre-3", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", diff --git a/src/Pages-Devtron-2.0/Navigation/index.ts b/src/Pages-Devtron-2.0/Navigation/index.ts new file mode 100644 index 000000000..c9f6f047d --- /dev/null +++ b/src/Pages-Devtron-2.0/Navigation/index.ts @@ -0,0 +1 @@ +export * from './types' diff --git a/src/Pages-Devtron-2.0/Navigation/types.ts b/src/Pages-Devtron-2.0/Navigation/types.ts new file mode 100644 index 000000000..a542583ac --- /dev/null +++ b/src/Pages-Devtron-2.0/Navigation/types.ts @@ -0,0 +1,116 @@ +import { customEnv, Never } from 'src' + +import { IconsProps } from '@Shared/Components' + +export type NavigationItemID = + | 'application-management-overview' + | 'application-management-devtron-applications' + | 'application-management-application-groups' + | 'application-management-bulk-edit' + | 'application-management-application-templates' + | 'application-management-projects' + | 'application-management-configurations' + | 'application-management-policies' + | 'infrastructure-management-overview' + | 'infrastructure-management-applications' + | 'infrastructure-management-chart-store' + | 'infrastructure-management-resource-browser' + | 'infrastructure-management-resource-watcher' + | 'infrastructure-management-catalog-framework' + | 'software-release-management-overview' + | 'software-release-management-release-hub' + | 'software-release-management-tenants' + | 'cost-visibility-overview' + | 'cost-visibility-cost-breakdown' + | 'cost-visibility-configurations' + | 'security-center-overview' + | 'security-center-security-vulnerabilities' + | 'security-center-security-enablement' + | 'security-center-security-policy' + | 'automation-and-enablement-jobs' + | 'automation-and-enablement-alerting' + | 'automation-and-enablement-incident-response' + | 'automation-and-enablement-api-portal' + | 'automation-and-enablement-runbook-automation' + | 'global-configuration-sso-login-services' + | 'global-configuration-host-urls' + | 'global-configuration-external-links' + | 'global-configuration-chart-repository' + | 'global-configuration-cluster-and-environments' + | 'global-configuration-container-oci-registry' + | 'global-configuration-authorization' + | 'data-protection-overview' + | 'data-protection-backup-and-schedule' + | 'data-protection-restores' + | 'data-protection-backup-repositories' + | 'data-protection-backup-locations' + | 'data-protection-history-and-logs' + +export type NavigationSubMenuItemID = + | 'application-management-configurations-gitops' + | 'application-management-configurations-git-accounts' + | 'application-management-configurations-deployment-charts' + | 'application-management-configurations-notifications' + | 'application-management-configurations-catalog-frameworks' + | 'application-management-configurations-scoped-variables' + | 'application-management-configurations-build-infra' + | 'application-management-policies-deployment-window' + | 'application-management-policies-approval-policy' + | 'application-management-policies-plugin-policy' + | 'application-management-policies-pull-image-digest' + | 'application-management-policies-tag-policy' + | 'application-management-policies-filter-conditions' + | 'application-management-policies-image-promotion' + | 'application-management-policies-lock-deployment-configuration' + | 'cost-visibility-cost-breakdown-clusters' + | 'cost-visibility-cost-breakdown-environments' + | 'cost-visibility-cost-breakdown-projects' + | 'cost-visibility-cost-breakdown-applications' + | 'global-configuration-authorization-user-permissions' + | 'global-configuration-authorization-permission-groups' + | 'global-configuration-authorization-api-tokens' + +export type NavigationRootItemID = + | 'application-management' + | 'infrastructure-management' + | 'software-release-management' + | 'cost-visibility' + | 'security-center' + | 'automation-and-enablement' + | 'data-protection-management' + | 'global-configuration' + +export type CommonNavigationItemType = { + title: string + dataTestId: string + icon: IconsProps['name'] + href: string + disabled?: boolean + keywords?: string[] + forceHideEnvKey?: keyof customEnv + hideNav?: boolean + isAvailableInEA?: boolean +} + +export type NavigationItemType = Pick< + CommonNavigationItemType, + 'dataTestId' | 'title' | 'disabled' | 'keywords' | 'hideNav' | 'forceHideEnvKey' | 'isAvailableInEA' +> & { + id: NavigationItemID +} & ( + | (Pick & { + hasSubMenu?: false + subItems?: never + }) + | (Never> & { + hasSubMenu: true + subItems: (Omit & { id: NavigationSubMenuItemID })[] + }) + ) + +export interface NavigationGroupType + extends Pick { + id: NavigationRootItemID + items: NavigationItemType[] + disabled?: boolean +} diff --git a/src/Pages-Devtron-2.0/index.ts b/src/Pages-Devtron-2.0/index.ts index 12ea29ca5..900f8bd9b 100644 --- a/src/Pages-Devtron-2.0/index.ts +++ b/src/Pages-Devtron-2.0/index.ts @@ -2,4 +2,5 @@ export * from './ApplicationManagement' export * from './CostVisibility' export * from './DataProtectionManagement' export * from './InfrastructureManagement' +export * from './Navigation' export * from './SecurityCenter' diff --git a/src/Shared/Components/SelectPicker/SelectPickerTextArea.component.tsx b/src/Shared/Components/SelectPicker/SelectPickerTextArea.component.tsx index 5fe8fdb38..2f7181d94 100644 --- a/src/Shared/Components/SelectPicker/SelectPickerTextArea.component.tsx +++ b/src/Shared/Components/SelectPicker/SelectPickerTextArea.component.tsx @@ -183,10 +183,8 @@ export const SelectPickerTextArea = ({ selectRef.current.inputRef.selectionEnd = selectionStart + 1 }) - return + updateValueIfOnlyDirty() } - - updateValueIfOnlyDirty() } return ( diff --git a/src/Shared/Hooks/useUserPreferences/types.ts b/src/Shared/Hooks/useUserPreferences/types.ts index a3c2db55d..a03c7eb10 100644 --- a/src/Shared/Hooks/useUserPreferences/types.ts +++ b/src/Shared/Hooks/useUserPreferences/types.ts @@ -17,74 +17,7 @@ import { USER_PREFERENCES_ATTRIBUTE_KEY } from '@Shared/Hooks/useUserPreferences/constants' import { AppThemeType, ThemeConfigType, ThemePreferenceType } from '@Shared/Providers/ThemeProvider/types' import { ResourceKindType } from '@Shared/types' - -export type NavigationItemID = - | 'application-management-overview' - | 'application-management-devtron-applications' - | 'application-management-application-groups' - | 'application-management-bulk-edit' - | 'application-management-application-templates' - | 'application-management-projects' - | 'application-management-configurations' - | 'application-management-policies' - | 'infrastructure-management-overview' - | 'infrastructure-management-applications' - | 'infrastructure-management-chart-store' - | 'infrastructure-management-resource-browser' - | 'infrastructure-management-resource-watcher' - | 'infrastructure-management-catalog-framework' - | 'software-release-management-overview' - | 'software-release-management-release-hub' - | 'software-release-management-tenants' - | 'cost-visibility-overview' - | 'cost-visibility-cost-breakdown' - | 'cost-visibility-configurations' - | 'security-center-overview' - | 'security-center-security-vulnerabilities' - | 'security-center-security-enablement' - | 'security-center-security-policy' - | 'automation-and-enablement-jobs' - | 'automation-and-enablement-alerting' - | 'automation-and-enablement-incident-response' - | 'automation-and-enablement-api-portal' - | 'automation-and-enablement-runbook-automation' - | 'global-configuration-sso-login-services' - | 'global-configuration-host-urls' - | 'global-configuration-cluster-and-environments' - | 'global-configuration-container-oci-registry' - | 'global-configuration-authorization' - | 'data-protection-overview' - | 'data-protection-backup-and-schedule' - | 'data-protection-restores' - | 'data-protection-backup-repositories' - | 'data-protection-backup-locations' - | 'data-protection-history-and-logs' - -export type NavigationSubMenuItemID = - | 'application-management-configurations-gitops' - | 'application-management-configurations-git-accounts' - | 'application-management-configurations-external-links' - | 'application-management-configurations-chart-repository' - | 'application-management-configurations-deployment-charts' - | 'application-management-configurations-notifications' - | 'application-management-configurations-catalog-frameworks' - | 'application-management-configurations-scoped-variables' - | 'application-management-configurations-build-infra' - | 'application-management-policies-deployment-window' - | 'application-management-policies-approval-policy' - | 'application-management-policies-plugin-policy' - | 'application-management-policies-pull-image-digest' - | 'application-management-policies-tag-policy' - | 'application-management-policies-filter-conditions' - | 'application-management-policies-image-promotion' - | 'application-management-policies-lock-deployment-configuration' - | 'cost-visibility-cost-breakdown-clusters' - | 'cost-visibility-cost-breakdown-environments' - | 'cost-visibility-cost-breakdown-projects' - | 'cost-visibility-cost-breakdown-applications' - | 'global-configuration-authorization-user-permissions' - | 'global-configuration-authorization-permission-groups' - | 'global-configuration-authorization-api-tokens' +import { NavigationItemID, NavigationSubMenuItemID } from '@PagesDevtron2.0/Navigation' export interface GetUserPreferencesQueryParamsType { key: typeof USER_PREFERENCES_ATTRIBUTE_KEY