useStepper

A React Hook that helps to create a stepper state.

Demo

Source

Personal Information

Name:
Email:
Next: Address
{
  "name": "",
  "email": "",
  "address": "",
  "payment": ""
}

Usage

See API for more details.

Source

Click links below to view source on GitHub.

API

const step = useStepper(steps, initialStepIdx)

Steps

An array of steps, a step can be any object with functions, strings, or numbers, etc.

InitialStepIdx

A number that represents the initial step index.

Returns

export interface UseStepperReturns<StepName, Steps, Step> {
  /**
   * List of steps.
   */
  steps: Readonly<Steps>
  /**
   * Index of the current step.
   */
  index: number
  /**
   * Current step.
   */
  current: Step
  /**
   * Next step, or undefined if the current step is the last one.
   */
  next: StepName | undefined
  /**
   * Previous step, or undefined if the current step is the first one.
   */
  previous: StepName | undefined
  /**
   * Whether the current step is the first one.
   */
  isFirst: boolean
  /**
   * Whether the current step is the last one.
   */
  isLast: boolean
  /**
   * Get the step at the specified index.
   */
  at: (index: number) => Step | undefined
  /**
   * Get a step by the specified name.
   */
  get: (step: StepName) => Step | undefined
  /**
   * Go to the specified step.
   */
  goTo: (step: StepName) => void
  /**
   * Go to the next step. Does nothing if the current step is the last one.
   */
  goToNext(): void
  /**
   * Go to the previous step. Does nothing if the current step is the previous one.
   */
  goToPrevious(): void
  /**
   * Go back to the given step, only if the current step is after.
   */
  goBackTo: (step: StepName) => void
  /**
   * Checks whether the given step is the next step.
   */
  isNext: (step: StepName) => boolean
  /**
   * Checks whether the given step is the previous step.
   */
  isPrevious: (step: StepName) => boolean
  /**
   * Checks whether the given step is the current step.
   */
  isCurrent: (step: StepName) => boolean
  /**
   * Checks if the current step is before the given step.
   */
  isBefore: (step: StepName) => boolean
  /**
   * Checks if the current step is after the given step.
   */
  isAfter: (step: StepName) => boolean
}