1
+ let areas = {
2
+ a : null ,
3
+ b : null ,
4
+ c : null
5
+ } ;
6
+
7
+ document . querySelector ( '.neutralArea' ) . addEventListener ( 'click' , ( e ) => {
8
+ // console.log('target', e.target) // quem possui o evento
9
+ // console.log('current target', e.currentTarget) // o cara especifico
10
+ } )
11
+
12
+ document . querySelectorAll ( '.item' ) . forEach ( item => {
13
+ item . addEventListener ( 'dragstart' , dragStart ) ;
14
+ item . addEventListener ( 'dragend' , dragEnd ) ;
15
+ } ) ;
16
+
17
+ document . querySelectorAll ( '.area' ) . forEach ( area => {
18
+ area . addEventListener ( 'dragover' , dragOver ) ;
19
+ area . addEventListener ( 'dragleave' , dragLeave ) ;
20
+ area . addEventListener ( 'drop' , drop ) ;
21
+ } ) ;
22
+
23
+ document . querySelector ( '.neutralArea' ) . addEventListener ( 'dragover' , dragOverNeutral ) ;
24
+ document . querySelector ( '.neutralArea' ) . addEventListener ( 'dragleave' , dragLeaveNeutral ) ;
25
+ document . querySelector ( '.neutralArea' ) . addEventListener ( 'drop' , dropNeutral ) ;
26
+
27
+ // functions item
28
+ function dragStart ( e ) {
29
+ e . currentTarget . classList . add ( 'dragging' )
30
+ }
31
+
32
+ function dragEnd ( e ) {
33
+ e . currentTarget . classList . remove ( 'dragging' ) ;
34
+ }
35
+
36
+ // functions area
37
+ function dragOver ( e ) {
38
+ // console.log('Passou por cima')
39
+
40
+ if ( e . currentTarget . querySelector ( '.item' ) === null ) {
41
+ e . preventDefault ( ) ;
42
+ e . currentTarget . classList . add ( 'hover' ) ;
43
+ }
44
+ }
45
+
46
+ function dragLeave ( e ) {
47
+ e . currentTarget . classList . remove ( 'hover' ) ;
48
+ // console.log('saiu de uma area dropavel')
49
+ }
50
+
51
+ function drop ( e ) {
52
+ // console.log('liberou')
53
+ e . currentTarget . classList . remove ( 'hover' ) ;
54
+
55
+ // console.log(dragItem);
56
+ // console.log(e.currentTarget)
57
+
58
+ if ( e . currentTarget . querySelector ( '.item' ) === null ) {
59
+ let dragItem = document . querySelector ( '.item.dragging' ) ;
60
+ e . currentTarget . appendChild ( dragItem ) ;
61
+ updateAreas ( ) ;
62
+ }
63
+ }
64
+
65
+ // functions NEUTRAL AREA
66
+ function dragOverNeutral ( e ) {
67
+ e . preventDefault ( ) ;
68
+ e . currentTarget . classList . add ( 'hover' ) ;
69
+ }
70
+
71
+ function dragLeaveNeutral ( e ) {
72
+ e . currentTarget . classList . remove ( 'hover' ) ;
73
+ }
74
+
75
+ function dropNeutral ( e ) {
76
+ e . currentTarget . classList . remove ( 'hover' ) ;
77
+ // item que estou arrastando
78
+ let dragItem = document . querySelector ( '.item.dragging' ) ;
79
+ // lugar onde vou dropar
80
+ e . currentTarget . appendChild ( dragItem ) ;
81
+ updateAreas ( ) ;
82
+ }
83
+
84
+ // Logic Functions
85
+ function updateAreas ( ) {
86
+ document . querySelectorAll ( '.area' ) . forEach ( area => {
87
+ let name = area . getAttribute ( 'data-name' ) ;
88
+
89
+ if ( area . querySelector ( '.item' ) !== null ) {
90
+ areas [ name ] = area . querySelector ( '.item' ) . innerHTML ;
91
+ } else {
92
+ areas [ name ] = null ;
93
+ }
94
+ } ) ;
95
+
96
+ if ( areas . a === '1' && areas . b === '2' && areas . c === '3' ) {
97
+ document . querySelector ( '.areas' ) . classList . add ( 'correct' ) ;
98
+ } else {
99
+ document . querySelector ( '.areas' ) . classList . remove ( 'correct' ) ;
100
+ }
101
+
102
+ console . log ( areas ) ;
103
+ }
0 commit comments