All files / components/buttons/Button Button.js

100% Statements 2/2
100% Branches 21/21
100% Functions 1/1
100% Lines 2/2

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                7x                                             42x                                                                
// @flow
/* eslint-disable no-ternary, max-lines-per-function, no-nested-ternary */
 
import { Icon, IconEnd, IconStart, Wrapper } from "./styled"
import type { ComponentProps } from "."
import Loading from "components/Loading"
import React from "react"
 
const Button = ({
  ariaLabel,
  bold,
  className,
  disabled,
  expanded,
  iconOnly,
  icon,
  iconEnd,
  iconStart,
  label,
  loading,
  noHoverHighlight,
  onClick,
  outlined,
  padded,
  raised,
  rounded,
  secondary,
  small,
  transparent,
  type = "button"
}: ComponentProps): React$Node => (
  <Wrapper
    $bold={bold}
    $expanded={expanded}
    $iconOnly={iconOnly}
    $noHoverHighlight={noHoverHighlight}
    $outlined={outlined}
    $padded={padded}
    $raised={raised}
    $rounded={rounded}
    $secondary={secondary}
    $small={small}
    $transparent={transparent}
    aria-disabled={disabled ? "true" : "false"}
    aria-label={ariaLabel ? ariaLabel : iconOnly ? label : undefined}
    className={className}
    disabled={disabled}
    onClick={onClick}
    type={type}
  >
    {iconOnly ? <Icon>{icon}</Icon> : null}
    {!iconOnly && iconStart ? <IconStart>{iconStart}</IconStart> : null}
    {iconOnly ? null : label}
    {!iconOnly && iconEnd ? <IconEnd>{iconEnd}</IconEnd> : null}
    {loading ? (
      <IconEnd>
        <Loading contrast={!outlined} />
      </IconEnd>
    ) : null}
  </Wrapper>
)
 
export default Button