import { Avatar as OldAvatar, AvatarProps, ConfigProvider } from 'antd';
import React, { useContext, useMemo } from 'react';
import './index.less';
import classNames from 'classnames';
import { GroupProps } from 'antd/lib/avatar';
import man from './icons/man.png';
import woman from './icons/woman.png';
import aydin from './icons/aydin.png';
interface AvatarExtraProps {
type?: 'woman' | 'man' | 'aydin';
}
const Sizes = {
large: 40,
default: 32,
small: 24,
};
const Avatar = (props: AvatarProps & AvatarExtraProps) => {
// 为了与 antd 的生态保持兼容性,我们要求必须要使用 `.@{ant-prefix}` 变量来生成类名
const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
const prefixCls = getPrefixCls('btri-avatar');
const { size = 'default', style, type } = props;
const _style = useMemo(
() => ({
backgroundColor: 'var(--primary-6)',
...style,
}),
[style],
);
const types = { man, woman, aydin };
return (
{props.children}
);
};
interface AvatarGroupExtraProps {
maxText?: string | number;
}
const Group: React.FC = props => {
// 为了与 antd 的生态保持兼容性,我们要求必须要使用 `.@{ant-prefix}` 变量来生成类名
const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
const prefixCls = getPrefixCls('btri-avatar-group');
const { size = 'default', maxCount, maxText } = props;
const _moreText = useMemo(() => {
if (!maxCount) {
return null;
}
// @ts-ignore
const length = props.children?.length;
if (!maxText) {
return length ? `+${length - maxCount}` : null;
}
return maxText;
}, [maxCount, props.children, maxText]);
return (
{/* @ts-ignore */}
{props.children?.map(item => ({
...item,
props: { size: Sizes[size as any] || size, ...item.props },
}))}
{_moreText && (
{_moreText}
)}
);
};
Avatar.Group = Group;
export { Avatar };