UNPKG

@roo-ui/components

Version:

64 lines (53 loc) 1.91 kB
"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;