1
This commit is contained in:
+26
@@ -0,0 +1,26 @@
|
||||
import * as React from 'react';
|
||||
import type { AvatarSize } from './AvatarContext';
|
||||
export interface AvatarProps {
|
||||
/** Shape of avatar, options: `circle`, `square` */
|
||||
shape?: 'circle' | 'square';
|
||||
size?: AvatarSize;
|
||||
gap?: number;
|
||||
/** Src of image avatar */
|
||||
src?: React.ReactNode;
|
||||
/** Srcset of image avatar */
|
||||
srcSet?: string;
|
||||
draggable?: boolean | 'true' | 'false';
|
||||
/** Icon to be used in avatar */
|
||||
icon?: React.ReactNode;
|
||||
style?: React.CSSProperties;
|
||||
prefixCls?: string;
|
||||
className?: string;
|
||||
rootClassName?: string;
|
||||
children?: React.ReactNode;
|
||||
alt?: string;
|
||||
crossOrigin?: '' | 'anonymous' | 'use-credentials';
|
||||
onClick?: (e?: React.MouseEvent<HTMLElement>) => void;
|
||||
onError?: () => boolean;
|
||||
}
|
||||
declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLSpanElement>>;
|
||||
export default Avatar;
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
"use strict";
|
||||
"use client";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
var _resizeObserver = _interopRequireDefault(require("@rc-component/resize-observer"));
|
||||
var _ref = require("@rc-component/util/lib/ref");
|
||||
var _clsx = require("clsx");
|
||||
var _is = require("../_util/is");
|
||||
var _responsiveObserver = require("../_util/responsiveObserver");
|
||||
var _warning = require("../_util/warning");
|
||||
var _context = require("../config-provider/context");
|
||||
var _useCSSVarCls = _interopRequireDefault(require("../config-provider/hooks/useCSSVarCls"));
|
||||
var _useSize = _interopRequireDefault(require("../config-provider/hooks/useSize"));
|
||||
var _useBreakpoint = _interopRequireDefault(require("../grid/hooks/useBreakpoint"));
|
||||
var _AvatarContext = _interopRequireDefault(require("./AvatarContext"));
|
||||
var _style = _interopRequireDefault(require("./style"));
|
||||
const Avatar = /*#__PURE__*/React.forwardRef((props, ref) => {
|
||||
const {
|
||||
prefixCls: customizePrefixCls,
|
||||
shape,
|
||||
size: customSize,
|
||||
src,
|
||||
srcSet,
|
||||
icon,
|
||||
className,
|
||||
rootClassName,
|
||||
style,
|
||||
alt,
|
||||
draggable,
|
||||
children,
|
||||
crossOrigin,
|
||||
gap = 4,
|
||||
onError,
|
||||
...others
|
||||
} = props;
|
||||
const [scale, setScale] = React.useState(1);
|
||||
const [mounted, setMounted] = React.useState(false);
|
||||
const [isImgExist, setIsImgExist] = React.useState(true);
|
||||
const avatarNodeRef = React.useRef(null);
|
||||
const avatarChildrenRef = React.useRef(null);
|
||||
const avatarNodeMergedRef = (0, _ref.composeRef)(ref, avatarNodeRef);
|
||||
const {
|
||||
getPrefixCls,
|
||||
className: contextClassName,
|
||||
style: contextStyle
|
||||
} = (0, _context.useComponentConfig)('avatar');
|
||||
const avatarCtx = React.useContext(_AvatarContext.default);
|
||||
const setScaleParam = () => {
|
||||
if (!avatarChildrenRef.current || !avatarNodeRef.current) {
|
||||
return;
|
||||
}
|
||||
const childrenWidth = avatarChildrenRef.current.offsetWidth; // offsetWidth avoid affecting be transform scale
|
||||
const nodeWidth = avatarNodeRef.current.offsetWidth;
|
||||
// denominator is 0 is no meaning
|
||||
if (childrenWidth !== 0 && nodeWidth !== 0) {
|
||||
if (gap * 2 < nodeWidth) {
|
||||
setScale(nodeWidth - gap * 2 < childrenWidth ? (nodeWidth - gap * 2) / childrenWidth : 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
React.useEffect(() => {
|
||||
setMounted(true);
|
||||
}, []);
|
||||
React.useEffect(() => {
|
||||
setIsImgExist(true);
|
||||
setScale(1);
|
||||
}, [src]);
|
||||
React.useEffect(setScaleParam, [gap]);
|
||||
const handleImgLoadError = () => {
|
||||
const errorFlag = onError?.();
|
||||
if (errorFlag !== false) {
|
||||
setIsImgExist(false);
|
||||
}
|
||||
};
|
||||
const size = (0, _useSize.default)(ctxSize => customSize ?? avatarCtx?.size ?? ctxSize ?? 'medium');
|
||||
const needResponsive = Object.keys((0, _is.isPlainObject)(size) ? size || {} : {}).some(key => _responsiveObserver.responsiveArray.includes(key));
|
||||
const screens = (0, _useBreakpoint.default)(needResponsive);
|
||||
const responsiveSizeStyle = React.useMemo(() => {
|
||||
if (!(0, _is.isPlainObject)(size)) {
|
||||
return {};
|
||||
}
|
||||
const currentBreakpoint = _responsiveObserver.responsiveArray.find(screen => screens[screen]);
|
||||
const currentSize = size[currentBreakpoint];
|
||||
return currentSize ? {
|
||||
width: currentSize,
|
||||
height: currentSize,
|
||||
fontSize: currentSize && (icon || children) ? currentSize / 2 : 18
|
||||
} : {};
|
||||
}, [screens, size, icon, children]);
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
const warning = (0, _warning.devUseWarning)('Avatar');
|
||||
process.env.NODE_ENV !== "production" ? warning(!(typeof icon === 'string' && icon.length > 2), 'breaking', `\`icon\` is using ReactNode instead of string naming in v4. Please check \`${icon}\` at https://ant.design/components/icon`) : void 0;
|
||||
}
|
||||
const prefixCls = getPrefixCls('avatar', customizePrefixCls);
|
||||
const rootCls = (0, _useCSSVarCls.default)(prefixCls);
|
||||
const [hashId, cssVarCls] = (0, _style.default)(prefixCls, rootCls);
|
||||
const sizeCls = (0, _clsx.clsx)({
|
||||
[`${prefixCls}-lg`]: size === 'large',
|
||||
[`${prefixCls}-sm`]: size === 'small'
|
||||
});
|
||||
const hasImageElement = /*#__PURE__*/React.isValidElement(src);
|
||||
const mergedShape = shape || avatarCtx?.shape || 'circle';
|
||||
const classString = (0, _clsx.clsx)(prefixCls, sizeCls, contextClassName, `${prefixCls}-${mergedShape}`, {
|
||||
[`${prefixCls}-image`]: hasImageElement || src && isImgExist,
|
||||
[`${prefixCls}-icon`]: !!icon
|
||||
}, cssVarCls, rootCls, className, rootClassName, hashId);
|
||||
const sizeStyle = (0, _is.isNumber)(size) ? {
|
||||
width: size,
|
||||
height: size,
|
||||
fontSize: icon ? size / 2 : 18
|
||||
} : {};
|
||||
let childrenToRender;
|
||||
if (typeof src === 'string' && isImgExist) {
|
||||
childrenToRender = /*#__PURE__*/React.createElement("img", {
|
||||
src: src,
|
||||
draggable: draggable,
|
||||
srcSet: srcSet,
|
||||
onError: handleImgLoadError,
|
||||
alt: alt,
|
||||
crossOrigin: crossOrigin
|
||||
});
|
||||
} else if (hasImageElement) {
|
||||
childrenToRender = src;
|
||||
} else if (icon) {
|
||||
childrenToRender = icon;
|
||||
} else if (mounted || scale !== 1) {
|
||||
const transformString = `scale(${scale})`;
|
||||
const childrenStyle = {
|
||||
msTransform: transformString,
|
||||
WebkitTransform: transformString,
|
||||
transform: transformString
|
||||
};
|
||||
childrenToRender = /*#__PURE__*/React.createElement(_resizeObserver.default, {
|
||||
onResize: setScaleParam
|
||||
}, /*#__PURE__*/React.createElement("span", {
|
||||
className: `${prefixCls}-string`,
|
||||
ref: avatarChildrenRef,
|
||||
style: childrenStyle
|
||||
}, children));
|
||||
} else {
|
||||
childrenToRender = /*#__PURE__*/React.createElement("span", {
|
||||
className: `${prefixCls}-string`,
|
||||
style: {
|
||||
opacity: 0
|
||||
},
|
||||
ref: avatarChildrenRef
|
||||
}, children);
|
||||
}
|
||||
return /*#__PURE__*/React.createElement("span", {
|
||||
...others,
|
||||
style: {
|
||||
...sizeStyle,
|
||||
...responsiveSizeStyle,
|
||||
...contextStyle,
|
||||
...style
|
||||
},
|
||||
className: classString,
|
||||
ref: avatarNodeMergedRef
|
||||
}, childrenToRender);
|
||||
});
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
Avatar.displayName = 'Avatar';
|
||||
}
|
||||
var _default = exports.default = Avatar;
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
import * as React from 'react';
|
||||
import type { ScreenSizeMap } from '../_util/responsiveObserver';
|
||||
import type { SizeType } from '../config-provider/SizeContext';
|
||||
/**
|
||||
* 'default' is deprecated and will be removed in v7, please use `medium` instead.
|
||||
*/
|
||||
export type AvatarSize = SizeType | 'default' | number | ScreenSizeMap;
|
||||
export interface AvatarContextType {
|
||||
size?: AvatarSize;
|
||||
shape?: 'circle' | 'square';
|
||||
}
|
||||
declare const AvatarContext: React.Context<AvatarContextType>;
|
||||
export default AvatarContext;
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
const AvatarContext = /*#__PURE__*/React.createContext({});
|
||||
var _default = exports.default = AvatarContext;
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
import * as React from 'react';
|
||||
import type { PopoverProps } from '../popover';
|
||||
import type { AvatarSize } from './AvatarContext';
|
||||
export interface AvatarGroupProps {
|
||||
className?: string;
|
||||
rootClassName?: string;
|
||||
children?: React.ReactNode;
|
||||
style?: React.CSSProperties;
|
||||
prefixCls?: string;
|
||||
/** @deprecated Please use `max={{ count: number }}` */
|
||||
maxCount?: number;
|
||||
/** @deprecated Please use `max={{ style: CSSProperties }}` */
|
||||
maxStyle?: React.CSSProperties;
|
||||
/** @deprecated Please use `max={{ popover: PopoverProps }}` */
|
||||
maxPopoverPlacement?: 'top' | 'bottom';
|
||||
/** @deprecated Please use `max={{ popover: PopoverProps }}` */
|
||||
maxPopoverTrigger?: 'hover' | 'focus' | 'click';
|
||||
max?: {
|
||||
count?: number;
|
||||
style?: React.CSSProperties;
|
||||
popover?: PopoverProps;
|
||||
};
|
||||
size?: AvatarSize;
|
||||
shape?: 'circle' | 'square';
|
||||
}
|
||||
declare const AvatarGroup: React.FC<AvatarGroupProps>;
|
||||
export default AvatarGroup;
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
"use strict";
|
||||
"use client";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
var _util = require("@rc-component/util");
|
||||
var _clsx = require("clsx");
|
||||
var _reactNode = require("../_util/reactNode");
|
||||
var _warning = require("../_util/warning");
|
||||
var _configProvider = require("../config-provider");
|
||||
var _useCSSVarCls = _interopRequireDefault(require("../config-provider/hooks/useCSSVarCls"));
|
||||
var _popover = _interopRequireDefault(require("../popover"));
|
||||
var _Avatar = _interopRequireDefault(require("./Avatar"));
|
||||
var _AvatarContext = _interopRequireDefault(require("./AvatarContext"));
|
||||
var _style = _interopRequireDefault(require("./style"));
|
||||
const AvatarContextProvider = props => {
|
||||
const {
|
||||
size,
|
||||
shape
|
||||
} = React.useContext(_AvatarContext.default);
|
||||
const avatarContextValue = React.useMemo(() => ({
|
||||
size: props.size || size,
|
||||
shape: props.shape || shape
|
||||
}), [props.size, props.shape, size, shape]);
|
||||
return /*#__PURE__*/React.createElement(_AvatarContext.default.Provider, {
|
||||
value: avatarContextValue
|
||||
}, props.children);
|
||||
};
|
||||
const AvatarGroup = props => {
|
||||
const {
|
||||
getPrefixCls,
|
||||
direction
|
||||
} = React.useContext(_configProvider.ConfigContext);
|
||||
const {
|
||||
prefixCls: customizePrefixCls,
|
||||
className,
|
||||
rootClassName,
|
||||
style,
|
||||
maxCount,
|
||||
maxStyle,
|
||||
size,
|
||||
shape,
|
||||
maxPopoverPlacement,
|
||||
maxPopoverTrigger,
|
||||
children,
|
||||
max
|
||||
} = props;
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
const warning = (0, _warning.devUseWarning)('Avatar.Group');
|
||||
[['maxCount', 'max={{ count: number }}'], ['maxStyle', 'max={{ style: CSSProperties }}'], ['maxPopoverPlacement', 'max={{ popover: PopoverProps }}'], ['maxPopoverTrigger', 'max={{ popover: PopoverProps }}']].forEach(([deprecatedName, newName]) => {
|
||||
warning.deprecated(!(deprecatedName in props), deprecatedName, newName);
|
||||
});
|
||||
}
|
||||
const prefixCls = getPrefixCls('avatar', customizePrefixCls);
|
||||
const groupPrefixCls = `${prefixCls}-group`;
|
||||
const rootCls = (0, _useCSSVarCls.default)(prefixCls);
|
||||
const [hashId, cssVarCls] = (0, _style.default)(prefixCls, rootCls);
|
||||
const cls = (0, _clsx.clsx)(groupPrefixCls, {
|
||||
[`${groupPrefixCls}-rtl`]: direction === 'rtl'
|
||||
}, cssVarCls, rootCls, className, rootClassName, hashId);
|
||||
const childrenWithProps = (0, _util.toArray)(children).map((child, index) => (0, _reactNode.cloneElement)(child, {
|
||||
// eslint-disable-next-line react/no-array-index-key
|
||||
key: `avatar-key-${index}`
|
||||
}));
|
||||
const mergeCount = max?.count || maxCount;
|
||||
const numOfChildren = childrenWithProps.length;
|
||||
if (mergeCount && mergeCount < numOfChildren) {
|
||||
const childrenShow = childrenWithProps.slice(0, mergeCount);
|
||||
const childrenHidden = childrenWithProps.slice(mergeCount, numOfChildren);
|
||||
const mergeStyle = max?.style || maxStyle;
|
||||
const mergePopoverTrigger = max?.popover?.trigger || maxPopoverTrigger || 'hover';
|
||||
const mergePopoverPlacement = max?.popover?.placement || maxPopoverPlacement || 'top';
|
||||
const popoverProps = {
|
||||
content: childrenHidden,
|
||||
...max?.popover,
|
||||
placement: mergePopoverPlacement,
|
||||
trigger: mergePopoverTrigger,
|
||||
rootClassName: (0, _clsx.clsx)(`${groupPrefixCls}-popover`, max?.popover?.rootClassName)
|
||||
};
|
||||
childrenShow.push(/*#__PURE__*/React.createElement(_popover.default, {
|
||||
key: "avatar-popover-key",
|
||||
destroyOnHidden: true,
|
||||
...popoverProps
|
||||
}, /*#__PURE__*/React.createElement(_Avatar.default, {
|
||||
style: mergeStyle
|
||||
}, `+${numOfChildren - mergeCount}`)));
|
||||
return /*#__PURE__*/React.createElement(AvatarContextProvider, {
|
||||
shape: shape,
|
||||
size: size
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
className: cls,
|
||||
style: style
|
||||
}, childrenShow));
|
||||
}
|
||||
return /*#__PURE__*/React.createElement(AvatarContextProvider, {
|
||||
shape: shape,
|
||||
size: size
|
||||
}, /*#__PURE__*/React.createElement("div", {
|
||||
className: cls,
|
||||
style: style
|
||||
}, childrenWithProps));
|
||||
};
|
||||
var _default = exports.default = AvatarGroup;
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import InternalAvatar from './Avatar';
|
||||
import type { AvatarGroupProps } from './AvatarGroup';
|
||||
import AvatarGroup from './AvatarGroup';
|
||||
export type { AvatarProps } from './Avatar';
|
||||
/** @deprecated Please use `AvatarGroupProps` */
|
||||
export type GroupProps = AvatarGroupProps;
|
||||
type CompoundedComponent = typeof InternalAvatar & {
|
||||
Group: typeof AvatarGroup;
|
||||
};
|
||||
declare const Avatar: CompoundedComponent;
|
||||
export default Avatar;
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
"use client";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var _Avatar = _interopRequireDefault(require("./Avatar"));
|
||||
var _AvatarGroup = _interopRequireDefault(require("./AvatarGroup"));
|
||||
const Avatar = _Avatar.default;
|
||||
Avatar.Group = _AvatarGroup.default;
|
||||
var _default = exports.default = Avatar;
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
import type { GetDefaultToken } from '../../theme/internal';
|
||||
export interface ComponentToken {
|
||||
/**
|
||||
* @desc 头像尺寸
|
||||
* @descEN Size of Avatar
|
||||
*/
|
||||
containerSize: number;
|
||||
/**
|
||||
* @desc 大号头像尺寸
|
||||
* @descEN Size of large Avatar
|
||||
*/
|
||||
containerSizeLG: number;
|
||||
/**
|
||||
* @desc 小号头像尺寸
|
||||
* @descEN Size of small Avatar
|
||||
*/
|
||||
containerSizeSM: number;
|
||||
/**
|
||||
* @desc 头像文字大小
|
||||
* @descEN Font size of Avatar
|
||||
*/
|
||||
textFontSize: number;
|
||||
/**
|
||||
* @desc 大号头像文字大小
|
||||
* @descEN Font size of large Avatar
|
||||
*/
|
||||
textFontSizeLG: number;
|
||||
/**
|
||||
* @desc 小号头像文字大小
|
||||
* @descEN Font size of small Avatar
|
||||
*/
|
||||
textFontSizeSM: number;
|
||||
/**
|
||||
* @desc 头像图标大小
|
||||
* @descEN Font size of Avatar icon
|
||||
*/
|
||||
iconFontSize: number;
|
||||
/**
|
||||
* @desc 大号头像图标大小
|
||||
* @descEN Font size of large Avatar icon
|
||||
*/
|
||||
iconFontSizeLG: number;
|
||||
/**
|
||||
* @desc 小号头像图标大小
|
||||
* @descEN Font size of small Avatar icon
|
||||
*/
|
||||
iconFontSizeSM: number;
|
||||
/**
|
||||
* @desc 头像组间距
|
||||
* @descEN Spacing between avatars in a group
|
||||
*/
|
||||
groupSpace: number;
|
||||
/**
|
||||
* @desc 头像组重叠宽度
|
||||
* @descEN Overlapping of avatars in a group
|
||||
*/
|
||||
groupOverlapping: number;
|
||||
/**
|
||||
* @desc 头像组边框颜色
|
||||
* @descEN Border color of avatars in a group
|
||||
*/
|
||||
groupBorderColor: string;
|
||||
}
|
||||
export declare const prepareComponentToken: GetDefaultToken<'Avatar'>;
|
||||
declare const _default: (prefixCls: string, rootCls?: string) => readonly [string, string];
|
||||
export default _default;
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.prepareComponentToken = exports.default = void 0;
|
||||
var _cssinjs = require("@ant-design/cssinjs");
|
||||
var _style = require("../../style");
|
||||
var _internal = require("../../theme/internal");
|
||||
const genBaseStyle = token => {
|
||||
const {
|
||||
antCls,
|
||||
componentCls,
|
||||
iconCls,
|
||||
avatarBg,
|
||||
avatarColor,
|
||||
containerSize,
|
||||
containerSizeLG,
|
||||
containerSizeSM,
|
||||
textFontSize,
|
||||
textFontSizeLG,
|
||||
textFontSizeSM,
|
||||
iconFontSize,
|
||||
iconFontSizeLG,
|
||||
iconFontSizeSM,
|
||||
borderRadius,
|
||||
borderRadiusLG,
|
||||
borderRadiusSM,
|
||||
lineWidth,
|
||||
lineType
|
||||
} = token;
|
||||
// Avatar size style
|
||||
const avatarSizeStyle = (size, fontSize, iconFontSize, radius) => ({
|
||||
width: size,
|
||||
height: size,
|
||||
borderRadius: '50%',
|
||||
fontSize,
|
||||
[`&${componentCls}-square`]: {
|
||||
borderRadius: radius
|
||||
},
|
||||
[`&${componentCls}-icon`]: {
|
||||
fontSize: iconFontSize,
|
||||
[`> ${iconCls}`]: {
|
||||
margin: 0
|
||||
}
|
||||
}
|
||||
});
|
||||
return {
|
||||
[componentCls]: {
|
||||
...(0, _style.resetComponent)(token),
|
||||
position: 'relative',
|
||||
display: 'inline-flex',
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
overflow: 'hidden',
|
||||
color: avatarColor,
|
||||
whiteSpace: 'nowrap',
|
||||
textAlign: 'center',
|
||||
verticalAlign: 'middle',
|
||||
background: avatarBg,
|
||||
border: `${(0, _cssinjs.unit)(lineWidth)} ${lineType} transparent`,
|
||||
'&-image': {
|
||||
background: 'transparent'
|
||||
},
|
||||
[`${antCls}-image-img`]: {
|
||||
display: 'block'
|
||||
},
|
||||
...avatarSizeStyle(containerSize, textFontSize, iconFontSize, borderRadius),
|
||||
'&-lg': {
|
||||
...avatarSizeStyle(containerSizeLG, textFontSizeLG, iconFontSizeLG, borderRadiusLG)
|
||||
},
|
||||
'&-sm': {
|
||||
...avatarSizeStyle(containerSizeSM, textFontSizeSM, iconFontSizeSM, borderRadiusSM)
|
||||
},
|
||||
'> img': {
|
||||
display: 'block',
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
objectFit: 'cover'
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const genGroupStyle = token => {
|
||||
const {
|
||||
componentCls,
|
||||
groupBorderColor,
|
||||
groupOverlapping,
|
||||
groupSpace
|
||||
} = token;
|
||||
return {
|
||||
[`${componentCls}-group`]: {
|
||||
display: 'inline-flex',
|
||||
[componentCls]: {
|
||||
borderColor: groupBorderColor
|
||||
},
|
||||
'> *:not(:first-child)': {
|
||||
marginInlineStart: groupOverlapping
|
||||
}
|
||||
},
|
||||
[`${componentCls}-group-popover`]: {
|
||||
[`${componentCls} + ${componentCls}`]: {
|
||||
marginInlineStart: groupSpace
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const prepareComponentToken = token => {
|
||||
const {
|
||||
controlHeight,
|
||||
controlHeightLG,
|
||||
controlHeightSM,
|
||||
fontSize,
|
||||
fontSizeLG,
|
||||
fontSizeXL,
|
||||
fontSizeHeading3,
|
||||
marginXS,
|
||||
marginXXS,
|
||||
colorBorderBg
|
||||
} = token;
|
||||
return {
|
||||
containerSize: controlHeight,
|
||||
containerSizeLG: controlHeightLG,
|
||||
containerSizeSM: controlHeightSM,
|
||||
textFontSize: fontSize,
|
||||
textFontSizeLG: fontSize,
|
||||
textFontSizeSM: fontSize,
|
||||
iconFontSize: Math.round((fontSizeLG + fontSizeXL) / 2),
|
||||
iconFontSizeLG: fontSizeHeading3,
|
||||
iconFontSizeSM: fontSize,
|
||||
groupSpace: marginXXS,
|
||||
groupOverlapping: -marginXS,
|
||||
groupBorderColor: colorBorderBg
|
||||
};
|
||||
};
|
||||
exports.prepareComponentToken = prepareComponentToken;
|
||||
var _default = exports.default = (0, _internal.genStyleHooks)('Avatar', token => {
|
||||
const {
|
||||
colorTextLightSolid,
|
||||
colorTextPlaceholder
|
||||
} = token;
|
||||
const avatarToken = (0, _internal.mergeToken)(token, {
|
||||
avatarBg: colorTextPlaceholder,
|
||||
avatarColor: colorTextLightSolid
|
||||
});
|
||||
return [genBaseStyle(avatarToken), genGroupStyle(avatarToken)];
|
||||
}, prepareComponentToken);
|
||||
Reference in New Issue
Block a user