# All files / react/Spinner index.jsx

100% Statements 4/4
50% Branches 1/2
100% Functions 1/1
100% Lines 4/4

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

    2x

    14x

    2x

    2x

     import React from 'react'
    import { translate } from '../I18n'
    import classNames from 'classnames'
    import PropTypes from 'prop-types'
    import styles from './styles.styl'

    export const Spinner = ({
      t,
      loadingType,
      middle,
      noMargin,
      color,
      size,
      className
    }) => {
      return (
        <div
          className={classNames(
            styles['c-spinner'],
            {
              [styles['c-spinner--middle']]: middle,
              [styles['c-spinner--nomargin']]: noMargin,
              [styles[`c-spinner--${color}`]]: color,
              [styles[`c-spinner--${size}`]]: size
            },
            className
          )}
        >
          {loadingType && <p>{t(`loading.${loadingType}`)}</p>}
        </div>
      )
    }

    Spinner.propTypes = {
      loadingType: PropTypes.string,
      middle: PropTypes.bool,
      noMargin: PropTypes.bool,
      color: PropTypes.oneOf(['blue', 'grey', 'white', 'red']),
      size: PropTypes.oneOf([
        'tiny',
        'small',
        'medium',
        'large',
        'xlarge',
        'xxlarge'
      ]),
      className: PropTypes.string
    }

    Spinner.defaultProps = {
      loadingType: '',
      middle: false,
      noMargin: false,
      color: 'blue',
      size: 'medium',
      className: ''
    }

    export default translate()(Spinner)