-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdrag.js
84 lines (56 loc) · 2.2 KB
/
drag.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
const items = document.querySelectorAll('#items .item');
const tableBodyx = document.querySelector('#tableBody');
const itemsDiv = document.querySelector('#items');
let sourceContainer;
fetch("https://rickandmortyapi.com/api/character")
.then((res) => res.json())
.then((data) => {
for (let i = 0; i < data.results.length; i++) {
var image = data.results[i].image;
// itemsDiv içine itemleri ekle
itemsDiv.innerHTML += `
<div class="item" id="${i}" draggable="true" style="background-image:url('${[image]}')" >
</div>
`;
}
});
function handleDragStart(event) {
event.dataTransfer.setData('text/plain', event.target.id);
sourceContainer = event.target.parentNode; // itemin çıktığı konteyneri kaydet
}
function handleDragOver(event) {
event.preventDefault();
}
function handleDrop(event) {
event.preventDefault();
const itemId = event.dataTransfer.getData('text/plain');
const targetContainer = event.target.closest('.draggable, #items');
if (targetContainer) {
if (targetContainer.id === 'items') {
targetContainer.appendChild(document.getElementById(itemId));
} else {
const itemContainer = targetContainer.querySelector('.row');
itemContainer.appendChild(document.getElementById(itemId));
}
}
}
document.addEventListener('dragstart', (event) => {
if (event.target.classList.contains('item')) {
event.target.classList.add('dragging');
}
});
document.addEventListener('dragend', (event) => {
if (event.target.classList.contains('item')) {
event.target.classList.remove('dragging');
}
});
tableBodyx.addEventListener('dragstart', handleDragStart);
tableBodyx.addEventListener('dragover', handleDragOver);
tableBodyx.addEventListener('drop', handleDrop);
itemsDiv.addEventListener('dragstart', handleDragStart);
itemsDiv.addEventListener('dragover', handleDragOver);
itemsDiv.addEventListener('drop', handleDrop);
items.forEach((item) => {
item.setAttribute('draggable', 'true');
item.addEventListener('dragstart', handleDragStart);
});