|
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