React Native MultiStep 🚀
A flexible and animated multi-step form component for React Native, allowing you to easily create forms with multiple steps. 📝 The component provides step indicators, transition animations, and customizable buttons. 🎨
🌟 Features ✨
- ✅ Step Indicator: Displays a dynamic indicator to show the current step and progress. 📅
- ✅ Animations: Includes an animated scale effect on the active step indicator. 🔄
- ✅ Customizable Buttons: Custom labels and styles for the back, next, and done buttons. 🔘
- ✅ Customizable Styles: Easily customize every part of the form, including content container, step indicators, buttons, etc. 🎨
🔧 Installation 📦
- Install the necessary dependencies:
npm install react-native-multistep
or
yarn add react-native-multistep
- Import the
MultiStepForm
component into your app: 📜
import { MultiStepForm } from 'react-native-multistep';
⚛️ Props
Prop | Type | Default | Description |
---|---|---|---|
stepsContent (required) |
React.ReactNode[] |
- | An array of React nodes, where each node represents the content for each step. 🗂️ |
onStepChange (optional) |
(currentStep: number) => void |
- | A callback triggered whenever the step changes. 🔄 |
onStepForward (optional) |
(currentStep: number) => void |
- | A callback triggered when navigating to the next step. ⏭️ |
onStepBackward (optional) |
(currentStep: number) => void |
- | A callback triggered when navigating to the previous step. 🔙 |
backButtonLabel (optional) |
string |
Back |
Label for the Back button 🔙 |
nextButtonLabel (optional) |
string |
Next |
Label for the Next button ▶️ |
doneButtonLabel (optional) |
string |
Done |
Label for the Done button ✅ |
onComplete (optional) |
() => void |
- | A callback triggered when the form is completed. 🎉 |
style (optional) |
StyleProp<ViewStyle> |
- | Custom style for the root container. 🖌️ |
nextButtonStyle (optional) |
StyleProp<ViewStyle> |
- | Custom style for the Next button 🔹 |
previousButtonStyle (optional) |
StyleProp<ViewStyle> |
- | Custom style for the Previous button 🔙 |
doneButtonStyle (optional) |
StyleProp<ViewStyle> |
- | Custom style for the Done button ✅ |
stepsContainerStyle (optional) |
StyleProp<ViewStyle> |
- | Custom style for the step indicators container 🔢 |
activeStepStyle (optional) |
StyleProp<ViewStyle> |
- | Custom style for active step indicators 🔥 |
inactiveStepStyle (optional) |
StyleProp<ViewStyle> |
- | Custom style for inactive step indicators ❄️ |
contentContainerStyle (optional) |
StyleProp<ViewStyle> |
- | Custom style for the content container 📝 |
buttonsContainerStyle (optional) |
StyleProp<ViewStyle> |
- | Custom style for the footer buttons container ⚙️ |
lineColor (optional) |
string |
- | Custom color for the line between indicators ✅ |
activeLineColor (optional) |
string |
- | Custom color for the active line between indicators ✅ |
📖 Usage Example 🧵
import React from 'react';
import { MultiStepForm } from 'react-native-multistep';
import { Text, View } from 'react-native';
const App = () => {
const stepsContent = [
<Text>Step 1: Personal Information 👤</Text>,
<Text>Step 2: Address 📍</Text>,
<Text>Step 3: Review ✅</Text>,
];
const handleStepChange = (currentStep: number) => {
console.log(`Current Step: ${currentStep}`);
};
const handleComplete = () => {
console.log('Form Completed! 🎉');
};
return (
<MultiStepForm
stepsContent={stepsContent}
onStepChange={handleStepChange}
onComplete={handleComplete}
backButtonLabel="Go Back 🔙"
nextButtonLabel="Next Step ▶️"
doneButtonLabel="Finish ✅"
style={{ padding: 20 }}
nextButtonStyle={{ backgroundColor: 'blue' }}
previousButtonStyle={{ backgroundColor: 'gray' }}
doneButtonStyle={{ backgroundColor: 'green' }}
activeStepStyle={{ backgroundColor: 'blue' }}
inactiveStepStyle={{ backgroundColor: 'lightgray' }}
/>
);
};
export default App;
🎨 Styling
The component uses StyleSheet.create
for default styles. Customize your form by passing the relevant props:
- Root Container:
style
🖌️ - Step Indicator Container:
stepsContainerStyle
🔢 - Active/Inactive Step Indicators:
activeStepStyle
,inactiveStepStyle
🔥 - Content Area:
contentContainerStyle
📝 - Footer Buttons Container:
buttonsContainerStyle
⚙️ - Back Button:
previousButtonStyle
🔙 - Next Button:
nextButtonStyle
▶️ - Done Button:
doneButtonStyle
✅
🔄 Animations
- Step Indicator Animation 🎥: The active step indicator includes a scale effect when selected, providing a quick visual cue to the user. 🔄
🤝 Contributing
See the contributing guide to learn how to contribute to the project. 🛠️
📜 License
MIT 📝
Made with ❤️ by Aziz Becha 🌟