11import React , { Component } from 'react'
22import { Treebeard } from 'react-treebeard' ;
3+ import Modal from 'react-modal' ;
4+ import Folder from './Folder'
5+ import File from './File'
6+
7+ const customStyles = {
8+ content : {
9+ top : '50%' ,
10+ left : '50%' ,
11+ right : 'auto' ,
12+ bottom : 'auto' ,
13+ marginRight : '-50%' ,
14+ transform : 'translate(-50%, -50%)' ,
15+ width : '300px' ,
16+ height : '300px' ,
17+ }
18+ } ;
19+
320
421const data = {
522 name : 'root' ,
623 toggled : true ,
724 children : [
825 {
9- name : 'parent1 ' ,
26+ name : 'App ' ,
1027 children : [
11- { name : 'child1 ' } ,
12- { name : 'child2 ' }
28+ { name : 'server.js ' } ,
29+ { name : 'data.js ' }
1330 ]
1431 } ,
1532 {
16- name : 'teacher1' ,
17- // loading: true,
33+ name : 'styles' ,
1834 children : [
19- { name : 'student1 ' } ,
20- { name : 'student2 ' } ,
35+ { name : 'header.css ' } ,
36+ { name : 'footer.css ' } ,
2137 ]
2238 } ,
2339 {
24- name : 'parent ' ,
40+ name : 'client ' ,
2541 children : [
2642 {
27- name : 'nested parent ' ,
43+ name : 'App ' ,
2844 children : [
29- { name : 'nested child 1 ' } ,
30- { name : 'nested child 2 ' }
45+ { name : 'index.js ' } ,
46+ { name : 'context.js ' }
3147 ]
3248 }
3349 ]
@@ -37,9 +53,44 @@ const data = {
3753export default class Tree extends Component {
3854 constructor ( props ) {
3955 super ( props ) ;
40- this . state = { data} ;
56+ this . state = {
57+ data,
58+ modalIsOpen : false ,
59+ value : "Enter" ,
60+ activeNode :{ }
61+ } ;
4162 }
42-
63+
64+ openModal = ( node ) => {
65+ console . log ( node ) ;
66+ this . setState ( { modalIsOpen : true , activeNode :node } ) ;
67+ }
68+
69+
70+ closeModal = ( ) => {
71+ this . setState ( { modalIsOpen : false } ) ;
72+ }
73+
74+
75+ componentWillMount = ( ) => {
76+ this . state . data . children . map ( ( child , index ) => {
77+ const name1 = child . name ;
78+ child . name = < div > HI { name1 } < span onClick = { ( e ) => this . openModal ( child , e ) } > < i className = "far fa-plus-square" /> </ span > </ div > ;
79+ } )
80+ }
81+
82+ handleSubmit = ( e ) => {
83+ e . preventDefault ( ) ;
84+ const name = e . target . value ;
85+ this . state . activeNode . children . push ( { name :this . state . value } ) ;
86+ const newData = this . state . data ;
87+ this . setState ( { data : newData } ) ;
88+ this . closeModal ( )
89+ }
90+ handleChange ( event ) {
91+ this . setState ( { value : event . target . value } ) ;
92+ }
93+
4394 onToggle = ( node , toggled ) => {
4495 const { cursor, data} = this . state ;
4596 if ( cursor ) {
@@ -52,13 +103,29 @@ export default class Tree extends Component {
52103 this . setState ( ( ) => ( { cursor : node , data : Object . assign ( { } , data ) } ) ) ;
53104 }
54105 render ( ) {
55- const { data} = this . state ;
106+ // const {data} = this.state;
56107 return (
57- < Treebeard
58- data = { data }
59- onToggle = { this . onToggle }
60- style = { style }
61- />
108+ < React . Fragment >
109+ < Modal
110+ isOpen = { this . state . modalIsOpen }
111+ onAfterOpen = { this . afterOpenModal }
112+ onRequestClose = { this . closeModal }
113+ style = { customStyles }
114+ contentLabel = "Example Modal"
115+ >
116+ < form onSubmit = { ( e ) => { this . handleSubmit ( e ) } } >
117+ < input type = "text" value = { this . state . value } onChange = { ( e ) => { this . handleChange ( e ) } } />
118+ < input type = "submit" value = "ENTER" />
119+ </ form >
120+
121+ </ Modal >
122+ < Treebeard
123+ data = { this . state . data }
124+ onToggle = { this . onToggle }
125+ style = { style }
126+ />
127+ </ React . Fragment >
128+
62129 )
63130 }
64131}
0 commit comments