JSFiddle - React, Tailwind, and code Playground

jQuery - Draggable - drag drop block in block rel and absolute

by Ben Clayton

HTML

<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<div id="draggable" class="ui-state-highlight">Drag me down</div>
 
<div class="block sortable large">
    
  <div class="block sortable">
    <div class="block small">rel 1</div>
    <div class="block small">rel 2</div>
  </div>
 
  <div class="block sortable absframe">
    <div class="block small abs">Abs 1</div>
    <div class="block small abs">Abs 2</div>
  </div>
   
  <div class="block">TEST 2</div>
  <div class="block">TEST 3</div>
 
</div>

CSS

.block {width:400px;height:100px;border:1px solid red;margin-bottom:4px;}

.small {width:180px;height:40px;}
.abs   {border:1px solid green;}
.large {height:450px;width:420px;padding:2px;}

JavaScript

$(function() {
    var arr=[
                {type:1},
                {type:2,prop:{width:33,height:44,align:'left'}},
                {type:3},
                {type:4},
                {type:5}
            ];
      
    $( ".sortable" ).sortable({
        revert: true,
        stop:function(event,ui){
            debugger;
            console.log(ui.item.data('node'))
        }
    });
    
    $( ".abs" ).draggable({containment: ".absframe"});
    
    $( "#draggable" ).draggable({
        connectToSortable: "#sortable",
        helper: "clone",
        revert: "invalid"
        //stop:function(event,ui){console.log($(this).data('node'))}
    });
    $( "#sortable" ).on( "dragstop", function( event, ui ) {} );
    
    $( "ul, li" ).disableSelection();
    $("li.ui-state-default").each(function(idx){
       $(this).data('node',arr[idx]);
    });  
      
  });