Skip to content

Commit

Permalink
feat(Avatar): Penta updates (#9954)
Browse files Browse the repository at this point in the history
  • Loading branch information
tlabaj authored Jan 17, 2024
1 parent 07cbb82 commit c9e3b72
Show file tree
Hide file tree
Showing 7 changed files with 53 additions and 70 deletions.
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.

0 comments on commit c9e3b72

Please sign in to comment.