UNPKG

2.85 kBJavaScriptView Raw
1import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3import classNames from 'classnames';
4import toArray from "rc-util/es/Children/toArray";
5import * as React from 'react';
6import { ConfigContext } from '../config-provider';
7import Popover from '../popover';
8import { cloneElement } from '../_util/reactNode';
9import Avatar from './avatar';
10import { SizeContextProvider } from './SizeContext';
11import useStyle from './style';
12var Group = function Group(props) {
13 var _React$useContext = React.useContext(ConfigContext),
14 getPrefixCls = _React$useContext.getPrefixCls,
15 direction = _React$useContext.direction;
16 var customizePrefixCls = props.prefixCls,
17 _props$className = props.className,
18 className = _props$className === void 0 ? '' : _props$className,
19 maxCount = props.maxCount,
20 maxStyle = props.maxStyle,
21 size = props.size;
22 var prefixCls = getPrefixCls('avatar', customizePrefixCls);
23 var groupPrefixCls = prefixCls + "-group";
24 var _useStyle = useStyle(prefixCls),
25 _useStyle2 = _slicedToArray(_useStyle, 2),
26 wrapSSR = _useStyle2[0],
27 hashId = _useStyle2[1];
28 var cls = classNames(groupPrefixCls, _defineProperty({}, groupPrefixCls + "-rtl", direction === 'rtl'), className, hashId);
29 var children = props.children,
30 _props$maxPopoverPlac = props.maxPopoverPlacement,
31 maxPopoverPlacement = _props$maxPopoverPlac === void 0 ? 'top' : _props$maxPopoverPlac,
32 _props$maxPopoverTrig = props.maxPopoverTrigger,
33 maxPopoverTrigger = _props$maxPopoverTrig === void 0 ? 'hover' : _props$maxPopoverTrig;
34 var childrenWithProps = toArray(children).map(function (child, index) {
35 return cloneElement(child, {
36 key: "avatar-key-" + index
37 });
38 });
39 var numOfChildren = childrenWithProps.length;
40 if (maxCount && maxCount < numOfChildren) {
41 var childrenShow = childrenWithProps.slice(0, maxCount);
42 var childrenHidden = childrenWithProps.slice(maxCount, numOfChildren);
43 childrenShow.push( /*#__PURE__*/React.createElement(Popover, {
44 key: "avatar-popover-key",
45 content: childrenHidden,
46 trigger: maxPopoverTrigger,
47 placement: maxPopoverPlacement,
48 overlayClassName: groupPrefixCls + "-popover"
49 }, /*#__PURE__*/React.createElement(Avatar, {
50 style: maxStyle
51 }, "+" + (numOfChildren - maxCount))));
52 return wrapSSR( /*#__PURE__*/React.createElement(SizeContextProvider, {
53 size: size
54 }, /*#__PURE__*/React.createElement("div", {
55 className: cls,
56 style: props.style
57 }, childrenShow)));
58 }
59 return wrapSSR( /*#__PURE__*/React.createElement(SizeContextProvider, {
60 size: size
61 }, /*#__PURE__*/React.createElement("div", {
62 className: cls,
63 style: props.style
64 }, childrenWithProps)));
65};
66export default Group;
\No newline at end of file