MetaPhase-Consulting/State-TalentMAP

View on GitHub
src/Components/Spinner/Spinner.jsx

Summary

Maintainability
A
0 mins
Test Coverage
B
81%
import PropTypes from 'prop-types';

import center from '../../assets/spinner/center.svg';
import middle from '../../assets/spinner/middle.svg';
import outer from '../../assets/spinner/outer.svg';

const Spinner = ({ type, size, style }) => {
  let sizeClass = '';
  switch (size) {
    case ('small'):
      sizeClass = 'tm-spinner-small';
      break;
    case ('medium'):
      sizeClass = 'tm-spinner-medium';
      break;
    default:
      break;
  }
  return (
    <div className={`tm-spinner tm-spinner-${type} ${sizeClass}`} style={style}>
      <img className="center" alt="center" src={center} />
      <img className="middle" alt="middle" src={middle} />
      <img className="outer" alt="outer" src={outer} />
    </div>
  );
};

Spinner.propTypes = {
  type: PropTypes.string, // user defined classes stored elsewhere using "tm-spinner-" as a prefix
  size: PropTypes.oneOf(['big', 'medium', 'small']),
  style: PropTypes.shape({}),
};

Spinner.defaultProps = {
  type: '',
  size: 'big',
  style: {},
};

export default Spinner;