choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
111 lines (91 loc) • 4.96 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = Badge;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _ScrollNumber = _interopRequireDefault(require("./ScrollNumber"));
var _animate = _interopRequireDefault(require("../animate"));
var _configure = require("../configure");
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 = (0, _objectWithoutProperties2["default"])(props, ["count", "showZero", "prefixCls", "scrollNumberPrefixCls", "overflowCount", "className", "style", "children", "dot", "status", "text", "offset"]);
var prefixCls = (0, _configure.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 = (0, _classnames["default"])((_classNames = {}, (0, _defineProperty2["default"])(_classNames, "".concat(prefixCls, "-status-dot"), !!status), (0, _defineProperty2["default"])(_classNames, "".concat(prefixCls, "-status-").concat(status), !!status), _classNames));
var scrollNumberCls = (0, _classnames["default"])((_classNames2 = {}, (0, _defineProperty2["default"])(_classNames2, "".concat(prefixCls, "-dot"), isDot), (0, _defineProperty2["default"])(_classNames2, "".concat(prefixCls, "-count"), !isDot), (0, _defineProperty2["default"])(_classNames2, "".concat(prefixCls, "-multiple-words"), !isDot && count && count.toString && count.toString().length > 1), (0, _defineProperty2["default"])(_classNames2, "".concat(prefixCls, "-status-").concat(status), !!status), _classNames2));
var badgeCls = (0, _classnames["default"])(className, prefixCls, (_classNames3 = {}, (0, _defineProperty2["default"])(_classNames3, "".concat(prefixCls, "-status"), !!status), (0, _defineProperty2["default"])(_classNames3, "".concat(prefixCls, "-not-a-wrapper"), !children), _classNames3));
var styleWithOffset = offset ? (0, _objectSpread2["default"])({
marginTop: offset[0],
marginLeft: offset[1]
}, style) : style; // <Badge status="success" />
if (!children && status) {
return _react["default"].createElement("span", {
className: badgeCls,
style: styleWithOffset
}, _react["default"].createElement("span", {
className: statusCls
}), _react["default"].createElement("span", {
className: "".concat(prefixCls, "-status-text")
}, text));
}
var scrollNumber = hidden ? null : _react["default"].createElement(_ScrollNumber["default"], {
prefixCls: (0, _configure.getPrefixCls)('scroll-number', scrollNumberPrefixCls),
hidden: hidden,
className: scrollNumberCls,
count: displayCount,
title: count,
style: styleWithOffset
});
var statusText = hidden || !text ? null : _react["default"].createElement("span", {
className: "".concat(prefixCls, "-status-text")
}, text);
return _react["default"].createElement("span", (0, _extends2["default"])({}, restProps, {
className: badgeCls
}), children, _react["default"].createElement(_animate["default"], {
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["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
showZero: _propTypes["default"].bool,
dot: _propTypes["default"].bool,
overflowCount: _propTypes["default"].number
};
//# sourceMappingURL=index.js.map