Skip to content

Commit 2cab09f

Browse files
committed
fix: active component from props
Signed-off-by: aabidsofi19 <[email protected]>
1 parent 077420a commit 2cab09f

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

src/custom/Stepper/index.tsx

+29-22
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,30 @@ import { Box, IconProps, Stack, Step, StepConnector, StepLabel, Stepper } from '
22
import { stepConnectorClasses } from '@mui/material/StepConnector';
33
import { StepIconProps } from '@mui/material/StepIcon';
44
import { styled } from '@mui/system';
5-
import React, { useState } from 'react';
5+
import React, { useMemo, useState } from 'react';
66

77
interface ColorlibStepIconPropsI extends StepIconProps {
88
icons: React.ComponentType<IconProps>[];
99
}
1010

1111
interface StepI {
1212
label: string;
13-
component: React.ComponentType<CustomizedStepperPropsI>;
13+
component: React.ComponentType;
1414
icon: React.ComponentType<IconProps>;
1515
}
1616

1717
interface UseStepperOptionsI {
1818
steps: StepI[];
1919
}
2020

21-
// type SharedData = unknown;
22-
2321
interface CustomizedStepperPropsI {
22+
activeStep: number;
23+
stepLabels: string[];
24+
children: React.ReactNode;
25+
icons: React.ComponentType<IconProps>[];
26+
}
27+
28+
interface UseStepperI {
2429
steps: StepI[];
2530
activeStep: number;
2631
setActiveStep: React.Dispatch<React.SetStateAction<number>>;
@@ -29,8 +34,9 @@ interface CustomizedStepperPropsI {
2934
goToStep: (step: number) => void;
3035
canGoBack: boolean;
3136
canGoForward: boolean;
32-
// sharedData: SharedData;
33-
// setSharedData: React.Dispatch<React.SetStateAction<null>>;
37+
stepLabels: string[];
38+
icons: React.ComponentType<IconProps>[];
39+
activeStepComponent: React.ComponentType;
3440
}
3541

3642
const ColorlibConnector = styled(StepConnector)(() => ({
@@ -100,38 +106,33 @@ function ColorlibStepIcon(props: ColorlibStepIconPropsI) {
100106
}
101107

102108
const CustomizedStepper: React.FC<CustomizedStepperPropsI> = ({
103-
steps,
109+
stepLabels,
104110
activeStep,
105-
...otherProps
111+
children,
112+
icons
106113
}) => {
107-
const icons = steps.map((step) => step.icon);
108-
const ActiveComponent = steps[activeStep].component;
109-
110114
return (
111115
<Stack spacing={2}>
112116
<Stack direction="row" justifyContent="center">
113117
<Stepper alternativeLabel activeStep={activeStep} connector={<ColorlibConnector />}>
114-
{steps.map((step) => (
115-
<Step key={step.label}>
118+
{stepLabels.map((label) => (
119+
<Step key={label}>
116120
<StepLabel
117121
StepIconComponent={(props) => <ColorlibStepIcon {...props} icons={icons} />}
118122
>
119-
{step.label}
123+
{label}
120124
</StepLabel>
121125
</Step>
122126
))}
123127
</Stepper>
124128
</Stack>
125-
<StepContentWrapper>
126-
<ActiveComponent activeStep={activeStep} {...otherProps} steps={steps} />
127-
</StepContentWrapper>
129+
<StepContentWrapper>{children}</StepContentWrapper>
128130
</Stack>
129131
);
130132
};
131133

132-
export const useStepper = ({ steps }: UseStepperOptionsI): CustomizedStepperPropsI => {
134+
export const useStepper = ({ steps }: UseStepperOptionsI): UseStepperI => {
133135
const [activeStep, setActiveStep] = useState(0);
134-
// const [sharedData, setSharedData] = useState({});
135136

136137
const handleNext = () => {
137138
if (activeStep === steps.length - 1) {
@@ -158,17 +159,23 @@ export const useStepper = ({ steps }: UseStepperOptionsI): CustomizedStepperProp
158159
const canGoBack = activeStep > 0;
159160
const canGoForward = activeStep < steps.length - 1;
160161

162+
const icons = useMemo(() => steps.map((step) => step.icon), [steps]);
163+
const stepLabels = useMemo(() => steps.map((step) => step.label), [steps]);
164+
165+
const activeStepComponent = steps[activeStep].component;
166+
161167
return {
162168
activeStep,
163169
setActiveStep,
164-
// sharedData,
165-
// setSharedData,
166170
handleNext,
167171
goBack,
168172
goToStep,
169173
steps,
170174
canGoBack,
171-
canGoForward
175+
stepLabels,
176+
icons,
177+
canGoForward,
178+
activeStepComponent
172179
};
173180
};
174181

0 commit comments

Comments
 (0)