/* * Copyright (c) 2023 Nordic Semiconductor ASA * * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause */ import React from 'react'; import { OverlayTrigger, Tooltip } from 'react-bootstrap'; import classNames from '../utils/classNames'; import './stepper.scss'; type ActionCaption = StringCaption & { action: () => void; }; type TooltipCaption = StringCaption & { tooltip: string; }; type StringCaption = { id: string; caption: string; }; type StepState = 'active' | 'success' | 'warning' | 'failure'; type StepCaption = StringCaption | ActionCaption | TooltipCaption; export type Step = { id: string; title: string; caption?: string | (StepCaption | StepCaption[]); state?: StepState; }; export interface Steppers { title?: string; steps: Step[]; } const isToolTipCaption = (caption: StepCaption): caption is ActionCaption => (caption as TooltipCaption).tooltip !== undefined; const isActionCaption = (caption: StepCaption): caption is ActionCaption => (caption as ActionCaption).action !== undefined; const isStringCaption = ( caption: string | StringCaption, ): caption is string | StringCaption => typeof caption === 'string' || (!isToolTipCaption(caption) && !isActionCaption(caption)); const StepActionCaption = ({ caption }: { caption: ActionCaption }) => ( ); const StepTooltipCaption = ({ caption }: { caption: TooltipCaption }) => ( {caption.tooltip} } > {`${caption.caption}`}   ); const StepStringCaption = ({ caption, }: { caption: string | StringCaption; }) => { if (typeof caption === 'string') { return {`${caption}`} ; } return {`${caption.caption}`} ; }; const Caption = ({ caption }: { caption: string | StepCaption }) => { if (isStringCaption(caption)) { return ; } if (isActionCaption(caption)) { return ; } return ; }; export default ({ title, steps }: Steppers) => ( <>
{title &&
{title}
} {steps.map(step => (
{step.title}
{step.caption && (Array.isArray(step.caption) ? ( step.caption?.map(caption => ( )) ) : ( ))}
))} );