@patternfly/react-core
Version:
This library provides a set of common React components for use with the PatternFly reference implementation.
232 lines (221 loc) • 5.86 kB
Markdown
---
id: Wizard
section: components
---
import {
Brand,
Breadcrumb,
BreadcrumbItem,
Modal,
ModalVariant,
Nav,
NavItem,
NavList,
Page,
PageToggleButton,
PageSection,
PageSectionTypes,
PageSectionVariants,
PageSidebar,
Progress,
SkipToContent,
Text,
TextContent,
Title,
Wizard
} from '@patternfly/react-core';
import imgBrand from './imgBrand.svg';
import BarsIcon from '@patternfly/react-icons/dist/js/icons/bars-icon';
## Demos
### In Modal
```js isFullscreen
import React from 'react';
import { Modal, ModalVariant, Wizard } from '@patternfly/react-core';
class BasicWizardDemo extends React.Component {
render() {
const steps = [
{ id: 0, name: 'Information', component: <p>Step 1 content</p> },
{
id: 1,
name: 'Configuration',
steps: [
{
id: 2,
name: 'Substep A',
component: <p>Configuration substep A</p>
},
{
id: 3,
name: 'Substep B',
component: <p>Configuration substep B</p>
}
],
component: <p>Step 2 content</p>
},
{ id: 4, name: 'Additional', component: <p>Step 3 content</p> },
{ id: 5, name: 'Review', component: <p>Review step content</p>, nextButtonText: 'Finish' }
];
const title = 'Basic wizard';
return (
<Modal
isOpen
variant={ModalVariant.large}
showClose={false}
hasNoBodyWrapper
aria-describedby="wiz-modal-demo-description"
aria-labelledby="wiz-modal-demo-title"
>
<Wizard
navAriaLabel={`${title} steps`}
mainAriaLabel={`${title} content`}
titleId="wiz-modal-demo-title"
descriptionId="wiz-modal-demo-description"
title="Simple wizard in modal"
description="Simple wizard description"
steps={steps}
height={400}
/>
</Modal>
);
}
}
```
### In Page
```js isFullscreen
import React from 'react';
import {
Brand,
Breadcrumb,
BreadcrumbItem,
Nav,
NavItem,
NavList,
Page,
PageSection,
PageSectionTypes,
PageSectionVariants,
PageSidebar,
Progress,
SkipToContent,
Text,
TextContent,
Title,
Wizard,
Masthead,
PageToggleButton,
MastheadToggle,
MastheadMain,
MastheadBrand
} from '@patternfly/react-core';
import imgBrand from './imgBrand.svg';
import BarsIcon from '@patternfly/react-icons/dist/js/icons/bars-icon';
class FullPageWizard extends React.Component {
constructor(props) {
super(props);
this.state = {
activeItem: 0
};
this.onNavSelect = result => {
this.setState({
activeItem: result.itemId
});
};
}
render() {
const { activeItem } = this.state;
const PageNav = (
<Nav onSelect={this.onNavSelect} aria-label="Nav">
<NavList>
<NavItem itemId={0} isActive={activeItem === 0}>
System Panel
</NavItem>
<NavItem itemId={1} isActive={activeItem === 1}>
Policy
</NavItem>
<NavItem itemId={2} isActive={activeItem === 2}>
Authentication
</NavItem>
<NavItem itemId={3} isActive={activeItem === 3}>
Network Services
</NavItem>
<NavItem itemId={4} isActive={activeItem === 4}>
Server
</NavItem>
</NavList>
</Nav>
);
const Header = (
<Masthead id="basic">
<MastheadToggle>
<PageToggleButton variant="plain" aria-label="Global navigation">
<BarsIcon />
</PageToggleButton>
</MastheadToggle>
<MastheadMain>
<MastheadBrand>
<Brand src={imgBrand} alt="Patternfly logo" />
</MastheadBrand>
</MastheadMain>
</Masthead>
);
const Sidebar = <PageSidebar nav={PageNav} />;
const pageId = 'main-content-page-layout-default-nav';
const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;
const PageBreadcrumb = (
<Breadcrumb>
<BreadcrumbItem>Section home</BreadcrumbItem>
<BreadcrumbItem to="#">Section title</BreadcrumbItem>
<BreadcrumbItem to="#">Section title</BreadcrumbItem>
<BreadcrumbItem to="#" isActive>
Section landing
</BreadcrumbItem>
</Breadcrumb>
);
const steps = [
{ id: 0, name: 'Information', component: <p>Step 1 content</p> },
{
id: 1,
name: 'Configuration',
steps: [
{
id: 2,
name: 'Substep A',
component: <p>Configuration substep A</p>
},
{
id: 3,
name: 'Substep B',
component: <p>Configuration substep B</p>
}
],
component: <p>Step 2 content</p>
},
{ id: 4, name: 'Additional', component: <p>Step 3 content</p> },
{ id: 5, name: 'Review', component: <p>Review step content</p>, nextButtonText: 'Finish' }
];
const title = 'Basic wizard';
return (
<React.Fragment>
<Page
header={Header}
sidebar={Sidebar}
isManagedSidebar
skipToContent={PageSkipToContent}
breadcrumb={PageBreadcrumb}
mainContainerId={pageId}
>
<PageSection variant={PageSectionVariants.light}>
<TextContent>
<Text component="h1">Main title</Text>
<Text component="p">A demo of a wizard in a page.</Text>
</TextContent>
</PageSection>
<PageSection type={PageSectionTypes.wizard} variant={PageSectionVariants.light}>
<Wizard navAriaLabel={`${title} steps`} mainAriaLabel={`${title} content`} steps={steps} />
</PageSection>
</Page>
</React.Fragment>
);
}
}
```