UNPKG

@krowdy-ui/views

Version:

React components that implement Google's Material Design.

137 lines (125 loc) 4.06 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 _clsx = _interopRequireDefault(require("clsx")); var _core = require("@krowdy-ui/core"); var _Column = _interopRequireDefault(require("./Column")); var _Price = _interopRequireDefault(require("./Price")); var interval = 4; var emptyPrices = new Array(interval); var parsePrice = function parsePrice(price) { return Math.ceil(price / Math.pow(10, price.toString().length - 1)) * Math.pow(10, price.toString().length - 1); }; var GraphicBar = function GraphicBar(_ref) { var _ref$multiplier = _ref.multiplier, multiplier = _ref$multiplier === void 0 ? 1 : _ref$multiplier, _ref$candidates = _ref.candidates, candidates = _ref$candidates === void 0 ? [] : _ref$candidates; var divider = candidates.length; var max = candidates.map(function (_ref2) { var salary = _ref2.salary; return salary; }).sort(function (a, b) { return b - a; })[0]; var prices = Array.from(emptyPrices, function (value, index) { return parsePrice(Math.ceil(max - max / 4 * index)); }); var classes = useStyles({ max: prices[0], multiplier: multiplier }); return /*#__PURE__*/_react["default"].createElement("div", { className: classes.root }, /*#__PURE__*/_react["default"].createElement("div", { className: (0, _clsx["default"])(classes.row, classes.container) }, /*#__PURE__*/_react["default"].createElement("div", { className: (0, _clsx["default"])(classes.column, classes.prices) }, prices.map(function (price, index) { return /*#__PURE__*/_react["default"].createElement(_Price["default"], { key: index, max: prices[0], multiplier: multiplier, price: price }); })), /*#__PURE__*/_react["default"].createElement("div", { className: (0, _clsx["default"])(classes.containerGraphicBar, classes.row) }, candidates.map(function (_ref3, index) { var salary = _ref3.salary, selected = _ref3.selected, firstName = _ref3.firstName, lastName = _ref3.lastName, photo = _ref3.photo; return /*#__PURE__*/_react["default"].createElement(_Column["default"], { divider: divider, firstName: firstName, index: index, key: index, lastName: lastName, max: prices[0], multiplier: multiplier, photo: photo, salary: salary, selected: selected }); })))); }; process.env.NODE_ENV !== "production" ? GraphicBar.propTypes = { candidates: _propTypes["default"].arrayOf(_propTypes["default"].shape({ firstName: _propTypes["default"].string, lastName: _propTypes["default"].string, photo: _propTypes["default"].string, salary: _propTypes["default"].number, selected: _propTypes["default"].bool })), multiplier: _propTypes["default"].number } : void 0; var useStyles = (0, _core.makeStyles)(function (theme) { return { column: { display: 'flex', flexDirection: 'column' }, container: { height: '100%', marginTop: theme.spacing(1), minHeight: 150, width: '100%' }, containerGraphicBar: { borderBottom: "1px solid ".concat(theme.palette.grey[600]), display: 'flex', flexDirection: 'row', height: 'inherit', width: 'inherit' }, price: { color: theme.palette.grey[600] }, prices: { position: 'relative', width: function width(_ref4) { var max = _ref4.max, multiplier = _ref4.multiplier; return (max * multiplier).toString().length * 9; } }, root: { display: 'flex', height: 'calc(100% - 32px)' }, row: { display: 'flex', flexDirection: 'row' } }; }, { name: 'GraphicBar' }); var _default = GraphicBar; exports["default"] = _default;