diff --git a/web/src/cde-gitness/assests/intellij.svg b/web/src/cde-gitness/assests/intellij.svg new file mode 100644 index 000000000..5cd7c5e6b --- /dev/null +++ b/web/src/cde-gitness/assests/intellij.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.module.scss b/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.module.scss index 2fa2174b1..b8b8fce02 100644 --- a/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.module.scss +++ b/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.module.scss @@ -44,10 +44,6 @@ } } -.buttonIcon { - margin-right: var(--spacing-medium); -} - .popover { > div[class*='popover-arrow'] { display: none; diff --git a/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.module.scss.d.ts b/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.module.scss.d.ts index c182fd649..1bce75c05 100644 --- a/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.module.scss.d.ts +++ b/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.module.scss.d.ts @@ -17,7 +17,6 @@ /* eslint-disable */ // This is an auto-generated file export declare const button: string -export declare const buttonIcon: string export declare const listContainer: string export declare const main: string export declare const popover: string diff --git a/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.tsx b/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.tsx index 41af6f0a5..fe8761fc1 100644 --- a/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.tsx +++ b/web/src/cde-gitness/components/CDEIDESelect/CDEIDESelect.tsx @@ -18,12 +18,9 @@ import React from 'react' import { Layout, Text } from '@harnessio/uicore' import { Menu, MenuItem } from '@blueprintjs/core' import { Code } from 'iconoir-react' -import { IDEType } from 'cde-gitness/constants' -import vsCodeWebIcon from 'cde-gitness/assests/vsCodeWeb.svg?url' -import vscodeIcon from 'cde-gitness/assests/VSCode.svg?url' +import { getIDETypeOptions } from 'cde-gitness/constants' import { useStrings } from 'framework/strings' import { CDECustomDropdown } from '../CDECustomDropdown/CDECustomDropdown' -import css from './CDEIDESelect.module.scss' export const CDEIDESelect = ({ onChange, @@ -33,21 +30,9 @@ export const CDEIDESelect = ({ selectedIde?: string }) => { const { getString } = useStrings() + const ideOptions = getIDETypeOptions(getString) ?? [] - const ideOptions = [ - { - label: getString('cde.ide.desktop'), - value: IDEType.VSCODE, - img: vscodeIcon - }, - { - label: getString('cde.ide.browser'), - value: IDEType.VSCODEWEB, - img: vsCodeWebIcon - } - ] - - const { label, img } = ideOptions.find(item => item.value === selectedIde) || {} + const { label, icon }: any = ideOptions.find(item => item.value === selectedIde) || {} return ( } label={ - - + + {label} } @@ -73,8 +58,11 @@ export const CDEIDESelect = ({ - + + {item.label} } diff --git a/web/src/cde-gitness/components/GitspaceListing/ListGitspaces.tsx b/web/src/cde-gitness/components/GitspaceListing/ListGitspaces.tsx index e30cd772a..71aea27fe 100644 --- a/web/src/cde-gitness/components/GitspaceListing/ListGitspaces.tsx +++ b/web/src/cde-gitness/components/GitspaceListing/ListGitspaces.tsx @@ -38,15 +38,13 @@ import { UseStringsReturn, useStrings } from 'framework/strings' import { useAppContext } from 'AppContext' import { getErrorMessage } from 'utils/Utils' import { useConfirmAct } from 'hooks/useConfirmAction' -import VSCode from 'cde-gitness/assests/VSCode.svg?url' -import { GitspaceActionType, GitspaceStatus, IDEType } from 'cde-gitness/constants' +import { getIDEOption, GitspaceActionType, GitspaceStatus, IDEType } from 'cde-gitness/constants' import type { EnumGitspaceStateType, EnumIDEType, TypesGitspaceConfig, TypesInfraProviderResource } from 'services/cde' import gitspaceIcon from 'cde-gitness/assests/gitspace.svg?url' import { useModalHook } from 'hooks/useModalHook' import pause from 'cde-gitness/assests/pause.svg?url' import web from 'cde-gitness/assests/web.svg?url' import deleteIcon from 'cde-gitness/assests/delete.svg?url' -import vsCodeWebIcon from 'cde-gitness/assests/vsCodeWeb.svg?url' import { useGitspaceActions } from 'cde-gitness/hooks/useGitspaceActions' import { useDeleteGitspaces } from 'cde-gitness/hooks/useDeleteGitspaces' import { useOpenVSCodeBrowserURL } from 'cde-gitness/hooks/useOpenVSCodeBrowserURL' @@ -118,10 +116,10 @@ export const RenderGitspaceName: Renderer< const details = row.original const { name, ide, identifier } = details const { standalone } = useAppContext() - + const ideItem = getIDEOption(ide, getString) return standalone ? ( - + - + { - return [ - { label: getString('cde.ide.desktop'), value: IDEType.VSCODE }, - { label: getString('cde.ide.browser'), value: IDEType.VSCODEWEB } - ] -} +import { getIDEOption, getIDETypeOptions } from 'cde-gitness/constants' export const SelectIDE = () => { const { values, errors, setFieldValue: onChange } = useFormikContext() const { ide } = values const { getString } = useStrings() - const IDESelectItems = getIDESelectItems(getString) + const IDESelectItems = getIDETypeOptions(getString) const IDELabel = IDESelectItems.find(item => item.value === ide)?.label + const ideItem = getIDEOption(ide, getString) return ( - + {ide ? getString('cde.ide.title') : getString('cde.ide.selectIDE')} diff --git a/web/src/cde-gitness/constants/index.ts b/web/src/cde-gitness/constants/index.ts index dbec18fbb..fa8d79d02 100644 --- a/web/src/cde-gitness/constants/index.ts +++ b/web/src/cde-gitness/constants/index.ts @@ -13,14 +13,43 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import vsCodeWebIcon from 'cde-gitness/assests/vsCodeWeb.svg?url' +import vsCodeIcon from 'cde-gitness/assests/VSCode.svg?url' +import intellijIcon from 'cde-gitness/assests/intellij.svg?url' +import type { StringsMap } from 'framework/strings/stringTypes' export const docLink = 'https://developer.harness.io/docs/cloud-development-environments' export enum IDEType { VSCODE = 'vs_code', - VSCODEWEB = 'vs_code_web' + VSCODEWEB = 'vs_code_web', + INTELLIJ = 'intellij' } +export interface ideType { + label: keyof StringsMap + value: string + icon: any +} + +export const getIDETypeOptions = (getString: any) => [ + { + label: getString('cde.ide.desktop'), + value: IDEType.VSCODE, + icon: vsCodeIcon + }, + { + label: getString('cde.ide.browser'), + value: IDEType.VSCODEWEB, + icon: vsCodeWebIcon + }, + { + label: getString('cde.ide.intellij'), + value: IDEType.INTELLIJ, + icon: intellijIcon + } +] + export enum EnumGitspaceCodeRepoType { GITHUB = 'github', GITLAB = 'gitlab', @@ -60,6 +89,14 @@ export const GitspaceStatusTypes = (getString: any) => [ } ] +export const getIDEOption: any = (type = '', getString = null) => { + let ideItem = null + if (type && getString) { + ideItem = getIDETypeOptions(getString).find((ide: ideType) => ide?.value === type) + } + return ideItem +} + export enum GitspaceOwnerType { SELF = 'self', ALL = 'all' diff --git a/web/src/cde-gitness/pages/GitspaceCreate/CDECreateGitspace.tsx b/web/src/cde-gitness/pages/GitspaceCreate/CDECreateGitspace.tsx index 6f57e4a88..74d68cff4 100644 --- a/web/src/cde-gitness/pages/GitspaceCreate/CDECreateGitspace.tsx +++ b/web/src/cde-gitness/pages/GitspaceCreate/CDECreateGitspace.tsx @@ -258,7 +258,11 @@ export const CDECreateGitspace = () => { - {formik.values.ide === IDEType.VSCODE && } + {formik?.values?.ide === IDEType.VSCODE || formik?.values?.ide === IDEType.INTELLIJ ? ( + + ) : ( + <> + )} ) : (