JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div id="menu">
  <div id="modules">
    <div id="mod01"><img src="http://zupimages.net/up/17/32/bgot.jpg" width="120" height="80" /></div>
    <div id="mod02"><img src="http://zupimages.net/up/17/32/hffw.jpg" width="120" height="80" /></div>
    <div id="mod03"><img src="http://zupimages.net/up/17/32/g790.jpg" width="120" height="80" /></div>

    <div id="dropdown" style="display:none;">
      <div class="div_mod" data-type="mod01" data-id="1">
        <img src="http://zupimages.net/up/17/32/bgot.jpg" width="240" height="70" /></div>
      <div class="div_mod" data-type="mod02" data-id="2">
        <div class="margin-elt float-elt"><img src="http://zupimages.net/up/17/32/bgot.jpg" width="50" height="50" /></div>
        <div class="size-paragraphe">Oportunum est, ut arbitror, explanare nunc causam, quae ad exitium praecipitem.</div>
      </div>
      <div class="div_mod" data-type="mod03" data-id="3">
        <p class="size-paragraphe margin-elt">Oportunum est, ut arbitror, explanare nunc causam, quae ad exitium praecipitems portunum est, ut arbitror.</p></div>
    </div><!-- fin dropdown -->
  </div><!-- fin modules -->
</div><!-- fin menu -->
<div id="container">
  <div id="bloc_1" style="display:none;">
    <div class="div_mod01 row drag-drop" data-id="1">
      <img src="http://zupimages.net/up/17/32/bgot.jpg" width="240" height="70"></div>
    <div class="div_mod02 row drag-drop" data-id="2">
      <div class="margin-elt float-elt"><img src="http://zupimages.net/up/17/32/bgot.jpg" width="50" height="50"></div>
      <div class="size-paragraphe">Oportunum est, ut arbitror, explanare nunc causam, quae ad exitium praecipitem.</div>
    </div>
    <div class="div_mod03 row drag-drop" data-id="3">
      <p class="size-paragraphe margin-elt">Oportunum est, ut arbitror, explanare nunc causam, quae ad exitium praecipitems portunum est, ut arbitror.</p>
    </div>
  </div>
  <div id="bloc_2">
 ...

CSS

#menu {
  width: 300px;
}

#mod01,
#mod02,
#mod03 {
  width: 120px;
  margin: 0 auto;
}

#container {
  width: 300px;
  margin-left: 20px;
}

#bloc_1,
#bloc_2,
#dropdown {
  padding: 20px;
}

.div_mod01,
.div_mod02,
.div_mod03,
#div_1,
#div_2,
#div_3,
.div_mod {
  border: 1px dashed #000;
  margin: 10px auto;
}

.div_mod03 p {
  text-align: center;
}

.size-paragraphe {
  font-size: 12px;
}

.margin-elt {
  margin-right: 10px;
}

#container,
#menu,
.float-elt {
  float: left;
}

#container,
#menu {
  border: 1px dotted #000;
  margin-bottom: 20px;
}

.add {
  text-align: center;
  cursor: pointer;
  background: #000;
  color: #fff;
  padding: 5px;
}

.add:hover {
  background: green;
  color: #fff;
}

#btn_update {
  clear: both;
  margin: 0 0 0 320px;
}

#update,
#save {
  background: red;
  color: #fff;
  padding: 10px;
  text-align: center;
  cursor: pointer;
}

JavaScript

var maxId = 3;

(function() {
  $("#modules").hover(
    function() {
      $("#dropdown").fadeIn(200);
    },
    function() {
      $("#dropdown").fadeOut(200);
    }
  );
  $("#mod01").hover(function() {
    $(".div_mod[data-type='mod01']").show();
    $(".div_mod[data-type='mod02']").hide();
    $(".div_mod[data-type='mod03']").hide();
  });
  $("#mod02").hover(function() {
    $(".div_mod[data-type='mod01']").hide();
    $(".div_mod[data-type='mod02']").show();
    $(".div_mod[data-type='mod03']").hide();
  });
  $("#mod03").hover(function() {
    $(".div_mod[data-type='mod01']").hide();
    $(".div_mod[data-type='mod02']").hide();
    $(".div_mod[data-type='mod03']").show();
  });
  $(".div_mod").hover(
    function() {
      $(this).append('<div class="add"><i class="fa fa-plus"></i>Insert</div>');
      $('.add').click(function() {
       maxId += 1;
        $("#bloc_2")
        	.prepend(
          	$("#bloc_1 .row[data-id='" + $(this).parent().attr("data-id") + "']")
            	.clone()
              .attr('id','div_'+maxId)
              .attr('data-id',maxId)
              .attr('data-position','1'))
          .find("div.drag-drop").each(function(){
            // On calcule sa position
            index = parseInt($(this).index()+1);
            // On met le data à jour
            $(this).attr("data-position",index);
        });
      });
    },
    function() {
      $(this).children(".add").remove();
    }
  );
  // draggable & save module
  $('#btn_update')
  .on('click', '#update', function(e) {
    e.preventDefault();
    $(this).fadeOut('slow', function() {
      $(this).siblings().fadeIn('slow').css("display", "inline-block");
    });
    $('#bloc_2').sortable({
      stop: function(event, ui){
        // Pour chaque item de liste
        $(this).find("div.drag-drop").each(function(){
            // On actualise sa position
            index = parseInt($(this).index()+1);
            // On la met à jour dans la page
           ...