@@ -6,6 +6,7 @@ import styled from '../../../lib/styled'
6
6
import Icon from '../../atoms/Icon'
7
7
import { mdiTrashCan } from '@mdi/js'
8
8
import CodeEditor from '../../atoms/CodeEditor'
9
+ import MarkdownPreviewer from '../../atoms/MarkdownPreviewer'
9
10
10
11
const StyledNoteDetailContainer = styled . div `
11
12
display: flex;
@@ -78,19 +79,21 @@ type NoteDetailState = {
78
79
content : string
79
80
tags : string [ ]
80
81
newTagName : string
82
+ mode : 'edit' | 'preview' | 'split'
81
83
}
82
84
83
85
export default class NoteDetail extends React . Component <
84
86
NoteDetailProps ,
85
87
NoteDetailState
86
88
> {
87
- state = {
89
+ state : NoteDetailState = {
88
90
prevStorageId : '' ,
89
91
prevNoteId : '' ,
90
92
title : '' ,
91
93
content : '' ,
92
94
tags : [ ] ,
93
- newTagName : ''
95
+ newTagName : '' ,
96
+ mode : 'edit'
94
97
}
95
98
titleInputRef = React . createRef < HTMLInputElement > ( )
96
99
newTagNameInputRef = React . createRef < HTMLInputElement > ( )
@@ -108,7 +111,8 @@ export default class NoteDetail extends React.Component<
108
111
title : note . title ,
109
112
content : note . content ,
110
113
tags : note . tags ,
111
- newTagName : ''
114
+ newTagName : '' ,
115
+ mode : state . mode
112
116
}
113
117
}
114
118
return state
@@ -237,6 +241,18 @@ export default class NoteDetail extends React.Component<
237
241
await removeNote ( storageId , note . _id )
238
242
}
239
243
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
+
240
256
render ( ) {
241
257
const { note } = this . props
242
258
@@ -248,6 +264,11 @@ export default class NoteDetail extends React.Component<
248
264
< >
249
265
< div >
250
266
{ 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 >
251
272
< button onClick = { this . removeNote } >
252
273
< Icon path = { mdiTrashCan } />
253
274
</ button >
@@ -273,11 +294,15 @@ export default class NoteDetail extends React.Component<
273
294
/>
274
295
</ div >
275
296
< 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
+ ) }
281
306
</ div >
282
307
</ >
283
308
) }
0 commit comments