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 { connect } from 'react-redux'; import { useModal } from 'App/components/Modal'; interface StepListProps extends RouteComponentProps { title: string; steps: Step[]; status: 'pending' | 'completed'; docsLink?: string; siteId: string; } const StepItem = React.memo( ({ step, onClick, onIgnore, }: { step: Step; onIgnore: (e: React.MouseEvent, step: any) => void; onClick: () => void; }) => { const { title, description, status, docsLink } = step; const isCompleted = status === 'completed'; return (
{}}>{title}
{description}
Docs {!isCompleted && ( onIgnore(e, step)}> Ignore )}
); } ); const StepList = React.memo((props: StepListProps) => { const { title, steps, status } = props; const { hideModal } = useModal(); const { settingsStore: { gettingStarted }, } = useStore(); const onIgnore = (e: React.MouseEvent, step: any) => { e.preventDefault(); gettingStarted.completeStep(step); }; if (steps.length === 0) { return null; } const onClick = (step: any) => { const { siteId, history } = props; hideModal(); history.push(withSiteId(onboardingRoute(step.url), siteId)); }; return (
{title} {steps.length}
{steps.map((step) => ( onClick(step)}/> ))}
); }); export default connect((state: any) => ({ siteId: state.getIn(['site', 'siteId']), }))(withRouter(StepList));