11import React , { useState } from 'react' ;
22import { useSelector , useDispatch } from 'react-redux' ;
33import marked from 'marked' ;
4- import { sanitize } from 'dompurify'
4+ import { sanitize } from 'dompurify' ;
5+ import { MdDone , MdDvr , MdEdit } from 'react-icons/md' ;
6+
57import { Types } from '../../store/reducer/example-reducer' ;
68
79import Note from '../../models/Note' ;
@@ -13,6 +15,7 @@ export default function ComponentList() {
1315
1416 const qty = 20
1517 const [ text , setText ] = useState ( '' )
18+ const [ previewText , setPreviewText ] = useState ( '' )
1619
1720 const list = useSelector (
1821 state => state . exampleReducer . data . slice ( 0 , qty )
@@ -25,20 +28,56 @@ export default function ComponentList() {
2528 let note = new Note ( mdText )
2629 dispatch ( { type : Types . ADD , note } )
2730 setText ( '' )
31+ setPreviewText ( '' )
32+ }
33+ }
34+
35+ function preview ( ) {
36+ if ( previewText . length > 0 ) {
37+ setPreviewText ( '' )
38+ } else {
39+ setPreviewText ( `${ sanitize ( marked . parse ( text ) ) } ` )
40+ }
41+ }
42+
43+ function show ( ) {
44+ if ( previewText . length > 0 ) {
45+ return 'hide'
46+ } else {
47+ return ''
48+ }
49+ }
50+
51+ function hide ( ) {
52+ if ( previewText . length > 0 ) {
53+ return ''
54+ } else {
55+ return 'hide'
2856 }
2957 }
3058
3159 return (
3260 < >
3361 < div className = "content-add" >
34- < textarea
35- cols = { 100 }
36- rows = { 10 }
37- value = { text }
38- onChange = { e => setText ( e . target . value ) }
39- placeholder = "Digite sua nota"
40- />
41- < button type = "button" onClick = { add } > ADD</ button >
62+ < div className = { show ( ) } >
63+ < textarea
64+ autoFocus
65+ cols = { 100 }
66+ rows = { 10 }
67+ value = { text }
68+ onChange = { e => setText ( e . target . value ) }
69+ placeholder = "Digite sua nota"
70+ />
71+ </ div >
72+ < div className = { `preview ${ hide ( ) } ` } dangerouslySetInnerHTML = { { __html : previewText } } />
73+ < div className = "actions" >
74+ < button type = "button" className = "color-success" onClick = { add } >
75+ < MdDone width = { 24 } />
76+ </ button >
77+ < button type = "button" onClick = { preview } >
78+ { hide ( ) ? < MdDvr width = { 24 } /> : < MdEdit width = { 24 } /> }
79+ </ button >
80+ </ div >
4281 </ div >
4382 < div className = "content-list" >
4483 < ul >
0 commit comments