UNPKG

@krowdy-ui/views

Version:

React components that implement Google's Material Design.

128 lines (116 loc) 4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _core = require("@krowdy-ui/core"); var _views = require("@krowdy-ui/views"); var _LineVert = _interopRequireDefault(require("./LineVert")); var styles = function styles(theme) { return { bar: { backgroundColor: theme.palette.secondary[100], borderRadius: 8, height: 12, minWidth: 100, position: 'relative', width: '100%' }, endAdornment: { alignItems: 'center', display: 'flex', marginLeft: theme.spacing(1.5) }, root: { alignItems: 'center', display: 'flex', height: 54 }, startAdornment: { marginRight: theme.spacing(1.5) } }; }; var SampleBar = function SampleBar(_ref) { var _ref$marks = _ref.marks, marks = _ref$marks === void 0 ? [] : _ref$marks, classes = _ref.classes, _ref$template = _ref.template, template = _ref$template === void 0 ? function () {} : _ref$template, currentMark = _ref.mark, IconComponent = _ref.IconComponent, customLabel = _ref.customLabel; var maxValue = Math.ceil(marks.reduce(function (max, mark) { return Math.max(max, mark.value); }, 0)); return /*#__PURE__*/_react["default"].createElement("div", { className: classes.root }, IconComponent ? /*#__PURE__*/_react["default"].createElement(IconComponent, { className: classes.startAdornment, color: "primary", fontSize: "small" }) : null, /*#__PURE__*/_react["default"].createElement("div", { className: classes.bar }, new Array(maxValue >= 1 ? maxValue - 1 : 0).fill(1).map(function (_, index) { return /*#__PURE__*/_react["default"].createElement(_LineVert["default"], { customLabel: customLabel, index: index + 1, key: index, leftPercent: 100 / maxValue * (index + 1) }); }), marks.map(function (mark) { var firstName = mark.firstName, _id = mark._id, lastName = mark.lastName, value = mark.value, photo = mark.photo; var active = currentMark && _id === currentMark._id; return /*#__PURE__*/_react["default"].createElement(_views.UserPoint, { active: active, firstName: firstName, key: _id, lastName: lastName, leftPercent: value / (maxValue || 1) * 100, photo: photo, subtitle: template(mark) }); })), IconComponent ? /*#__PURE__*/_react["default"].createElement("div", { className: classes.endAdornment }, /*#__PURE__*/_react["default"].createElement(IconComponent, { color: "primary", fontSize: "small" }), /*#__PURE__*/_react["default"].createElement(IconComponent, { color: "primary", fontSize: "default" }), /*#__PURE__*/_react["default"].createElement(IconComponent, { color: "primary", fontSize: "small" })) : null); }; process.env.NODE_ENV !== "production" ? SampleBar.propTypes = { IconComponent: _propTypes["default"].elementType, classes: _propTypes["default"].object, customLabel: _propTypes["default"].func, mark: _propTypes["default"].shape({ _id: _propTypes["default"].string, firstName: _propTypes["default"].string, lastName: _propTypes["default"].string, photo: _propTypes["default"].string, value: _propTypes["default"].number }), marks: _propTypes["default"].arrayOf(_propTypes["default"].shape({ _id: _propTypes["default"].string, firstName: _propTypes["default"].string, lastName: _propTypes["default"].string, photo: _propTypes["default"].string, value: _propTypes["default"].number })), template: _propTypes["default"].func } : void 0; var _default = (0, _core.withStyles)(styles, { name: 'SampleBar' })(SampleBar); exports["default"] = _default;