Пробую сделать редактор с сайдбаром. для перетаскивания компонентов с боковой панели в область редактора.
Но у меня были некоторые проблемы. наиболее критичным является.
для сортировки отброшенного компонента в указанной c позиции в области редактора , например или, другими словами, мне нужно перетащить компонент 1 и компонент 2, а затем компонент 3 между 1 и 2.
Я использовал для этой функции jquery sortable.
Ошибка :
У меня нет сортировки для отброшенного компонента, более того, если я попытаюсь отсортировать отброшенные компоненты позже, я получу компоненты, клонированные внутри области редактора, а не сортирую его
вот моя попытка
$( function() {
$("#side").resizable().draggable();
$("#editor")
.sortable().disableSelection().droppable({
accept: ".component",
drop: function(event, ui)
{ $(this).append(ui.draggable.clone()); }
});
$(".component")
.mousedown
(function(){ $(this).css('cursor','grabbing'); })
.draggable
({ helper: "clone" });
});
#editor, #side, .component{padding: 10px;}
#editor {
position: fixed;
top:0;
left:0;
right:0;
bottom:0;
background:#9999;
z-index: -1;
text-align: right;
cursor: default;
}
#side{
position: fixed;
top:0;
left:0;
width:300px;
height: 100vh;
background:red;
color:yellow;
cursor: move;
}
.component{
background-color:blue;
width: 80px;
height: 50px;
margin:20px;
display: inline-block;
}
.component:hover{
cursor:grab;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div id="side">
<h3 id="title">I'm resizable and draggable</h3>
<div class="component">
I'm droppable 1
</div>
<div class="component">
I'm droppable 2
</div>
<div class="component">
I'm droppable 3
</div>
<div class="component">
I'm droppable 4
</div>
</div>
<div id="editor" contenteditable="true">
<h3 id="title">I'm editable</h3>
</div>