JSFiddle - React, Tailwind, and code Playground
HTML
<div id="textbox" class="draggableItem selected">
<span class="draghandle">::</span>
<span class="draggableItemContentText">Text Box1</span>
</div>
<div id="textbox1" class="draggableItem selected">
<span class="draghandle">::</span>
<span class="draggableItemContentText">Text Box2</span>
</div>
<div id="textbox2" class="draggableItem selected">
<span class="draghandle">::</span>
<span class="draggableItemContentText">Text Box3</span>
</div>
CSS
.draghandle
{
background-color: rgb(180, 180, 180);
border: solid 1px gray;
width: 8px;
display: inline-block;
text-align: center;
position: absolute;
left: 0;
top: 0;
bottom: 0;
}
.draggableItem
{
position: relative;
height: 18px;
width: 150px;
z-index: 1000;
box-shadow: 0px 2px 2px black;
display: inline-block;
}
.draggableItemContentText
{
border: solid 0px rgb(0, 0, 0);
left: 10px;
height: 25px;
background: light gray;
font-weight: bold;
text-align: left;
position: absolute;
width: 139px;
right: 0;
}
.selected
{
background-color: #4af;
}
JavaScript
$(document).ready(function() {
$('#textbox, #textbox1').draggable(draggableOptions);
});
var selectedObjs;
var draggableOptions = {
start: function (event, ui) {
//get all selected...
selectedObjs = $('div.selected').filter('[id!=' + $(this).attr('id') + ']');
},
drag: function (event, ui) {
var currentLoc = $(this).position();
var orig = $(this).data('orig');
if (!orig) {
orig = ui.originalPosition;
}
var offsetLeft = currentLoc.left - orig.left;
var offsetTop = currentLoc.top - orig.top;
moveSelected(offsetLeft, offsetTop, selectedObjs);
$(this).data('orig', currentLoc);
}
};
function moveSelected(ol, ot, selectedObjs) {
console.log(selectedObjs.length);
selectedObjs.each(function () {
$this = $(this);
var pos = $this.position();
var l = $this.context.clientLeft;
var t = $this.context.clientTop;
$this.css('left', l + ol);
$this.css('top', t + ot);
});
}