@yamada-ui/stepper
Version:
Yamada UI stepper component
1 lines • 2.51 kB
Source Map (JSON)
{"version":3,"sources":["../src/use-steps.ts"],"sourcesContent":["import { useCallback, useState } from \"react\"\n\nexport interface UseStepsProps {\n count?: number\n index?: number\n}\n\nexport const useSteps = ({ count, index = 0 }: UseStepsProps) => {\n const [activeStep, setActiveStep] = useState(index)\n\n const maxStep = typeof count === \"number\" ? count - 1 : 0\n const activeStepPercent = activeStep / maxStep\n\n const isActiveStep = useCallback(\n (step: number) => step === activeStep,\n [activeStep],\n )\n\n const isCompleteStep = useCallback(\n (step: number) => step < activeStep,\n [activeStep],\n )\n\n const isIncompleteStep = useCallback(\n (step: number) => step > activeStep,\n [activeStep],\n )\n\n const getStepStatus = useCallback(\n (step: number): \"active\" | \"complete\" | \"incomplete\" => {\n if (step < activeStep) return \"complete\"\n if (step > activeStep) return \"incomplete\"\n\n return \"active\"\n },\n [activeStep],\n )\n\n const onStepNext = useCallback(\n () =>\n setActiveStep((step) =>\n typeof count === \"number\" ? Math.min(count, step + 1) : step + 1,\n ),\n [count],\n )\n\n const onStepPrev = useCallback(\n () => setActiveStep((step) => Math.max(0, step - 1)),\n [],\n )\n\n return {\n activeStep,\n activeStepPercent,\n getStepStatus,\n isActiveStep,\n isCompleteStep,\n isIncompleteStep,\n setActiveStep,\n onStepNext,\n onStepPrev,\n }\n}\n\nexport type UseStepsReturn = ReturnType<typeof useSteps>\n"],"mappings":";;;AAAA,SAAS,aAAa,gBAAgB;AAO/B,IAAM,WAAW,CAAC,EAAE,OAAO,QAAQ,EAAE,MAAqB;AAC/D,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,UAAU,OAAO,UAAU,WAAW,QAAQ,IAAI;AACxD,QAAM,oBAAoB,aAAa;AAEvC,QAAM,eAAe;AAAA,IACnB,CAAC,SAAiB,SAAS;AAAA,IAC3B,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,iBAAiB;AAAA,IACrB,CAAC,SAAiB,OAAO;AAAA,IACzB,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,mBAAmB;AAAA,IACvB,CAAC,SAAiB,OAAO;AAAA,IACzB,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,gBAAgB;AAAA,IACpB,CAAC,SAAuD;AACtD,UAAI,OAAO,WAAY,QAAO;AAC9B,UAAI,OAAO,WAAY,QAAO;AAE9B,aAAO;AAAA,IACT;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,aAAa;AAAA,IACjB,MACE;AAAA,MAAc,CAAC,SACb,OAAO,UAAU,WAAW,KAAK,IAAI,OAAO,OAAO,CAAC,IAAI,OAAO;AAAA,IACjE;AAAA,IACF,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,aAAa;AAAA,IACjB,MAAM,cAAc,CAAC,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,CAAC;AAAA,IACnD,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}