Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions packages/react-core/src/components/Avatar/Avatar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,31 @@ import { css } from '@patternfly/react-styles';

export interface AvatarProps
extends React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> {
/** Additional classes added to the Avatar. */
/** Additional classes added to the avatar. */
className?: string;
/** Attribute that specifies the URL of the image for the Avatar. */
/** Attribute that specifies the URL of the image for the avatar. */
src?: string;
/** Attribute that specifies the alternate text of the image for the Avatar. */
/** Attribute that specifies the alternate text of the image for the avatar. */
alt: string;
/** Flag to indicate the avatar should have a border. */
isBordered?: boolean;
/** Size variant of avatar. */
size?: 'sm' | 'md' | 'lg' | 'xl';
}

export const Avatar: React.FunctionComponent<AvatarProps> = ({
className = '',
className,
src = '',
alt,
isBordered,
size,
...props
}: AvatarProps) => (
<img src={src} alt={alt} className={css(styles.avatar, styles.modifiers[size], className)} {...props} />
<img
src={src}
alt={alt}
className={css(styles.avatar, styles.modifiers[size], isBordered && styles.modifiers.bordered, className)}
{...props}
/>
);
Avatar.displayName = 'Avatar';
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,14 @@ test('Renders simple avatar', () => {
expect(screen.getByTestId('avatar').firstChild).toBeVisible();
});

// TODO: Need to be updated as part of issue #9880
test('Renders without any modifier class when border and size props are not passed', () => {
test('Renders without any modifier class when isBordered and size props are not passed', () => {
render(<Avatar alt="avatar" />);
expect(screen.getByRole('img')).toHaveClass(styles.avatar, { exact: true });
});

// TODO: Need to be updated/removed as part of issue #9880
xtest('Renders with class name pf-m-light when "light" is passed as border prop', () => {
render(<Avatar alt="avatar" />);
expect(screen.getByRole('img')).toHaveClass('pf-m-light');
});

// TODO: Need to be updated/removed as part of issue #9880
xtest('Renders with class name pf-m-dark when "dark" is passed as border prop', () => {
render(<Avatar alt="avatar" />);
expect(screen.getByRole('img')).toHaveClass('pf-m-dark');
test('Renders with class name pf-m-bordered when isBordered is passed', () => {
render(<Avatar alt="avatar" isBordered />);
expect(screen.getByRole('img')).toHaveClass('pf-m-bordered');
});

test('Renders with class name pf-m-xl when "xl" is passed as size prop', () => {
Expand Down
55 changes: 5 additions & 50 deletions packages/react-core/src/components/Avatar/examples/Avatar.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,65 +6,20 @@ propComponents: ['Avatar']
---

import avatarImg from '../../assets/avatarImg.svg';
import avatarImgDark from '../../assets/avatarImgDark.svg';
import './example.css';

## Examples

### Basic

```ts
import React from 'react';
import { Avatar } from '@patternfly/react-core';
import avatarImg from '../../assets/avatarImg.svg';

<Avatar src={avatarImg} alt="avatar" />;
```

### Size variations

```ts
import React from 'react';
import { Avatar } from '@patternfly/react-core';
import avatarImg from '../../assets/avatarImg.svg';

<React.Fragment>
Small
<br />
<Avatar src={avatarImg} alt="avatar" size="sm" />
<br />
Medium
<br />
<Avatar src={avatarImg} alt="avatar" size="md" />
<br />
Large
<br />
<Avatar src={avatarImg} alt="avatar" size="lg" />
<br />
Extra Large
<br />
<Avatar src={avatarImg} alt="avatar" size="xl" />
</React.Fragment>;
```ts file="./AvatarBasic.tsx"
```

### Bordered - light

```ts
import React from 'react';
import { Avatar } from '@patternfly/react-core';
import avatarImg from '../../assets/avatarImg.svg';
### Bordered

// TODO: Need to be updated/removed as part of issue #9880
<Avatar src={avatarImg} alt="avatar" />;
```ts file="./AvatarBordered.tsx"
```

### Bordered - dark

```ts
import React from 'react';
import { Avatar } from '@patternfly/react-core';
import avatarImgDark from '../../assets/avatarImgDark.svg';
### Size variations

// TODO: Need to be updated/removed as part of issue #9880
<Avatar src={avatarImgDark} alt="avatar" />;
```ts file="./AvatarSizeVariations.tsx"
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import React from 'react';
import { Avatar } from '@patternfly/react-core';
import avatarImg from '../../assets/avatarImg.svg';

<Avatar src={avatarImg} alt="avatar" />;
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import React from 'react';
import { Avatar } from '@patternfly/react-core';
import avatarImg from '../../assets/avatarImg.svg';

<Avatar src={avatarImg} alt="avatar" isBordered />;
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import React from 'react';
import { Avatar } from '@patternfly/react-core';
import avatarImg from '../../assets/avatarImg.svg';

<React.Fragment>
Small
<br />
<Avatar src={avatarImg} alt="avatar" size="sm" />
<br />
Medium
<br />
<Avatar src={avatarImg} alt="avatar" size="md" />
<br />
Large
<br />
<Avatar src={avatarImg} alt="avatar" size="lg" />
<br />
Extra Large
<br />
<Avatar src={avatarImg} alt="avatar" size="xl" />
</React.Fragment>;

This file was deleted.