diff --git a/packages/arcodesign/components/avatar/__test__/__snapshots__/index.spec.js.snap b/packages/arcodesign/components/avatar/__test__/__snapshots__/index.spec.js.snap index 5a8527b5..0326beee 100644 --- a/packages/arcodesign/components/avatar/__test__/__snapshots__/index.spec.js.snap +++ b/packages/arcodesign/components/avatar/__test__/__snapshots__/index.spec.js.snap @@ -291,6 +291,55 @@ exports[`avatar demo test avatar demo: custom.md renders correctly 1`] = ` `; +exports[`avatar demo test avatar demo: custom-class.md renders correctly 1`] = ` + +
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+`; + exports[`avatar demo test avatar demo: default.md renders correctly 1`] = `
{ const groupElements = container.querySelectorAll(`.${prefix}-wrapper`); expect(groupElements).toHaveLength(7); }); + + // 测试 avatarStyle 和 avatarClass 属性 + // Test avatarStyle and avatarClass properties + it('avatarStyle and avatarClass render correctly', () => { + const { container } = render( +
+ + +
, + ); + + // 通过查询选择器找到带有 'avatar-1' 类的元素,并确保它存在 + // Find the element with the 'avatar-1' class using a query selector and ensure it exists + const avatar1Element = container.querySelectorAll('.avatar-1'); + expect(avatar1Element).toHaveLength(1); + expect(avatar1Element[0].classList.contains('arco-avatar')).toBe(true); + + // 通过查询选择器找到带有 'avatar-2' 类的元素,并确保它存在 + // Find the element with the 'avatar-2' class using a query selector and ensure it exists + const avatar2Element = container.querySelectorAll('.avatar-2'); + expect(avatar2Element).toHaveLength(1); + expect(avatar2Element[0].classList.contains('arco-avatar')).toBe(true); + }); }); diff --git a/packages/arcodesign/components/avatar/demo/avatar-with-info.md b/packages/arcodesign/components/avatar/demo/avatar-with-info.md index e5c4b4c7..374fa9e5 100644 --- a/packages/arcodesign/components/avatar/demo/avatar-with-info.md +++ b/packages/arcodesign/components/avatar/demo/avatar-with-info.md @@ -1,6 +1,6 @@ ## 加文字(单行文字时,文字与头像水平居中) @en{Add text (for single-line text, the text and the avatar are centered horizontally)} -#### 8 +#### 9 ```js import { Avatar } from '@arco-design/mobile-react'; diff --git a/packages/arcodesign/components/avatar/demo/custom-class.md b/packages/arcodesign/components/avatar/demo/custom-class.md new file mode 100644 index 00000000..6e64b314 --- /dev/null +++ b/packages/arcodesign/components/avatar/demo/custom-class.md @@ -0,0 +1,34 @@ +## 自定义样式 @en{Custom Style} + +#### 8 + +```js +import { Avatar } from '@arco-design/mobile-react'; + +export default function AvatarDemo() { + return ( +
+ + +
+ ); +} +``` + +```less +.avatar-demo-box { + display: flex; + align-items: center; + justify-content: flex-start; +} +.avatar-left-margin { + .set-prop-with-rtl(margin-left, 24px); +} +.avatar-1 { + border-radius: 10px; + background-color: coral; +} +.avatar-2 { + width: 1rem; +} +``` diff --git a/packages/arcodesign/components/avatar/index.tsx b/packages/arcodesign/components/avatar/index.tsx index 49737391..2d7704c3 100644 --- a/packages/arcodesign/components/avatar/index.tsx +++ b/packages/arcodesign/components/avatar/index.tsx @@ -30,6 +30,7 @@ export function componentGenerator< decoration = null, textAvatar = '', avatarStyle = {}, + avatarClass = '', autoFixFontSize = true, autoFixFontOffset = 2, avatarName = '', @@ -103,6 +104,7 @@ export function componentGenerator<
extends BaseProp * @default {} */ avatarStyle?: React.CSSProperties; + /** + * 头像元素的自定义类名 + * @en Custom classname for avatar element + * @default "" + */ + avatarClass?: string; /** * 是否自动根据头像尺寸调整字体大小 * @en Whether to automatically adjust the font size according to the avatar size