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

100% Statements 9/9
100% Branches 0/0
100% Functions 1/1
100% Lines 8/8

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              631x 631x 631x 631x   631x               631x 205x 205x                                                              
/*
 * 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 { Text, Popover, Container, TextProps, Layout, IconName } from '@wings-software/uicore'
import { Color } from '@harness/design-system'
import { Classes, IPopoverProps, PopoverInteractionKind, Position } from '@blueprintjs/core'
 
import ReactTimeago from 'react-timeago'
 
export interface TimeAgoPopoverProps extends TextProps, React.ComponentProps<typeof ReactTimeago> {
  time: number
  popoverProps?: IPopoverProps
  icon?: IconName
  className?: string
}
export const TimeAgoPopover: React.FC<TimeAgoPopoverProps> = props => {
  const { time, popoverProps, icon, className, ...textProps } = props
  return (
    <Popover
      interactionKind={PopoverInteractionKind.HOVER}
      position={Position.TOP}
      className={Classes.DARK}
      {...popoverProps}
    >
      <Text inline {...textProps} icon={icon} className={className}>
        <ReactTimeago date={time} live title={''} />
      </Text>
      <Container padding="medium">
        <Layout.Horizontal flex={{ justifyContent: 'flex-start' }} spacing={'small'}>
          <Text font={{ size: 'xsmall', weight: 'semi-bold' }} color={Color.GREY_200}>
            DATE
          </Text>
          <Text font={{ size: 'small', weight: 'bold' }} color={Color.WHITE}>
            {new Date(time).toLocaleDateString()}
          </Text>
        </Layout.Horizontal>
        <Layout.Horizontal margin={{ top: 'small' }} flex={{ justifyContent: 'flex-start' }} spacing={'small'}>
          <Text font={{ size: 'xsmall', weight: 'semi-bold' }} color={Color.GREY_200}>
            TIME
          </Text>
          <Text font={{ size: 'small', weight: 'bold' }} color={Color.WHITE}>
            {new Date(time).toLocaleTimeString()}
          </Text>
        </Layout.Horizontal>
      </Container>
    </Popover>
  )
}