UNPKG

@visa/nova-react

Version:

Visa Product Design System Nova React library. Compatible with React ^19.

2 lines (1 loc) 1.27 kB
import{useState as e}from"react";const t={autoProgressComplete:!0,autoProgressError:!1,defaultActiveStep:0,isExclusiveSets:!0,length:1},r=(r=t)=>{const{autoProgressComplete:s,autoProgressError:o,isExclusiveSets:n,length:a,defaultActiveStep:S}={...t,...r},[i,l]=e(()=>new Set),[p,u]=e(S),[d,c]=e(()=>new Set),[w,m]=e(S),g=e=>{c(e=>{const t=new Set(e);return t.delete(p),t});let t=e;e<0?t=0:e>=a&&(t=a-1),m(e=>Math.max(e,t)),u(t)},v=()=>{g(p+1)};return{currentStep:p,hasError:()=>d.size>0,isStepAvailable:e=>e<=w,isFirstStep:e=>0===e,isLastStep:e=>e===a-1,isStepComplete:e=>i.has(e),isStepError:e=>d.has(e),isWizardComplete:()=>i.size===a,maxStep:w,onStepChange:g,onStepNext:v,onStepPrevious:()=>{g(p-1)},onStepComplete:(e,{autoProgress:t}={})=>{l(t=>new Set(t).add(e)),n&&c(t=>{const r=new Set(t);return r.delete(e),r}),(void 0===t&&s||t)&&v()},onStepError:(e,{autoProgress:t}={})=>{c(t=>new Set(t).add(e)),n&&l(t=>{const r=new Set(t);return r.delete(e),r}),(void 0===t&&o||t)&&v()},onStepReset:e=>{c(t=>{const r=new Set(t);return r.delete(e),r}),l(t=>{const r=new Set(t);return r.delete(e),r})},onWizardReset:(e=S)=>{l(t=>new Set([...t].filter(t=>t<e))),c(t=>new Set([...t].filter(t=>t<e))),u(e),m(e)}}};r.displayName="useWizard";export{r as default,r as useWizard};