choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
106 lines (95 loc) • 3.99 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _createClass from "@babel/runtime/helpers/createClass";
import _inherits from "@babel/runtime/helpers/inherits";
import _createSuper from "@babel/runtime/helpers/createSuper";
import * as React from 'react';
import classNames from 'classnames';
import toArray from "rc-util/es/Children/toArray";
import Popover from '../popover';
import { cloneElement } from '../_util/reactNode';
import ConfigContext from '../config-provider/ConfigContext';
import { Size } from '../_util/enum';
import { AvatarContextProvider } from './AvatarContext';
var Group = /*#__PURE__*/function (_React$Component) {
_inherits(Group, _React$Component);
var _super = _createSuper(Group);
function Group() {
_classCallCheck(this, Group);
return _super.apply(this, arguments);
}
_createClass(Group, [{
key: "render",
value: function render() {
var _this$props = this.props,
customizePrefixCls = _this$props.prefixCls,
className = _this$props.className,
maxCount = _this$props.maxCount,
maxStyle = _this$props.maxStyle,
size = _this$props.size,
style = _this$props.style,
children = _this$props.children,
maxPopoverPlacement = _this$props.maxPopoverPlacement,
maxPopoverTrigger = _this$props.maxPopoverTrigger;
var getPrefixCls = this.context.getPrefixCls;
var prefixCls = getPrefixCls('avatar-group', customizePrefixCls);
var cls = classNames(prefixCls, className);
var childrenWithProps = toArray(children).map(function (child, index) {
return cloneElement(child, {
key: "avatar-key-".concat(index)
});
});
var numOfChildren = childrenWithProps.length;
if (maxCount && maxCount < numOfChildren) {
var _classNames;
var childrenShow = childrenWithProps.slice(0, maxCount);
var childrenHidden = childrenWithProps.slice(maxCount, numOfChildren);
var numberCls = "".concat(prefixCls, "-popover-number");
var popverNumberCls = classNames(numberCls, (_classNames = {}, _defineProperty(_classNames, "".concat(numberCls, "-lg"), size === Size.large), _defineProperty(_classNames, "".concat(numberCls, "-sm"), size === Size.small), _classNames));
var additionNumber = Math.min(numOfChildren - maxCount, 99);
childrenShow.push( /*#__PURE__*/React.createElement(Popover, {
key: "avatar-popover-key",
content: childrenHidden,
trigger: maxPopoverTrigger,
placement: maxPopoverPlacement,
overlayClassName: "".concat(prefixCls, "-popover")
}, /*#__PURE__*/React.createElement("span", {
className: "".concat(prefixCls, "-popover-mask")
}, childrenHidden[0], /*#__PURE__*/React.createElement("span", {
style: maxStyle,
"data-contentlength": "+".concat(additionNumber).length,
className: popverNumberCls
}, "+", additionNumber))));
return /*#__PURE__*/React.createElement(AvatarContextProvider, {
size: size,
getPrefixCls: getPrefixCls
}, /*#__PURE__*/React.createElement("div", {
className: cls,
style: style
}, childrenShow));
}
return /*#__PURE__*/React.createElement(AvatarContextProvider, {
size: size,
getPrefixCls: getPrefixCls
}, /*#__PURE__*/React.createElement("div", {
className: cls,
style: style
}, childrenWithProps));
}
}], [{
key: "contextType",
get: function get() {
return ConfigContext;
}
}]);
return Group;
}(React.Component);
export { Group as default };
Group.displayName = 'AvatarGroup';
Group.defaultProps = {
size: Size["default"],
maxPopoverPlacement: 'top',
maxPopoverTrigger: 'hover',
className: ''
};
//# sourceMappingURL=Group.js.map