@roo-ui/components
Version:
64 lines (53 loc) • 1.91 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _range = _interopRequireDefault(require("lodash/range"));
var _propTypes = _interopRequireDefault(require("prop-types"));
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 "".concat(ratingTypeIcon);
if (index < rating) return "".concat(ratingTypeIcon, "Half");
return "".concat(ratingTypeIcon, "Border");
};
var renderRating = function renderRating(_ref) {
var ratingType = _ref.ratingType,
rating = _ref.rating,
size = _ref.size;
var ratingItems = [];
(0, _range.default)(5).forEach(function (index) {
ratingItems.push(_react.default.createElement(_.Icon, {
name: iconType(rating, index, ratingType),
key: index,
color: "brightSun",
size: size
}));
});
return ratingItems;
};
var StarRating = function StarRating(_ref2) {
var ratingType = _ref2.ratingType,
rating = _ref2.rating,
size = _ref2.size;
return _react.default.createElement(_.Flex, {
itemType: "http://schema.org/AggregateRating",
"aria-label": "".concat(rating, " out of 5 rating"),
title: "".concat(rating, " out of 5 rating")
}, renderRating({
ratingType: ratingType,
rating: rating,
size: size
}));
};
var stringOrNumber = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]);
StarRating.propTypes = {
rating: stringOrNumber.isRequired,
ratingType: _propTypes.default.oneOf(['AAA', 'SELF_RATED']).isRequired,
size: stringOrNumber.isRequired
};
var _default = StarRating;
exports.default = _default;