React Step Wizard
A flexible multistep wizard built for React.
Showcasing
If you've made something you're proud of with react-step-wizard
and want to show it off to the world, send me a message with a link to your project and I'll add it to the README!
Install
npm install react-step-wizard
Import Component
import StepWizard from 'react-step-wizard';
JSX Syntax
Simply create a wrapper with <StepWizard></StepWizard>
and each child component will be treated as an individual step.
<StepWizard>
<Step1 />
<Step2 />
...
<Step5 />
<WhateverComponentName />
</StepWizard>
Props
I wanted this step wizard to be as flexible as possible so each child has access to the StepWizard functions via this.props
For example:
<div>
<!-- Variables -->
<h2>Step {this.props.currentStep}</h2>
<p>Total Steps: {this.props.totalSteps}</p>
<p>Is Active: {this.props.isActive}</p>
<!-- Functions -->
<p><button onClick={this.props.previousStep}>Previous Step</button></p>
<p><button onClick={this.props.nextStep}>Next Step</button></p>
<p><button onClick={()=>this.props.goToStep(2)}>Step 2</button></p>
<p><button onClick={this.props.firstStep}>First Step</button></p>
<p><button onClick={this.props.lastStep}>Last Step</button></p>
</div>
User-Defined Props
Prop | Data Type | Default |
---|---|---|
initialStep | integer |
none |
transitions | object |
none |
Props Accessible On Each Child (Step) Component
Prop | Data Type | Parameters |
---|---|---|
currentStep | integer |
|
totalSteps | integer |
|
firstStep | function |
|
lastStep | function |
|
nextStep | function |
|
previousStep | function |
|
goToStep | function |
integer : goToStep(3) |
Transitions
The default transitions are using CSS taken from animate.css. You can override the transitions by passing in custom CSS classes to the transitions
prop in <StepWizard>
.
let custom = {
enterRight: 'your custom css transition classes',
enterLeft : 'your custom css transition classes',
exitRight : 'your custom css transition classes',
exitLeft : 'your custom css transition classes'
}
<StepWizard transitions={custom}>...</StepWizard>
Initial Step
The order of your steps in JSX will be loaded in the same order in the browser. However, you may specify which step to start on page load by using the initialStep
prop. It accepts a numeric value corresponding to the step order.
<StepWizard initialStep={3}>...</StepWizard>
Alternatively, passing the active
prop to a child component makes it the initial step. This doesn't reorder it to be first but rather skips directly to it on start.
<StepWizard>
<Step1>...</Step1>
<Step2 active>...</Step2>
</StepWizard>
*Neglecting to pass in the active
prop will result in the first component displaying first.