use-wizard
Version:
A dead-easy-to-use light-weight react hook to handle multi-paths wizards (and simple wizards too) and navigate into them.
25 lines (18 loc) • 978 B
text/typescript
import {isStepLastOfLasts} from "./nextStep/isStepLastOfLasts";
import {getNextStep} from "./nextStep/getNextStep";
import {TStep} from "../types/TStep";
import {TWizardOptions} from "../types/TWizardOptions";
import {TWizardType} from "../types/TWizardType";
import {getWizardType} from "./nextStep/getWizardType";
export {nextStep};
const nextStep = (args: { wizardType: TWizardType, history: TStep[], setHistory: Function, setPoppedHistory: Function, options: TWizardOptions }) => () => {
args.setPoppedHistory([]);
if(args.wizardType === "linearN") {
return args.setHistory((ps: number[]) => [...ps, ps[ps.length - 1] + 1]);
}
if(isStepLastOfLasts(args.options, args.history[args.history.length - 1] as string)) {
return console.log("Wizard warning: impossible to process nextStep(), you hit the last step");
}
args.setHistory((ps: any) => [...ps, getNextStep(args.history[args.history.length - 1] as string, args.options)]);
return;
}