All files / modules/35-connectors/pages/connectors/ConnectorDetailsPage/ConnectorDetailsPageGitDetails ConnectorPageGitDetails.tsx

70% Statements 7/10
0% Branches 0/10
0% Functions 0/3
70% Lines 7/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65              9x 9x 9x 9x   9x                     9x                                                                               9x  
/*
 * Copyright 2022 Harness Inc. All rights reserved.
 * Use of this source code is governed by the PolyForm Shield 1.0.0 license
 * that can be found in the licenses directory at the root of this repository, also available at
 * https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
 */
 
import React from 'react'
import { Layout, Icon, Text, SelectOption, Select, MultiSelectOption } from '@wings-software/uicore'
import { Menu } from '@blueprintjs/core'
import { Color } from '@harness/design-system'
import type { EntityGitDetails } from 'services/cd-ng'
import css from '../ConnectorDetailsPage.module.scss'
 
interface ConnectorPageGitDetailsProps {
  gitDetails?: EntityGitDetails
  handleBranchClick: (selected: string) => void
  branchSelectOptions: MultiSelectOption[]
  selectedBranch: string
  onQueryChange: (query: string) => void
  loadingBranchList: boolean
}
 
const ConnectorPageGitDetails: React.FC<ConnectorPageGitDetailsProps> = ({
  gitDetails,
  handleBranchClick,
  onQueryChange,
  selectedBranch,
  branchSelectOptions,
  loadingBranchList
}) => {
  return (
    <Layout.Horizontal border={{ left: true, color: Color.GREY_300 }} spacing="medium">
      <Layout.Horizontal spacing="small">
        <Icon name="repository" margin={{ left: 'large' }}></Icon>
        <Text lineClamp={1} className={css.filePath}>{`${gitDetails?.rootFolder}${gitDetails?.filePath}`}</Text>
      </Layout.Horizontal>
 
      <Layout.Horizontal spacing="small">
        <Icon name="git-new-branch" margin={{ left: 'large' }}></Icon>
        <Select
          name="branch"
          className={css.gitBranch}
          value={{ label: selectedBranch, value: selectedBranch }}
          items={branchSelectOptions}
          onQueryChange={onQueryChange}
          itemRenderer={(item: SelectOption): React.ReactElement => {
            return (
              <Menu.Item
                key={item.value as string}
                active={item.value === selectedBranch}
                onClick={() => handleBranchClick(item.value as string)}
                text={item.value}
              />
            )
          }}
        />
        {loadingBranchList ? <Icon margin={{ top: 'xsmall' }} name="spinner" /> : null}
      </Layout.Horizontal>
    </Layout.Horizontal>
  )
}
 
export default ConnectorPageGitDetails