import { Box, Button, Orientation, Step, StepContent, StepLabel, Stepper, Typography } from '@mui/material' import { StrictOmit } from 'fwork-jsts-common' import React, { CSSProperties } from 'react' export type StepData = { id: string, label: string, element: React.ReactNode, stepWrapperStyle?: CSSProperties, } export type StepComponentProps = { step: StepData, stepIndex: number, isLast: boolean, orientation: Orientation, setActiveStepIdx: React.Dispatch> onDisableNext?: (step: StepData) => boolean, onFinishConfirm?: (step: StepData) => void, } export const StepComponent = (props: StepComponentProps) => { const { step, stepIndex, isLast, orientation, setActiveStepIdx, onDisableNext, onFinishConfirm, } = props const nextStep = (args: { last: boolean, step: StepData, }) => { if (args.last) { onFinishConfirm?.(args.step) return } setActiveStepIdx(prevActiveStep => prevActiveStep + 1); }; const prevStep = () => { setActiveStepIdx(prevActiveStep => prevActiveStep - 1); }; return
{step.element} {stepIndex ? : <>}
} export type StepperComponentProps = { steps: Record, orientation: Orientation, onDisableNext?: (step: StepData) => boolean, onFinishConfirm?: (step: StepData) => void, style?: StrictOmit | undefined, } & StrictOmit, HTMLDivElement>, 'style'> export const StepperComponent: React.FC = ({ steps, orientation, onDisableNext, onFinishConfirm, ...props }) => { const [activeStepIdx, setActiveStepIdx] = React.useState(0); const stepsLen = Object.keys(steps).length return
{stepsLen > 1 && activeStepIdx < stepsLen && {(Object.values(steps)).map((step, index) => { const last = index === stepsLen - 1 return Último passo ) : null } > {step.label} {orientation == 'vertical' && } })} } {(stepsLen == 1 || orientation == 'horizontal') && }
}