UNPKG

@evg-b/evg-ui

Version:

EVG-UI library inspired by Material Design.

156 lines (142 loc) 4.61 kB
import _extends from '@babel/runtime/helpers/extends'; import _defineProperty from '@babel/runtime/helpers/defineProperty'; import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties'; import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import '@babel/runtime/helpers/slicedToArray'; import withStyles from '../styles/withStyles.js'; import '@babel/runtime/helpers/construct'; import '@babel/runtime/helpers/toConsumableArray'; import '@babel/runtime/helpers/classCallCheck'; import '@babel/runtime/helpers/createClass'; var styles = { base: { position: 'relative', display: 'inline-flex' }, badge: { zIndex: 99, position: 'absolute', top: '0', right: '0', display: 'flex', flexDirection: 'row', alignItems: 'center', alignContent: 'center', justifyContent: 'center', borderRadius: '10px', boxSizing: 'border-box', height: '20px', minWidth: '20px', padding: '0 6px', fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif', fontSize: '0.75rem', fontWeight: 500, lineHeight: 1, pointerEvents: 'none', backgroundColor: function backgroundColor(props) { return props.Color.Base(); }, color: function color(props) { return props.Color.Contrast(); }, transform: 'scale(1) translate(50%, -50%)', transformOrigin: '100% 0%', transition: 'transform 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms' }, ripe: { position: 'initial', transform: 'scale(1)', transformOrigin: 'initial' }, badgeNull: { transform: function transform(props) { return props.ripe ? 'scale(0)' : 'scale(0) translate(50%, -50%)'; } }, dot: { height: '10px', minWidth: '10px', padding: 0 }, circle: { top: '14%', right: '14%' } }; /** * Это маленький значок обычно используется в паре с другими компонентами. * Используется для привлечения внимание к этим компонентам. */ var Badge = /*#__PURE__*/React.forwardRef(function Badge(props, ref) { var _classNames; var classes = props.classes, className = props.className, children = props.children; props.color; var count = props.count, max = props.max, dot = props.dot, circle = props.circle, ripe = props.ripe, otherProps = _objectWithoutProperties(props, ["classes", "className", "children", "color", "count", "max", "dot", "circle", "ripe"]); var CountBadge = count > max ? "".concat(max, "+") : count; var BadgeRipe = /*#__PURE__*/React.createElement("span", { className: classNames(classes.badge, (_classNames = {}, _defineProperty(_classNames, classes.ripe, ripe), _defineProperty(_classNames, classes.badgeNull, count == 0), _defineProperty(_classNames, classes.dot, dot), _defineProperty(_classNames, classes.circle, circle), _classNames)) }, dot ? null : CountBadge); var Badge = /*#__PURE__*/React.createElement("div", _extends({ ref: ref, className: classNames(classes.base, className) }, otherProps), children, BadgeRipe); return ripe ? BadgeRipe : Badge; }); Badge.propTypes = { /** * Это контент между открывающим и закрывающим тегом компонента. */ children: PropTypes.node, /** * Объект содержит jss стили компонента. */ classes: PropTypes.object, /** * Чтобы указать CSS классы, используйте этот атрибут. */ className: PropTypes.string, /** * Название цвета в разных форматах. */ color: PropTypes.string, /** * Номер для отображения на значке. */ count: PropTypes.number, /** * Максимальный предел точного отображения. */ max: PropTypes.number, /** * Минималистичный вид. */ dot: PropTypes.bool, /** * Смещение, чтобы корректно смотрелось если родитель круглой формы. */ circle: PropTypes.bool, /** * true - badge становиться самостоятельным элементом. */ ripe: PropTypes.bool }; Badge.defaultProps = { color: 'fail', count: 0, max: 99, dot: false, circle: false, ripe: false }; Badge.displayName = 'BadgeEVG'; var Badge$1 = withStyles(styles)(Badge); export default Badge$1;