- A Complete Example for From Stepper in React Js.
// FormStepper.js
import React, { useState } from 'react';
import './FormStepper.css'; // Ensure this is correctly linked
const FormStepper = () => {
const [currentStep, setCurrentStep] = useState(1);
const totalSteps = 10; // Define the total number of steps
const nextStep = () => {
if (currentStep < totalSteps) {
setCurrentStep(currentStep + 1);
}
};
const prevStep = () => {
if (currentStep > 1) {
setCurrentStep(currentStep - 1);
}
};
const renderStepContent = (step) => {
// Your switch case for content rendering
};
// Function to render step indicators
const renderStepIndicators = () => {
return Array.from({ length: totalSteps }, (_, index) => (
<div key={index} className={`step-indicator ${currentStep === index + 1 ? 'active' : ''}`}>
{index + 1}
</div>
));
};
return (
<div className="form-stepper">
<div className="steps-header">
{renderStepIndicators()}
<hr className="stepper-line" /> {/* Horizontal line */}
</div>
<div className="step-content">{renderStepContent(currentStep)}</div>
<div className="stepper-controls">
{currentStep > 1 && <button onClick={prevStep}>Back</button>}
{currentStep < totalSteps && <button onClick={nextStep}>Next</button>}
{currentStep === totalSteps && <button onClick={() => alert('Form submitted!')}>Submit</button>}
</div>
</div>
);
};
export default FormStepper;
/* FormStepper.css */
.form-stepper {
display: flex;
flex-direction: column;
align-items: center;
padding: 20px;
}
.steps-header {
position: relative;
display: flex;
justify-content: space-between;
width: 100%;
margin-bottom: 20px;
}
.step-indicator {
width: 30px;
height: 30px;
line-height: 30px;
border-radius: 50%;
background-color: #e0e0e0;
color: #000;
text-align: center;
}
.step-indicator.active {
background-color: #4caf50;
color: #fff;
}
.stepper-line {
position: absolute;
width: 100%;
top: 6px;
/* Adjust this based on the size of your step indicators */
border: 0;
height: 2px;
background-color: #e0e0e0;
z-index: -1;
}
.step-content {
margin-bottom: 20px;
}
.stepper-controls button {
margin: 5px;
padding: 10px 15px;
font-size: 16px;
cursor: pointer;
}
// App.js
import React from 'react'
import FormStepper from './FormStepper'
const App = () => {
return (<>
<FormStepper />
</>)
}
export default App
No comments:
Post a Comment