JSFiddle - React, Tailwind, and code Playground

HTML

<div class="draggable"></div>
<div id="droppable"></div>
<div id="block"></div>

CSS

#droppable {
    border: 1px solid black;
    background-color: green;
    position: absolute;
    top: 100px;
    left: 200px;
    height: 300px;
    width: 300px;
}
.draggable {
    border: 1px solid black;
    background-color: blue;
    position: absolute;
    top: 10px;
    left: 30px;
    height: 30px;
    width: 30px;
    z-index: 20;
}
#block {
    border: 1px solid black;
    background-color: red;
    position: absolute;
    top: 200px;
    height: 100px;
    width: 100%;
    z-index: 10;
}

JavaScript

$('#block').droppable({
    accept: '.draggable',
    drop: function (event, ui) {
        if (ui.draggable.data('revert')) {
            ui.draggable.data('revert', false);
            var old = ui.draggable.draggable("option", "revert");
            ui.draggable.draggable("option", "revert", true);
            setTimeout(function () {
               ui.draggable.draggable("option", "revert", old);
            }, 100);
        }
    },
    out: function (event) {
        $('.draggable').data('revert', false);
    },
    over: function (event,ui) {
       ui.draggable.data('revert', true);
    }
});

$('#droppable').droppable({
    accept: function (elem) {
      if ($('.draggable').data('revert')) {
            return false;
        }
        return elem.hasClass("draggable");
    }
});

$('.draggable').draggable({
    revert: 'invalid'
});