Skip to content

Commit cc5c241

Browse files
committed
Implement Previewer to note detail
1 parent db2e16c commit cc5c241

File tree

1 file changed

+33
-8
lines changed

1 file changed

+33
-8
lines changed

src/components/NotePage/NoteDetail/NoteDetail.tsx

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import styled from '../../../lib/styled'
66
import Icon from '../../atoms/Icon'
77
import { mdiTrashCan } from '@mdi/js'
88
import CodeEditor from '../../atoms/CodeEditor'
9+
import MarkdownPreviewer from '../../atoms/MarkdownPreviewer'
910

1011
const StyledNoteDetailContainer = styled.div`
1112
display: flex;
@@ -78,19 +79,21 @@ type NoteDetailState = {
7879
content: string
7980
tags: string[]
8081
newTagName: string
82+
mode: 'edit' | 'preview' | 'split'
8183
}
8284

8385
export default class NoteDetail extends React.Component<
8486
NoteDetailProps,
8587
NoteDetailState
8688
> {
87-
state = {
89+
state: NoteDetailState = {
8890
prevStorageId: '',
8991
prevNoteId: '',
9092
title: '',
9193
content: '',
9294
tags: [],
93-
newTagName: ''
95+
newTagName: '',
96+
mode: 'edit'
9497
}
9598
titleInputRef = React.createRef<HTMLInputElement>()
9699
newTagNameInputRef = React.createRef<HTMLInputElement>()
@@ -108,7 +111,8 @@ export default class NoteDetail extends React.Component<
108111
title: note.title,
109112
content: note.content,
110113
tags: note.tags,
111-
newTagName: ''
114+
newTagName: '',
115+
mode: state.mode
112116
}
113117
}
114118
return state
@@ -237,6 +241,18 @@ export default class NoteDetail extends React.Component<
237241
await removeNote(storageId, note._id)
238242
}
239243

244+
selectEditMode = () => {
245+
this.setState({ mode: 'edit' })
246+
}
247+
248+
selectPreviewMode = () => {
249+
this.setState({ mode: 'preview' })
250+
}
251+
252+
selectSplitMode = () => {
253+
this.setState({ mode: 'split' })
254+
}
255+
240256
render() {
241257
const { note } = this.props
242258

@@ -248,6 +264,11 @@ export default class NoteDetail extends React.Component<
248264
<>
249265
<div>
250266
{note._id}{' '}
267+
<div>
268+
<button onClick={this.selectEditMode}>Edit</button>
269+
<button onClick={this.selectPreviewMode}>Preview</button>
270+
<button onClick={this.selectSplitMode}>Split</button>
271+
</div>
251272
<button onClick={this.removeNote}>
252273
<Icon path={mdiTrashCan} />
253274
</button>
@@ -273,11 +294,15 @@ export default class NoteDetail extends React.Component<
273294
/>
274295
</div>
275296
<div className='contentSection'>
276-
<CodeEditor
277-
key={note._id}
278-
value={this.state.content}
279-
onChange={this.updateContent}
280-
/>
297+
{this.state.mode === 'edit' ? (
298+
<CodeEditor
299+
key={note._id}
300+
value={this.state.content}
301+
onChange={this.updateContent}
302+
/>
303+
) : (
304+
<MarkdownPreviewer content={this.state.content} />
305+
)}
281306
</div>
282307
</>
283308
)}

0 commit comments

Comments
 (0)