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
163 changes: 85 additions & 78 deletions packages/react-core/src/components/MenuToggle/examples/MenuToggle.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ import './MenuToggle.css'
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';
import TimesIcon from '@patternfly/react-icons/dist/esm/icons/times-icon';

## Examples

### Collapsed
### Collapsed toggle

A toggle is collapsed until it is selected by a user.

```ts
import React from 'react';
Expand All @@ -23,7 +26,9 @@ import { MenuToggle } from '@patternfly/react-core';

```

### Expanded
### Expanded toggle

When a user selects a toggle, it becomes expanded and is styled with a blue underline. To flag expanded toggles, and apply expanded styling, use the `isExpanded` property .

```ts
import React from 'react';
Expand All @@ -33,7 +38,9 @@ import { MenuToggle } from '@patternfly/react-core';

```

### Disabled
### Disabled toggle

To disable the selection and expansion of a toggle, use the `isDisabled` property.

```ts
import React from 'react';
Expand All @@ -43,7 +50,9 @@ import { MenuToggle } from '@patternfly/react-core';

```

### Count
### With a badge

To display a count of selected items in a toggle, use the `badge` property.

```ts
import React from 'react';
Expand All @@ -53,51 +62,66 @@ import { MenuToggle, Badge } from '@patternfly/react-core';

```

### Primary
### With icons

To add a recognizable icon to a menu toggle, use the `icon` property. The following example adds a `CogIcon` to the toggle.

```ts
import React from 'react';
import { MenuToggle } from '@patternfly/react-core';
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';

<React.Fragment>
<MenuToggle variant="primary">Collapsed</MenuToggle>{' '}
<MenuToggle variant="primary" icon={<CogIcon />}>
Icon
</MenuToggle>{' '}
<MenuToggle variant="primary" isExpanded>
Expanded
</MenuToggle>{' '}
<MenuToggle variant="primary" isDisabled>
Disabled
</MenuToggle>
<MenuToggle icon={<CogIcon />} variant="primary">Icon</MenuToggle>{' '}
<MenuToggle icon={<CogIcon />} variant="secondary">Icon</MenuToggle>{' '}
<MenuToggle icon={<CogIcon />} variant="secondary" isDisabled>Icon</MenuToggle>
</React.Fragment>
```

### With avatar and text

You can also pass images into the `icon` property. The following example passes in an `<Avatar>` component with an `imgAvatar`.

This can be used alongside a text label that provides more context for the image.

```ts
import React from 'react';
import { MenuToggle, Avatar } from '@patternfly/react-core';
import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';

<React.Fragment>
<MenuToggle icon={<Avatar src={imgAvatar} alt="avatar" />}>Ned Username</MenuToggle>{' '}
<MenuToggle icon={<Avatar src={imgAvatar} alt="avatar" />} isExpanded>Ned Username</MenuToggle>{' '}
<MenuToggle icon={<Avatar src={imgAvatar} alt="avatar" />} isDisabled>Ned Username</MenuToggle>
</React.Fragment>
```

### Secondary
### Variant styles

Variant styling can be applied to menu toggles. In the following example, the toggle uses primary styling by passing `variant="primary"` into the `<MenuToggle>` component. Additional variant options include “default”, “plain”, “plainText”, “secondary”, and “typeahead”.

```ts
import React from 'react';
import { MenuToggle } from '@patternfly/react-core';
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';

<React.Fragment>
<MenuToggle variant="secondary">Collapsed</MenuToggle>{' '}
<MenuToggle variant="secondary" icon={<CogIcon />}>
Icon
</MenuToggle>{' '}
<MenuToggle variant="secondary" isExpanded>
<MenuToggle variant="primary">Collapsed</MenuToggle>{' '}
<MenuToggle variant="primary" isExpanded>
Expanded
</MenuToggle>{' '}
<MenuToggle variant="secondary" isDisabled>
<MenuToggle variant="primary" isDisabled>
Disabled
</MenuToggle>
</React.Fragment>

```

### Plain
### Plain toggle with icon

To apply plain styling to a menu toggle with an icon, pass in `variant="plain"`. This will remove the default bottom border and caret. You may pass in an `icon` to serve as the menu toggle. The following example passes in an `EllipsisVIcon`.

If the toggle does not have any visible text content, use the `aria-label` property to provide an accessible name.

```ts
import React from 'react';
Expand All @@ -107,16 +131,18 @@ import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-ico
<React.Fragment>
<MenuToggle variant="plain" aria-label="plain kebab">
<EllipsisVIcon />
</MenuToggle>
</MenuToggle>{' '}
<MenuToggle variant="plain" isExpanded aria-label="plain expanded kebab">
<EllipsisVIcon />
</MenuToggle>
</MenuToggle>{' '}
<MenuToggle variant="plain" isDisabled aria-label="disabled kebab">
<EllipsisVIcon />
</MenuToggle>
</React.Fragment>
```
### Plain with text
### Plain toggle with text label

To apply plain styling to a menu toggle with a text label, pass in `variant="plainText"`. Unlike the “plain” variant, “plainText” adds a caret pointing down in the toggle.

```ts
import React from 'react';
Expand All @@ -125,80 +151,48 @@ import { MenuToggle } from '@patternfly/react-core';
<React.Fragment>
<MenuToggle variant="plainText" isDisabled aria-label="Disabled plain menu toggle">
Disabled
</MenuToggle>
&nbsp;
</MenuToggle>{' '}
<MenuToggle variant="plainText" aria-label="Plain menu toggle">
Custom text
</MenuToggle>
</MenuToggle>{' '}
<MenuToggle variant="plainText" isExpanded aria-label="Expanded plain menu toggle">
Custom text (expanded)
</MenuToggle>
</React.Fragment>
```

### Split button (checkbox)

```ts file='MenuToggleSplitButtonCheckbox.tsx'
```
### Split button toggle with checkbox

### Split button (checkbox with toggle text)

```ts file='MenuToggleSplitButtonCheckboxWithText.tsx'
```
To add an action button or other control to a menu toggle, use a split button. A `<MenuToggle>` can be rendered as a split button by adding a `splitButtonOptions` object. Elements to be displayed before the toggle button must be included in the `items` property of `splitButtonOptions`.

### Split button (checkbox, primary)

```ts file='MenuToggleSplitButtonCheckboxPrimary.tsx'
```
The following example shows a split button with a `<MenuToggleCheckbox>`.

### Split button (checkbox, secondary)

```ts file='MenuToggleSplitButtonCheckboxSecondary.tsx'
```
Variant styling can be applied to split button toggles to adjust their appearance for different scenarios. Both "primary" and "secondary" variants can be used with split button toggles.

### Split button (action)

```ts file='MenuToggleSplitButtonAction.tsx'
```ts file='MenuToggleSplitButtonCheckbox.tsx'
```

### Split button (action, primary)

```ts file='MenuToggleSplitButtonActionPrimary.tsx'
```
### Split button toggle with text label

### Split button (action, secondary)
```ts file='MenuToggleSplitButtonActionSecondary.tsx'
To display text in a split button menu toggle, add a label to the `items` property of `splitButtonOptions`.

```ts file='MenuToggleSplitButtonCheckboxWithText.tsx'
```

### With icon/image and text
### Split button toggle with action

```ts
import React from 'react';
import { MenuToggle, Avatar } from '@patternfly/react-core';
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
To add an action to a split button, pass `variant='action'` into `splitButtonOptions` and add a `<MenuToggleAction>` to the `items` property of `splitButtonOptions`.

<React.Fragment>
<MenuToggle icon={<CogIcon />} variant="secondary">Icon</MenuToggle>{' '}
<MenuToggle icon={<CogIcon />} variant="secondary" isDisabled>Icon</MenuToggle>
</React.Fragment>
Actions may be used with primary and secondary toggle variants.

```ts file='MenuToggleSplitButtonAction.tsx'
```

### With avatar and text
### Full height toggle

```ts
import React from 'react';
import { MenuToggle, Avatar } from '@patternfly/react-core';
import imgAvatar from '@patternfly/react-core/src/components/Avatar/examples/avatarImg.svg';
A full height toggle fills the height of its parent. To flag a full height toggle, use the `isFullHeight` property.

<React.Fragment>
<MenuToggle icon={<Avatar src={imgAvatar} alt="avatar" />}>Ned Username</MenuToggle>{' '}
<MenuToggle icon={<Avatar src={imgAvatar} alt="avatar" />} isExpanded>Ned Username</MenuToggle>{' '}
<MenuToggle icon={<Avatar src={imgAvatar} alt="avatar" />} isDisabled>Ned Username</MenuToggle>
</React.Fragment>
```

### Full height
In the following example, the toggle fills the size of the "80px" `<div>` element that it is within.

```ts
import React from 'react';
Expand All @@ -211,7 +205,11 @@ import { MenuToggle } from '@patternfly/react-core';
</div>
```

### Full width
### Full width toggle

A full width toggle fills the width of its parent. To flag a full width toggle, use the `isFullWidth` property.

In the following example, the toggle fills the width of its parent as the window size changes.

```ts
import React from 'react';
Expand All @@ -225,3 +223,12 @@ const fullWidth: React.FunctionComponent = () => {
);
}
```

### Typeahead toggle

To create a typeahead toggle, pass in `variant="typeahead"` to the `<MenuToggle>`. Then, pass a `<TextInputGroup>` component as a child of the `<MenuToggle>`.

To create a multiple typeahead toggle, pass a `<TextInputGroup>` component implemented like the [text input group's filter example](/components/text-input-group#filters) as a child of `<MenuToggle>`.

```ts file='MenuToggleTypeahead.tsx'
```
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,40 @@ import { MenuToggleAction, MenuToggle } from '@patternfly/react-core';
export const MenuToggleSplitButtonAction: React.FunctionComponent = () => (
<React.Fragment>
<MenuToggle
isDisabled
splitButtonOptions={{
variant: 'action',
items: [
<MenuToggleAction
id="split-button-action-disabled-example-with-toggle-button"
key="split-action-disabled"
aria-label="Action"
isDisabled
>
<MenuToggleAction id="split-button-action-example-with-toggle-button" key="split-action" aria-label="Action">
Action
</MenuToggleAction>
]
}}
aria-label="Menu toggle with action split button"
/>{' '}
<MenuToggle
variant="primary"
splitButtonOptions={{
variant: 'action',
items: [
<MenuToggleAction id="split-button-action-example-with-toggle-button" key="split-action" aria-label="Action">
<MenuToggleAction
id="split-button-action-primary-example-with-toggle-button"
key="split-action-primary"
aria-label="Action"
>
Action
</MenuToggleAction>
]
}}
aria-label="Menu toggle with action split button"
/>{' '}
<MenuToggle
isExpanded
variant="secondary"
splitButtonOptions={{
variant: 'action',
items: [
<MenuToggleAction
id="split-button-action-expanded-example-with-toggle-button"
key="split-action-expanded"
id="split-button-action-secondary-example-with-toggle-button"
key="split-action-secondary"
aria-label="Action"
>
Action
Expand Down

This file was deleted.

Loading