JSFiddle - React, Tailwind, and code Playground
by NotInUse
HTML
<body>
<div id="alles">
<div class="dropzones" id="zone1"><div class="dragzones" id="drag1">Item 1</div></div>
<div class="dropzones" id="zone2"><div class="dragzones" id="drag2">Item 2</div></div>
<div class="dropzones" id="zone3"><div class="dragzones" id="drag3">Item 3</div></div>
<div class="dropzones" id="zone4"><div class="dragzones" id="drag4">Item 4</div></div>
<div class="dropzones" id="zone11"></div>
<div class="dropzones" id="zone12"></div>
<div class="dropzones" id="zone13"></div>
<div class="dropzones" id="zone14"></div>
</div>
</body>
CSS
.dropzones {
height: 2em;
margin: 1em auto;
background: #ddd;
}
.dragzones {
background: #a00;
color: #fff;
height: 1em;
padding: 0.5em 0;
text-align: center;
text-transform: uppercase;
}
.taken {
background: #aaa;
}
JavaScript
$ (init);
function init() {
$(".dragzones").draggable({
start: handleDragStart,
cursor: 'move',
revert: 'invalid',
opacity: .5,
});
$(".dropzones").droppable({
drop: handleDropEvent,
tolerance: "touch",
out: handleDropRemove
});
}
function handleDragStart (event, ui) {}
function handleDropRemove(event, ui) {
//allows drop after removal
$(this).removeClass('taken');
}
function handleDropEvent (event, ui) {
if ($(this).hasClass('taken')) {
//rejects drop if full
ui.draggable.draggable('option', 'revert', true);
} else {
//accepts drop if enpty
ui.draggable.position({of: $(this), my: 'left top', at: 'left top'});
$(this).addClass('taken');
}
}