import React from 'react'; import { Icon } from 'UI'; import cn from 'classnames'; import { Step } from 'App/mstore/types/gettingStarted'; import { useStore } from 'App/mstore'; import { onboarding as onboardingRoute, withSiteId } from 'App/routes'; import { RouteComponentProps, withRouter } from 'react-router'; import { useModal } from 'App/components/Modal'; import { useTranslation } from 'react-i18next'; interface StepListProps extends RouteComponentProps { title: string; steps: Step[]; status: 'pending' | 'completed'; docsLink?: string; } const StepItem = React.memo( ({ step, onClick, onIgnore, }: { step: Step; onIgnore: (e: React.MouseEvent, step: any) => void; onClick: () => void; }) => { const { t } = useTranslation(); const { title, description, status, docsLink } = step; const isCompleted = status === 'completed'; return (
{}} > {title}
{description}
{t('Docs')} {!isCompleted && ( onIgnore(e, step)}> {t('Ignore')} )}
); }, ); const StepList = React.memo((props: StepListProps) => { const { title, steps } = props; const { hideModal } = useModal(); const { settingsStore: { gettingStarted }, projectsStore, } = useStore(); const onIgnore = (e: React.MouseEvent, step: any) => { e.preventDefault(); gettingStarted.completeStep(step); }; if (steps.length === 0) { return null; } const onClick = (step: any) => { const { history } = props; const siteId = projectsStore.getSiteId().siteId!; hideModal(); history.push(withSiteId(onboardingRoute(step.url), siteId)); }; return (
{title} {steps.length}
{steps.map((step) => ( onClick(step)} /> ))}
); }); export default withRouter(StepList);