@@ -8,20 +8,21 @@ import data from './assets.json'
88import Header from './components/Header'
99import SideBar from './components/SideBar'
1010// const ResponsiveGridLayout = WidthProvider(Responsive);
11-
11+ const layout = [
12+ { i : "a" , x : 0 , y : 0 , w : 1 , h : 1 } ,
13+ { i : "b" , x : 1 , y : 0 , w : 1 , h : 1 } ,
14+ { i : "c" , x : 2 , y : 6 , w : 3 , h : 1 } ,
15+ { i : "d" , x : 3 , y : 0 , w : 1 , h : 1 } ,
16+ { i : "e" , x : 4 , y : 0 , w : 1 , h : 1 } ,
17+ { i : "f" , x : 5 , y : 0 , w : 1 , h : 1 } ,
18+ { i : "g" , x : 6 , y : 0 , w : 1 , h : 1 } ,
19+ { i : "h" , x : 3 , y : 3 , w : 1 , h : 1 }
20+ ] ;
1221function App ( ) {
1322 const [ currentDimensions , setCurrentDimensions ] = useState ( { w : 5 , h : 2 } )
14- console . log ( 'hi' )
15- const layout = [
16- { i : "a" , x : 0 , y : 0 , w : 1 , h : 1 } ,
17- { i : "b" , x : 1 , y : 0 , w : 1 , h : 1 } ,
18- { i : "c" , x : 2 , y : 6 , w : 3 , h : 1 } ,
19- { i : "d" , x : 3 , y : 0 , w : 1 , h : 1 } ,
20- { i : "e" , x : 4 , y : 0 , w : 1 , h : 1 } ,
21- { i : "f" , x : 5 , y : 0 , w : 1 , h : 1 } ,
22- { i : "g" , x : 6 , y : 0 , w : 1 , h : 1 } ,
23- { i : "h" , x : 3 , y : 3 , w : 1 , h : 1 }
24- ] ;
23+ const [ staticLayout , setStaticLayout ] = useState ( layout )
24+ const [ taskName , setTaskName ] = useState ( "" )
25+
2526 function getDroppingItem ( ) {
2627 return {
2728 i : layout . length ,
@@ -31,27 +32,29 @@ function App() {
3132 h : 2 ,
3233 }
3334 }
35+ const onDrop = ( layout , layoutItem , _event ) => {
36+ console . log ( layoutItem )
37+ layoutItem . i = taskName
38+ setStaticLayout ( [ ...staticLayout , layoutItem ] )
39+ alert ( `Dropped element props:\n${ JSON . stringify ( layoutItem , [ 'x' , 'y' , 'w' , 'h' ] , 2 ) } ` ) ;
40+ } ;
3441 return (
3542 < >
3643 < div
3744 className = "droppable-element"
3845 draggable = { true }
39- unselectable = "on"
40- // this is a hack for firefox
41- // Firefox requires some kind of initialization
42- // which we can do by adding this attribute
43- // @see https://bugzilla.mozilla.org/show_bug.cgi?id=568313
44- onDragStart = { ( e ) => {
45- e . dataTransfer . setData ( "text/plain" , "" ) ;
46- } }
46+ // unselectable="on"
47+ // onDragStart={(e) => {
48+ // e.dataTransfer.setData("text/plain", "");
49+ // }}
4750 >
4851 (Drag me!)
4952 </ div >
53+ < input type = "text" onChange = { ( e ) => setTaskName ( e . target . value ) } />
5054 < div className = "app" >
5155 < Header />
5256 < div className = 'wrapper' >
5357 < SideBar data = { data } />
54- { /* <List data={ data } /> */ }
5558 < div className = "days-container" >
5659 < div className = "days" >
5760 < p > Monday</ p >
@@ -70,18 +73,22 @@ function App() {
7073 cols = { 12 }
7174 rowHeight = { 30 }
7275 width = { 1200 }
73- droppingItem = { { i : "z" , w : 2 , h : 2 } }
76+ // droppingItem= {{ i: "z", w: 2, h: 2 }}
7477 // This turns off compaction so you can place items wherever.
7578 verticalCompact = { false }
76- preventCollision = { true }
79+ // preventCollision= {false }
7780 // preventCollision={!this.state.compactType}
7881 isDroppable = { true }
7982 draggable = { true }
80- onDropDragOver = { ( e ) => ( { i : layout . length , w :2 , h :1 } ) }
83+ // onDropDragOver= {(e) => ({ i: layout.length, w:2, h:1 }) }
84+ onDrop = { onDrop }
8185
8286
8387 >
84- < div key = "a" data-grid = { { x : 0 , y : 0 , w : 2 , maxW : 3 , h : 1 } } > a</ div >
88+ { staticLayout . map ( n => (
89+ < div key = { n . i } data-grid = { { x : n . x , y : n . y , w : n . w , maxW : 3 , h : n . h } } > { n . i } </ div >
90+ ) ) }
91+ { /* <div key="a" data-grid={{ x: 0, y: 0, w: 2, maxW: 3, h: 1 }}>a</div>
8592 <div key="b" data-grid={{ x: 1, y: 4, w: 3, maxW: 3, h: 1 }}>Saturday</div>
8693 <div key="c" data-grid={{ x: 2, y: 6, w: 1, maxW: 3, h: 1 }}>c</div>
8794 <div key="d" data-grid={{ x: 3, y: 6, w: 1, maxW: 3, h: 1 }}>d</div>
@@ -90,7 +97,7 @@ function App() {
9097 <div key="g" data-grid={{ x: 3, y: 3, w: 1, maxW: 3, h: 1 }}>g</div>
9198 <div key="h" data-grid={{ x: 1, y: 6, w: 1, maxW: 3, h: 1 }}>h</div>
9299 <div key="i" data-grid={{ x: 0, y: 6, w: 1, maxW: 3, h: 1 }}>i</div>
93- < div key = "j" data-grid = { { x : 0 , y : 7 , w : 1 , maxW : 3 , h : 1 } } > New Item</ div >
100+ <div key="j" data-grid={{ x: 0, y: 7, w: 1, maxW: 3, h: 1 }}>New Item</div> */ }
94101 </ GridLayout >
95102 </ div >
96103 </ div >
0 commit comments