Skip to content

Commit f963ecc

Browse files
committed
step.lock
1 parent feb0e11 commit f963ecc

3 files changed

Lines changed: 16 additions & 73 deletions

File tree

src/index.js

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,6 @@ import { Steps, Step, Button, Navigation } from "./lib";
55
import "./style.css";
66

77
const Step1 = props => {
8-
const { firstname, lastname } = props.mainState;
9-
console.log(props.locks);
10-
useEffect(() => {
11-
if (props.mainState.firstname && props.mainState.lastname) {
12-
props.unlockNextStep();
13-
} else {
14-
props.lockNextStep();
15-
}
16-
}, [firstname, lastname]);
17-
188
return (
199
<div>
2010
First Name:{" "}
@@ -34,16 +24,6 @@ const Step1 = props => {
3424
};
3525

3626
const Step2 = props => {
37-
const { email, password } = props.mainState;
38-
console.log(props.locks);
39-
useEffect(() => {
40-
if (props.mainState.email && props.mainState.password) {
41-
props.unlockNextStep();
42-
} else {
43-
props.lockNextStep();
44-
}
45-
}, [email, password]);
46-
4727
return (
4828
<div>
4929
Email:{" "}
@@ -63,16 +43,6 @@ const Step2 = props => {
6343
};
6444

6545
const Step3 = props => {
66-
const { address, phone } = props.mainState;
67-
console.log(props.locks);
68-
useEffect(() => {
69-
if (props.mainState.address && props.mainState.phone) {
70-
props.unlockNextStep();
71-
} else {
72-
props.lockNextStep();
73-
}
74-
}, [address, phone]);
75-
7646
return (
7747
<div>
7848
Address:{" "}

src/lib/Navigators.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@ import { StepContext } from "./Steps";
33

44
export const Button = ({ next, prev, text, ...theRest }) => {
55
const context = useContext(StepContext);
6-
const { prevStep, nextStep, steps, locks } = context;
6+
const { prevStep, nextStep, steps } = context;
77

88
return (prev && steps.current === 1) ||
99
(next && steps.current === steps.total) ? null : (
1010
<button
1111
onClick={next ? nextStep : prev ? prevStep : null}
12-
disabled={
13-
next && locks.filter(item => item.step === steps.current + 1)[0].locked
14-
}
12+
disabled={next && steps.current + 1 === steps.lock}
1513
{...theRest}
1614
>
1715
{text}
@@ -21,15 +19,15 @@ export const Button = ({ next, prev, text, ...theRest }) => {
2119

2220
export const Navigation = ({ text, before, after }) => {
2321
const context = useContext(StepContext);
24-
const { jumpToStep, steps, locks } = context;
22+
const { jumpToStep, steps } = context;
2523
const stepsArray = [...Array(steps.total).keys()].map(x => x + 1);
2624

2725
return stepsArray.map(step => {
2826
return (
2927
<button
3028
key={step}
3129
onClick={() => jumpToStep(step)}
32-
disabled={locks.filter(item => item.step === step)[0].locked} //steps.current === step ||
30+
disabled={step >= steps.lock} //steps.current === step ||
3331
>
3432
{text || `${before || ""}${step}${after || ""}`}
3533
</button>

src/lib/Steps.js

Lines changed: 12 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -16,38 +16,13 @@ const useMainState = INITIAL_VALUE => {
1616
export const useStepNavigation = (totalSteps, lockMode) => {
1717
const [currentStep, setCurrentStep] = React.useState(1);
1818

19-
const stepLocks = [...Array(totalSteps).keys()].map((x, i) => ({
20-
step: x + 1,
21-
locked: !lockMode || i === 0 ? false : true
22-
}));
23-
24-
const [locks, setLocks] = React.useState(stepLocks);
25-
26-
const unlockNextStep = () =>
27-
setLocks(
28-
locks.map(item =>
29-
item.step <= currentStep + 1 ? { ...item, locked: false } : item
30-
)
31-
);
32-
33-
const lockNextStep = () => {
34-
setLocks(
35-
locks.map(item =>
36-
item.step === currentStep + 1 ? { ...item, locked: true } : item
37-
)
38-
);
39-
};
40-
4119
const prevStep = () => setCurrentStep(currentStep > 2 ? currentStep - 1 : 1);
4220
const nextStep = () =>
4321
setCurrentStep(currentStep < totalSteps ? currentStep + 1 : totalSteps);
4422
const jumpToStep = step => setCurrentStep(Number(step));
4523

4624
return [
47-
{ current: currentStep, total: totalSteps },
48-
locks,
49-
lockNextStep,
50-
unlockNextStep,
25+
{ current: currentStep, total: totalSteps, lock: currentStep + 1 },
5126
prevStep,
5227
nextStep,
5328
jumpToStep
@@ -56,26 +31,26 @@ export const useStepNavigation = (totalSteps, lockMode) => {
5631

5732
const Steps = ({ totalSteps, lockMode, children }) => {
5833
const [mainState, setMainState, handleChange] = useMainState({});
59-
const [
60-
steps,
61-
locks,
62-
lockNextStep,
63-
unlockNextStep,
34+
const [steps, prevStep, nextStep, jumpToStep] = useStepNavigation(
35+
totalSteps,
36+
lockMode
37+
);
38+
console.log({
39+
mainState,
40+
setMainState,
41+
handleChange,
42+
steps: { total: steps.total, current: steps.current, lock: steps.lock },
6443
prevStep,
6544
nextStep,
6645
jumpToStep
67-
] = useStepNavigation(totalSteps, lockMode);
68-
46+
});
6947
return (
7048
<StepContext.Provider
7149
value={{
7250
mainState,
7351
setMainState,
7452
handleChange,
75-
steps: { total: steps.total, current: steps.current },
76-
locks,
77-
lockNextStep,
78-
unlockNextStep,
53+
steps: { total: steps.total, current: steps.current, lock: steps.lock },
7954
prevStep,
8055
nextStep,
8156
jumpToStep

0 commit comments

Comments
 (0)