|
1 | 1 | import * as React from 'react'
|
2 | 2 | import * as T from 'typings'
|
3 | 3 | import * as TT from 'typings/tutorial'
|
4 |
| -import { Menu } from '@alifd/next' |
5 | 4 | import * as selectors from '../../services/selectors'
|
6 |
| -import Icon from '../../components/Icon' |
| 5 | +import ContentMenu from './ContentMenu' |
7 | 6 | import Level from './components/Level'
|
8 |
| -import logger from '../../services/logger' |
9 | 7 |
|
10 | 8 | interface PageProps {
|
11 | 9 | context: T.MachineContext
|
@@ -45,48 +43,19 @@ const TutorialPage = (props: PageProps) => {
|
45 | 43 | return { ...step, status }
|
46 | 44 | })
|
47 | 45 |
|
48 |
| - const setMenuContent = (levelId: string) => { |
49 |
| - const selectedLevel: TT.Level | undefined = tutorial.levels.find((l: TT.Level) => l.id === levelId) |
50 |
| - if (selectedLevel) { |
51 |
| - setTitle(selectedLevel.title) |
52 |
| - setContent(selectedLevel.content) |
53 |
| - } |
54 |
| - } |
55 |
| - |
56 |
| - const menu = ( |
57 |
| - <Menu> |
58 |
| - {tutorial.levels.map((level: TT.Level) => { |
59 |
| - const isCurrent = level.id === position.levelId |
60 |
| - logger('progress', progress) |
61 |
| - const isComplete = progress.levels[level.id] |
62 |
| - let icon |
63 |
| - let disabled = false |
64 |
| - |
65 |
| - if (isComplete) { |
66 |
| - // completed icon |
67 |
| - icon = <Icon type="minus" size="xs" /> |
68 |
| - } else if (isCurrent) { |
69 |
| - // current icon` |
70 |
| - icon = <Icon type="minus" size="xs" /> |
71 |
| - } else { |
72 |
| - // upcoming |
73 |
| - disabled = true |
74 |
| - icon = <Icon type="lock" size="xs" /> |
75 |
| - } |
76 |
| - return ( |
77 |
| - <Menu.Item key={level.id} disabled={disabled} onSelect={() => setMenuContent(level.id)}> |
78 |
| - {icon} {level.title} |
79 |
| - </Menu.Item> |
80 |
| - ) |
81 |
| - })} |
82 |
| - </Menu> |
83 |
| - ) |
84 |
| - |
85 | 46 | return (
|
86 | 47 | <Level
|
87 | 48 | title={title}
|
88 | 49 | content={content}
|
89 |
| - menu={menu} |
| 50 | + menu={ |
| 51 | + <ContentMenu |
| 52 | + tutorial={tutorial} |
| 53 | + position={position} |
| 54 | + progress={progress} |
| 55 | + setTitle={setTitle} |
| 56 | + setContent={setContent} |
| 57 | + /> |
| 58 | + } |
90 | 59 | index={tutorial.levels.findIndex((l: TT.Level) => l.id === position.levelId)}
|
91 | 60 | steps={steps}
|
92 | 61 | status={progress.levels[position.levelId] ? 'COMPLETE' : 'ACTIVE'}
|
|
0 commit comments