@roo-ui/components
Version:
71 lines (53 loc) • 1.8 kB
JavaScript
'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;