UNPKG

@roo-ui/components

Version:

71 lines (53 loc) 1.8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _range = require('lodash/range'); var _range2 = _interopRequireDefault(_range); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _ = require('..'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var iconType = function iconType(rating, index, ratingType) { var ratingTypeIcon = ratingType === 'AAA' ? 'star' : 'circle'; if (index < rating - 0.5) return '' + ratingTypeIcon; if (index < rating) return ratingTypeIcon + 'Half'; return ratingTypeIcon + 'Border'; }; var renderRating = function renderRating(_ref) { var ratingType = _ref.ratingType, rating = _ref.rating, size = _ref.size; var ratingItems = []; (0, _range2.default)(5).forEach(function (index) { ratingItems.push(_react2.default.createElement(_.Icon, { name: iconType(rating, index, ratingType), key: index, color: 'starRating', size: size })); }); return ratingItems; }; var StarRating = function StarRating(_ref2) { var ratingType = _ref2.ratingType, rating = _ref2.rating, size = _ref2.size; return _react2.default.createElement( _.Flex, { itemType: 'http://schema.org/AggregateRating', 'aria-label': rating + ' out of 5 rating', title: rating + ' out of 5 rating' }, renderRating({ ratingType: ratingType, rating: rating, size: size }) ); }; StarRating.propTypes = { rating: _propTypes2.default.string.isRequired, ratingType: _propTypes2.default.string.isRequired, size: _propTypes2.default.string.isRequired }; exports.default = StarRating;