Sha256: 13624986279c4225d4a17138787b9678d510e5f9a92d8d732b381330b5381398

Contents?: true

Size: 1.93 KB

Versions: 107

Compression:

Stored size: 1.93 KB

Contents

/* @flow */

import React from 'react'
import classnames from 'classnames'

import {
  buildAriaProps,
  buildDataProps,
} from '../utilities/props'

import {
  Icon,
} from '../'

type StarRatingProps = {
  aria?: object,
  className?: string,
  data?: object,
  fixedWidth?: boolean,
  hideRating: boolean,
  icon?: string,
  id?: string,
  rating: number,
}

const StarRating = ({
  aria = {},
  className,
  data = {},
  hideRating = false,
  id,
  rating = 0,
}: StarRatingProps) => {
  const ariaProps = buildAriaProps(aria)
  const dataProps = buildDataProps(data)
  const css = classnames([
    'pb_star_rating_kit', className,
  ])

  const starCount = () => (
    [...Array(parseInt(rating))]
  )

  const hasHalfStar = () => (
    parseFloat(rating) % 1 !== 0
  )

  return (
    <div
        {...ariaProps}
        {...dataProps}
        className={css}
        id={id}
    >
      <div className="pb_star_rating_number">
        <If condition={!hideRating}>
          {rating}
        </If>
      </div>

      <div className="pb_star_rating_wrapper">
        <div className="pb_star_rating_highlight">
          {starCount().map((_, index) => (
            <Icon
                fixedWidth
                icon="star"
                key={index}
            />
          ))}

          <If condition={hasHalfStar()}>
            <Icon
                fixedWidth
                icon="star-half"
            />
          </If>
        </div>

        <div className="pb_star_rating_base">
          <Icon
              fixedWidth
              icon="star"
          />
          <Icon
              fixedWidth
              icon="star"
          />
          <Icon
              fixedWidth
              icon="star"
          />
          <Icon
              fixedWidth
              icon="star"
          />
          <Icon
              fixedWidth
              icon="star"
          />
        </div>
      </div>
    </div>
  )
}

export default StarRating

Version data entries

107 entries across 107 versions & 1 rubygems

Version Path
playbook_ui-7.14.0.pre.alpha1 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.16.0 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.15.1 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.15.0 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.14.0 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.13.0.pre.alpha1 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.13.0 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.12.1 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.12.0 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.11.1 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.11.0 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.11.0.pre.alpha1 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.10.0 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.9.0 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.8.4 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.8.3 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.8.2 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.8.1 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.8.0 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx
playbook_ui-7.7.0.pre.alpha1 app/pb_kits/playbook/pb_star_rating/_star_rating.jsx