step-wizard-react-hook
v0.3.2
Published
This is an attempt to create a form that validates as the user goes through each step. For now, it's most useful if you want to split the form but still have validation.
Downloads
11
Maintainers
Readme
Step Wizard for React Hook Form
This is an attempt to create a form that validates as the user goes through each step. For now, it's most useful if you want to split the form but still have validation.
Install
yarn add step-wizard-react-hook react-hook-form @hookform/resolvers yup
Code Example
import React from 'react';
import { StepWizardWrapper, StepWizardTab } from 'step-wizard-react-hook';
const MyStepWizard = StepWizardWrapper(<TabComponent />);
export const App = () => {
return (
<MyStepWizard onSubmit={(data) => console.log(data)}>
<StepWizardTab name="Step 1">
<p>Step 1</p>
</StepWizardTab>
<StepWizardTab name="Step 2">
<p>Step 2</p>
</StepWizardTab>
<StepWizardTab name="Step 3">
<p>Step 3</p>
</StepWizardTab>
</MyStepWizard>
);
};
StepWizardWrapper
StepWizardWrapper needs to be called with the layout component inside so that it becomes StepWizardProvider. The Provider has the following properties and extends react-hook-form UseFormProps
.
| Key | Type | Required | Description |
| --------------- | --------------------------- | -------- | -------------------------------------------------------------------------------------- |
| onSubmit
| SubmitHandler<FormValues>
| true
| On submit event for the last step. |
| aditionalData
| { [key: string]: any }
| false
| Any additional data you want to provide in case you don't want to use another Context. |
| children
| React.ReactNode
| true
| Tabs indicating each step of the form. |
StepWizardTab
This component is used to help the lib gather important information regarding each step.
| Key | Type | Required | Description |
| ------------------ | --------------------------- | -------- | ------------------------------------- |
| id
| string
| false
| Create a unique identifier if needed. |
| name
| string or React.ReactNode
| true
| Name for the layout tab bar. |
| validationSchema
| any
| false
| Yup validation schema for the step. |
| children
| React.ReactNode
| true
| Tab UI component for the form step. |
useStepWizard
This is the step wizard context containing the following data.
| Key | Type | Description |
| --------------- | ---------------------------------- | ---------------------------------------- |
| formRef
| React.RefObject<HTMLFormElement>
| Reference to the wrapper form |
| tabs
| StepWizardTabProps[]
| List of all children tabs props. |
| step
| number
| Current step. |
| currentTab
| StepWizardTabProps
| Current step tab. |
| aditionalData
| { [key: string]: any }
| Additional Data passed through Provider. |
| gotoStep
| (newStep?: number) => void
| Go to a specific step. |
| nextStep
| () => void
| Go to the next step. |
| previousStep
| () => void
| Go to the previous step. |