choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
92 lines (85 loc) • 4.07 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
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 ScrollNumber from './ScrollNumber';
import Animate from '../animate';
import { getPrefixCls } from '../configure';
export default function Badge(props) {
var _classNames, _classNames2, _classNames3;
var count = props.count,
showZero = props.showZero,
customizePrefixCls = props.prefixCls,
scrollNumberPrefixCls = props.scrollNumberPrefixCls,
overflowCount = props.overflowCount,
className = props.className,
style = props.style,
children = props.children,
dot = props.dot,
status = props.status,
text = props.text,
offset = props.offset,
restProps = _objectWithoutProperties(props, ["count", "showZero", "prefixCls", "scrollNumberPrefixCls", "overflowCount", "className", "style", "children", "dot", "status", "text", "offset"]);
var prefixCls = getPrefixCls('badge', customizePrefixCls);
var displayCount = count > overflowCount ? "".concat(overflowCount, "+") : count;
var isZero = displayCount === '0' || displayCount === 0;
var isDot = dot && !isZero || status; // dot mode don't need count
if (isDot) {
displayCount = '';
}
var isEmpty = displayCount === null || displayCount === undefined || displayCount === '';
var hidden = (isEmpty || isZero && !showZero) && !isDot;
var statusCls = classNames((_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-status-dot"), !!status), _defineProperty(_classNames, "".concat(prefixCls, "-status-").concat(status), !!status), _classNames));
var scrollNumberCls = classNames((_classNames2 = {}, _defineProperty(_classNames2, "".concat(prefixCls, "-dot"), isDot), _defineProperty(_classNames2, "".concat(prefixCls, "-count"), !isDot), _defineProperty(_classNames2, "".concat(prefixCls, "-multiple-words"), !isDot && count && count.toString && count.toString().length > 1), _defineProperty(_classNames2, "".concat(prefixCls, "-status-").concat(status), !!status), _classNames2));
var badgeCls = classNames(className, prefixCls, (_classNames3 = {}, _defineProperty(_classNames3, "".concat(prefixCls, "-status"), !!status), _defineProperty(_classNames3, "".concat(prefixCls, "-not-a-wrapper"), !children), _classNames3));
var styleWithOffset = offset ? _objectSpread({
marginTop: offset[0],
marginLeft: offset[1]
}, style) : style; // <Badge status="success" />
if (!children && status) {
return React.createElement("span", {
className: badgeCls,
style: styleWithOffset
}, React.createElement("span", {
className: statusCls
}), React.createElement("span", {
className: "".concat(prefixCls, "-status-text")
}, text));
}
var scrollNumber = hidden ? null : React.createElement(ScrollNumber, {
prefixCls: getPrefixCls('scroll-number', scrollNumberPrefixCls),
hidden: hidden,
className: scrollNumberCls,
count: displayCount,
title: count,
style: styleWithOffset
});
var statusText = hidden || !text ? null : React.createElement("span", {
className: "".concat(prefixCls, "-status-text")
}, text);
return React.createElement("span", _extends({}, restProps, {
className: badgeCls
}), children, React.createElement(Animate, {
component: "",
hiddenProp: "hidden",
transitionName: children ? "".concat(prefixCls, "-zoom") : '',
transitionAppear: true
}, scrollNumber), statusText);
}
Badge.displayName = 'Badge';
Badge.defaultProps = {
count: null,
showZero: false,
dot: false,
overflowCount: 99
};
Badge.propTypes = {
count: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
showZero: PropTypes.bool,
dot: PropTypes.bool,
overflowCount: PropTypes.number
};
//# sourceMappingURL=index.js.map