All files / modules/10-common/components/TagsViewer TagsViewer.tsx

100% Statements 8/8
100% Branches 4/4
100% Functions 3/3
100% Lines 7/7

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              258x 258x             258x 160x                                       258x 91x                 160x        
/*
 * Copyright 2021 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 { Container, Text } from '@wings-software/uicore'
 
interface TagViewerProps {
  style?: React.CSSProperties
  tag: string
}
 
const TagViewer: React.FC<TagViewerProps> = ({ tag, style }) => (
  <Text
    style={{
      padding: '4px var(--spacing-small)',
      display: 'inline-block',
      color: 'var(--primary-9)',
      background: 'var(--grey-100)',
      borderRadius: '4px',
      fontSize: '10px',
      ...style
    }}
  >
    {tag}
  </Text>
)
 
export interface TagsViewerProps {
  tags: string[] | null | undefined
  style?: React.CSSProperties
}
 
export const TagsViewer: React.FC<TagsViewerProps> = ({ tags, style }) => (
  <Container
    style={{
      display: 'inline-flex',
      flexWrap: 'wrap' /*, gap: 'var(--spacing-xsmall)' -> Safari does not support it yet (Feb 2021) :( */,
      margin: 'calc(-1 * var(--spacing-xsmall)) 0 0 calc(-1 * var(--spacing-xsmall))',
      width: 'calc(100% + var(--spacing-xsmall))'
    }}
  >
    {tags?.map(tag => (
      <TagViewer key={tag} tag={tag} style={{ margin: 'var(--spacing-xsmall) 0 0 var(--spacing-xsmall)', ...style }} />
    ))}
  </Container>
)