MetaPhase-Consulting/State-TalentMAP

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

Summary

Maintainability
A
25 mins
Test Coverage
A
100%
import PropTypes from 'prop-types';
import BidCountNumber from './BidCountNumber';
import { BID_STATISTICS_OBJECT } from '../../Constants/PropTypes';

const BidCount = ({ bidStatistics, hideLabel, label, altStyle, isCondensed, isTandemTwo }) => {
  let labelClass = 'bid-count-label';
  if (hideLabel) { labelClass = `${labelClass} usa-sr-only`; }
  const bidStatistics$ = bidStatistics || {};
  return (
    <div className={`usa-grid-full bid-count-container ${altStyle ? 'bid-count-secondary' : ''} ${isCondensed ? 'bid-count-condensed' : ''}`}>
      <div className={labelClass} id="bid-counts">{label}</div>
      {/* set an aria-labelledby so that screen readers understand the purpose of the list */}
      <ul
        className={`bid-count-list ${isTandemTwo ? 'bid-count-list-tandem' : ''}`}
        aria-labelledby="bid-counts"
      >
        <BidCountNumber type="totalBids" number={bidStatistics$.total_bids || 0} />
        <BidCountNumber type="atGradeBids" number={bidStatistics$.in_grade || 0} />
        <BidCountNumber type="inSkillBids" number={bidStatistics$.at_skill || 0} />
        <BidCountNumber type="atGradeInSkillBids" number={bidStatistics$.in_grade_at_skill || 0} />
      </ul>
    </div>
  );
};

BidCount.propTypes = {
  bidStatistics: BID_STATISTICS_OBJECT,
  hideLabel: PropTypes.bool,
  label: PropTypes.string,
  altStyle: PropTypes.bool,
  isCondensed: PropTypes.bool,
  isTandemTwo: PropTypes.bool,
};

BidCount.defaultProps = {
  bidStatistics: {},
  hideLabel: false,
  label: 'Bid Count:',
  altStyle: false,
  isCondensed: false,
  isTandemTwo: false,
};

export default BidCount;