-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
92 lines (78 loc) · 2.25 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//INITAIL DATA
let areas = {
a: null,
b: null,
c: null,
}
//EVENTS
document.querySelectorAll('.item').forEach(item => {
item.addEventListener('dragstart', dragStart)
item.addEventListener('dragend', dragEnd)
})
document.querySelectorAll('.area').forEach(area => {
area.addEventListener('dragover', dragOver)
area.addEventListener('dragleave', dragLeave)
area.addEventListener('drop', drop)
})
document
.querySelector('.neutralArea')
.addEventListener('dragover', dragOverNeutral)
document
.querySelector('.neutralArea')
.addEventListener('dragleave', dragLeaveNeutral)
document.querySelector('.neutralArea').addEventListener('drop', dropNeutral)
//FUNCTIONS ITEM
function dragStart(e) {
e.currentTarget.classList.add('dragging')
}
function dragEnd(e) {
e.currentTarget.classList.remove('dragging')
}
//FUNCTIONS AREA
function dragOver(e) {
if (e.currentTarget.querySelector('.item') === null) {
e.preventDefault()
e.currentTarget.classList.add('hover')
}
}
function dragLeave(e) {
e.currentTarget.classList.remove('hover')
}
function drop(e) {
e.currentTarget.classList.remove('hover')
if (e.currentTarget.querySelector('.item') === null) {
let dragItem = document.querySelector('.item.dragging')
e.currentTarget.appendChild(dragItem)
updateAreas()
}
}
//FUNCTIONS NEUTRAL AREA
function dragOverNeutral(e) {
e.preventDefault()
e.currentTarget.classList.add('hover')
}
function dragLeaveNeutral(e) {
e.currentTarget.classList.remove('hover')
}
function dropNeutral(e) {
e.currentTarget.classList.remove('hover')
let dragItem = document.querySelector('.item.dragging')
e.currentTarget.appendChild(dragItem)
updateAreas()
}
//LOGIC FUNCTIONS
function updateAreas() {
document.querySelectorAll('.area').forEach(area => {
let name = area.getAttribute('data-name')
if (area.querySelector('.item') !== null) {
areas[name] = area.querySelector('.item').innerHTML
} else {
areas[name] = null
}
})
if (areas.a === '1' && areas.b === '2' && areas.c === '3') {
document.querySelector('.areas').classList.add('correct')
} else {
document.querySelector('.areas').classList.remove('correct')
}
}