This is a continuation to my failed attempt to enable smooth transition during list element switching. Since I haven't found any good solutions yet, I'm considering to switch elements on dragover instead of drop. However, when I use e.dataTransfer, it works only for drop and not dragover:
function dragStart(e) {
    e.dataTransfer.setData('text/plain', $(e.target).index());
    console.log('dragstart', e.dataTransfer.getData('text/plain'));
}
function sortableDropped(e) {
    console.log('drop', e.dataTransfer.getData('text/plain'));
}
function preventDefault(e) {
    e.preventDefault();
    e.stopPropagation();
    return false;
}
function dragOver(e) {
    preventDefault(e);
    console.log('dragover', e.dataTransfer.getData('text/plain'));
}
function onLoad() {
    for (let item of document.querySelectorAll('.sortable-item')) {
        item.addEventListener('dragstart', dragStart);
        item.addEventListener('drop', sortableDropped);
        item.addEventListener('dragover', dragOver);
    }
}
onLoad();body {
    background-color: #000000;
}
.sortable-item {
    display: flex;
    margin-top: 10px;
    padding: 12px;
    border-radius: 5px;
    cursor: grab;
    border: 1px solid #5c636a;
    margin-right: 5px;
    color: #ffffff;
}
.sortable-item:active {
    border: 1px solid #0d6efd;
    cursor: grabbing;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js">
</script>
<ul class="sortable-list list-unstyled">
    <li class="sortable-item" draggable="true">
        A
    </li>
    <li class="sortable-item" draggable="true">
        B
    </li>
    <li class="sortable-item" draggable="true">
        C
    </li>
    <li class="sortable-item" draggable="true">
        D
    </li>
</ul>But clearly something is not working as expected, this is what I get in the console when the first li element is dragged over another:
dragstart 0
744 dragover 
drop 0
I'm expecting 744 dragover 0.
 
    