Demos
StepIndicator in loose mode
Every step can be clicked.
You want to place <StepIndicator.Sidebar sidebar_id="unique-id-loose" />
somewhere in your layout.
const InteractiveDemo = () => {const [step, setStep] = React.useState(1)return (<div style={{ display: 'flex' }}><StepIndicator.Sidebar sidebar_id="unique-id-loose" /><Space stretch><StepIndicatorsidebar_id="unique-id-loose"mode="loose"current_step={step}on_change={({ current_step }) => {setStep(current_step)}}data={['Cum odio si bolig bla et ta','Auctor tortor vestibulum placerat bibendum sociis aliquam nunc sed venenatis massa eget duis','Bibendum sociis']}bottom/><Buttonvariant="secondary"on_click={() => {setStep((step) => {if (step >= 2) {step = -1}return step + 1})}}>Next step</Button></Space></div>)}render(<InteractiveDemo />)
StepIndicator in strict mode
Every visited step can be clicked, including the current step.
You want to place <StepIndicator.Sidebar sidebar_id="unique-id-strict" />
somewhere in your layout.
<StepIndicator.Sidebar sidebar_id="unique-id-strict" /><StepIndicatorsidebar_id="unique-id-strict"mode="strict"current_step={1}on_change={({ current_step }) => {console.log('on_change', current_step)}}data={[{title: 'Velg mottaker',},{title: 'Bestill eller erstatt',on_click: ({ current_step }) =>console.log('current_step:', current_step),status: 'Du må velge bestill nytt kort eller erstatt kort for å kunne fullføre bestillingen din.'},{title: 'Oppsummering',}]}/>
StepIndicator in static mode
None of the steps are clickable.
You want to place <StepIndicator.Sidebar sidebar_id="unique-id-static" />
somewhere in your layout.
<StepIndicatorsidebar_id="unique-id-static"mode="static"current_step={1}on_change={({ current_step }) => {console.log('on_change', current_step)}}data={[{title: 'Om din nye bolig',},{title: 'Ditt lån og egenkapital',on_click: ({ current_step }) =>console.log(current_step)},{title: 'Oppsummering',}]}/>
StepIndicator with sidebar
<StepIndicatorstyle={{ display: 'none' }}sidebar_id="unique-id-sidebar"mode="loose"data={[{title: 'Om din nye bolig'},{title: 'Ditt lån og egenkapital'},{title: 'Oppsummering',is_current: true}]}/><StepIndicator.Sidebar sidebar_id="unique-id-sidebar" top="large" />
StepIndicator with a router
const StepIndicatorWithRouter = () => {const [currentStep, setCurrentStep] = React.useState(1)const [history, setInstance] = React.useState(null)React.useEffect(()=>{const history = createBrowserHistory()const step = parseFloat(history.location.search?.replace(/[?]/, '')) || 1setCurrentStep(step)setInstance(history)}, [])return (<><StepIndicatorsidebar_id="step-indicator-router"mode="loose"current_step={currentStep - 1}on_change={({ current_step }) => {const step = current_step + 1setCurrentStep(step)history.push('?' + step)}}data={[{title: 'Om din nye bolig',},{title: 'Ditt lån og egenkapital',},{title: 'Oppsummering',},]}space/><StepIndicator.Sidebar sidebar_id="step-indicator-router" space /></>)}render(<StepIndicatorWithRouter />)
StepIndicator customized
Completely customized step indicator.
function CustomStepIndicator({ children, ...props }) {const [step, setStep] = React.useState(0)return (<><StepIndicatorsidebar_id="unique-id-customized"mode="loose"current_step={step}on_change={({ current_step }) => setStep(current_step)}{...props}/><Section style_type="lavender" spacing>{children(step)}</Section></>)}render(<CustomStepIndicatordata={[{title: 'First',is_current: true,},{title: 'Second',},{title: 'Last',}]}>{(step) => {switch (step) {case 0:return <>Step One</>case 1:return <>Step Two</>default:return <>Fallback</>}}}</CustomStepIndicator>)
StepIndicator with text only
<StepIndicatorsidebar_id="unique-id-text"mode="static"current_step="1"data={['Om din nye bolig','Ditt lån og egenkapital','Oppsummering']}/>
StepIndicator with a custom renderer.
<StepIndicatorsidebar_id="unique-id-renderer"mode="strict"current_step={1}on_change={({ current_step }) => {console.log('on_change', current_step)}}on_item_render={({ StepItem }) => {return (<StepItemonClick={e => console.log(e)}/>)}}data={[{title: 'Om din nye bolig',},{title: 'Ditt lån og egenkapital',on_click: ({ current_step }) =>console.log(current_step),on_render: ({ StepItem, props, params }) => (<StepItemonClick={e => console.log(e)}/>)},{title: 'Oppsummering',/*We can also overwrite the statesinactive: trueis_current: true*/}]}/>
StepIndicator with urls
NB: The URL support is deprecated. You have to handle this kind of logic internally in your application from v10 of @dnb/eufemia
.
You find more v1 demos here.