Julio Biason
3 years ago
1 changed files with 86 additions and 0 deletions
@ -0,0 +1,86 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
</head> |
||||||
|
|
||||||
|
<body> |
||||||
|
<table> |
||||||
|
<thread> |
||||||
|
<tr> |
||||||
|
<th>Cell</th> |
||||||
|
<th>Cell</th> |
||||||
|
<th>Cell</th> |
||||||
|
<th>Cell</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
|
||||||
|
<tbody> |
||||||
|
<tr draggable="true" class="dropzone"> |
||||||
|
<td draggable="false">1</td> |
||||||
|
<td draggable="false">1</td> |
||||||
|
<td draggable="false">1</td> |
||||||
|
<td draggable="false">1</td> |
||||||
|
</tr> |
||||||
|
<tr draggable="true" class="dropzone"> |
||||||
|
<td draggable="false">2</td> |
||||||
|
<td draggable="false">2</td> |
||||||
|
<td draggable="false">2</td> |
||||||
|
<td draggable="false">2</td> |
||||||
|
</tr> |
||||||
|
<tr draggable="true" class="dropzone"> |
||||||
|
<td draggable="false">3</td> |
||||||
|
<td draggable="false">3</td> |
||||||
|
<td draggable="false">3</td> |
||||||
|
<td draggable="false">3</td> |
||||||
|
</tr> |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</body> |
||||||
|
|
||||||
|
<script> |
||||||
|
(function() { |
||||||
|
let dragged = null; |
||||||
|
|
||||||
|
document.addEventListener("dragstart", function(event) { |
||||||
|
dragged = event.target; |
||||||
|
event.target.style.opacity = .5; |
||||||
|
}); |
||||||
|
|
||||||
|
document.addEventListener("dragenter", function(event) { |
||||||
|
const parent = event.target.parentNode; |
||||||
|
if (parent.className == "dropzone") { |
||||||
|
event.target.parentNode.style.background = "#7f7f7f"; |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
document.addEventListener("dragleave", function(event) { |
||||||
|
const parent = event.target.parentNode; |
||||||
|
if (parent.className == "dropzone") { |
||||||
|
event.target.parentNode.style.background = "#ffffff"; |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
document.addEventListener("dragover", function(event) { |
||||||
|
// Necessário para que o "drop" funcione. |
||||||
|
event.preventDefault(); |
||||||
|
}); |
||||||
|
|
||||||
|
document.addEventListener("drop", function(event) { |
||||||
|
dragged.style.opacity = 1; |
||||||
|
event.preventDefault(); |
||||||
|
const row = event.target.parentNode; |
||||||
|
const table = row.parentNode; |
||||||
|
if (row.className == "dropzone") { |
||||||
|
row.style.background = "#ffffff"; |
||||||
|
const movement = dragged.compareDocumentPosition(row); |
||||||
|
console.log('Movement: ', movement); |
||||||
|
if (movement === Node.DOCUMENT_POSITION_PRECEDING) { |
||||||
|
table.insertBefore(dragged, row); |
||||||
|
} else { |
||||||
|
table.insertBefore(dragged, row.nextSibling); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
})(); |
||||||
|
</script> |
||||||
|
</html> |
Loading…
Reference in new issue