11import React , { Component } from 'react'
2- import { Treebeard } from 'react-treebeard' ;
2+ import { Treebeard , animations } from 'react-treebeard' ;
33import Modal from 'react-modal' ;
44import './Tree.css'
55
@@ -17,9 +17,9 @@ const customStyles = {
1717 overflow : 'hidden'
1818 }
1919 } ;
20+ // Modal.setAppElement('#root')
2021
21-
22- const data = {
22+ let data = {
2323 name : 'root' ,
2424 toggled : true ,
2525 children : [
@@ -56,50 +56,83 @@ export default class Tree extends Component {
5656 super ( props ) ;
5757 this . state = {
5858 data,
59- modalIsOpen : false ,
59+ modalAddIsOpen : false ,
6060 value : "" ,
61- activeNode :{ }
61+ deleteNode : "" ,
62+ activeNode :{ } ,
63+ elToDel : { }
6264 } ;
6365 }
6466
65- openModal = ( node ) => {
66- this . setState ( { modalIsOpen : true , activeNode :node } ) ;
67+ openAddModal = ( node ) => {
68+ this . setState ( { modalAddIsOpen : true , activeNode :node } ) ;
69+ const found = this . state . data . children . filter ( ( data ) => data . name === node . name )
70+ console . log ( found ) ;
71+ // this.findParent(node);
6772 }
68-
69-
70- closeModal = ( ) => {
71- this . setState ( { modalIsOpen : false } ) ;
73+ closeModal = ( ) => {
74+ this . setState ( { modalAddIsOpen : false , modalDeleteIsOpen : false } ) ;
7275 }
7376
74- addIcon = ( node ) => {
75- console . log ( node ) ;
76-
77- node . map ( ( child ) => {
77+ addIcon = ( node ) => {
78+
79+ node . map ( ( child , index ) => {
7880 const name1 = child . name ;
7981 ( name1 . indexOf ( '.' ) === - 1 ) ?
80- child . name = < div > < i className = "far fa-folder px-2" > </ i >
81- { name1 } < span onClick = { ( e ) => this . openModal ( child , e ) } > < i className = "far fa-plus-square pl-2" /> </ span > </ div >
82- : child . name = < div > < i className = "far fa-file-code px-2" > </ i > { name1 } </ div >
82+ child . name = < div ref = { selected => this . selected = selected } >
83+ < i className = "far fa-folder px-2" > </ i >
84+ { name1 } < span onClick = { ( e ) => this . openAddModal ( child , e ) } > < i className = "far fa-plus-square pl-2" /> </ span >
85+ < span > < i onClick = { ( e ) => this . deleteElement ( child , index , e ) } className = "far fa-trash-alt pl-2" > </ i > </ span >
86+ </ div >
87+ : child . name = < div >
88+ < i className = "far fa-file-code px-2" > </ i > { name1 }
89+ < span > < i onClick = { ( e ) => this . deleteElement ( child , index , e ) } className = "far fa-trash-alt pl-2" > </ i > </ span >
90+ </ div >
8391 if ( child . children ) {
84- this . addIcon ( child . children )
92+ this . addIcon ( child . children ) ;
8593 }
8694 } )
8795 }
88-
8996 componentWillMount = ( ) => {
9097 this . addIcon ( this . state . data . children )
9198 }
9299
100+ // findParent = (item) => {
101+ // const data = this.state.data;
102+ // let member, i, array;
103+ // for (member in data) {
104+ // if (data.hasOwnProperty(member) && typeof data[member] === 'object' && data[member] instanceof Array) {
105+ // array = data[member];
106+ // for(i = 0; i < array.length; i += 1) {
107+ // if (array[i] === item) {
108+ // console.log(array)
109+ // if(array.children){
110+ // this.findParent(array[i].children[0])
111+ // debugger;
112+ // }//
113+ // return array;
114+ // }
115+ // }
116+ // }
117+ // }
118+ // }
93119
94120 handleSubmit = ( e ) => {
95121 e . preventDefault ( ) ;
96122 if ( this . state . activeNode . children ) {
97123 this . state . activeNode . children . push ( { name : this . state . value } ) ;
98124 }
99125 const newData = this . state . data ;
100- // this.setState({data: newData});
126+ this . setState ( { data : newData } ) ;
101127 this . closeModal ( ) ;
102128 }
129+ deleteElement = ( _ , index , e ) => {
130+ e . preventDefault ( ) ;
131+ console . log ( index ) ;
132+ const newData = this . state . data . children . splice ( index , 1 ) ;
133+ this . setState ( { data : newData } )
134+ }
135+
103136 handleChange ( event ) {
104137 this . setState ( { value : event . target . value } ) ;
105138 }
@@ -120,22 +153,34 @@ export default class Tree extends Component {
120153 return (
121154 < React . Fragment >
122155 < Modal
123- isOpen = { this . state . modalIsOpen }
156+ isOpen = { this . state . modalAddIsOpen }
124157 onAfterOpen = { this . afterOpenModal }
125158 onRequestClose = { this . closeModal }
126159 style = { customStyles }
127- contentLabel = "Example Modal"
160+ ariaHideApp = { false }
161+ contentLabel = "Add Modal"
128162 >
129163 < form onSubmit = { ( e ) => { this . handleSubmit ( e ) } } >
130- < input id = "child-name" type = "text" value = { this . state . value } onChange = { ( e ) => { this . handleChange ( e ) } } />
164+ < input id = "child-name" type = "text" value = { this . state . value } onChange = { ( e ) => { this . handleChange ( e ) } } required />
131165 < input className = 'btn btn-md btn-dark submit' type = "submit" value = "ENTER" />
132166 </ form >
133-
134167 </ Modal >
168+ { /* <Modal
169+ isOpen={this.state.modalDeleteIsOpen}
170+ onRequestClose={this.closeModal}
171+ style={customStyles}
172+ contentLabel="Delete Modal"
173+ >
174+ <form onSubmit={(e)=>{this.handleSubmit(e)}}>
175+ {this.state.activeNode.}
176+ <input className='btn btn-md btn-dark submit' type="submit" value="ENTER"/>
177+ </form>
178+ </Modal> */ }
135179 < Treebeard
136180 data = { this . state . data }
137181 onToggle = { this . onToggle }
138182 style = { style }
183+ animations = { animations }
139184 />
140185 </ React . Fragment >
141186
0 commit comments