JSFiddle - React, Tailwind, and code Playground
by InsaniManES
HTML
<script src="https://cdn.jsdelivr.net/npm/@shopify/draggable/lib/draggable.bundle.js"></script>
<link rel="stylesheet" href="https://unpkg.com/tailwindcss/dist/tailwind.min.css">
<div class="min-h-screen text-black bg-grey-lighter p-8">
<div class="bg-white rounded shadow-lg max-w-md mx-auto py-8 px-4">
<ul class="list-reset">
<li class="bg-white px-4">
<div class="flex items-center border-b border-grey-lighter">
<div class="flex-grow flex items-center py-4">
Get travel insurance
</div>
<svg class="ml-2 h-4 w-4 cursor-move text-grey hover:text-grey-darkest" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M14 4h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zM8 4h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm6 6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zm-6 0h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zm6 6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zm-6 0h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/></svg>
</div>
</li>
<li class="bg-white px-4">
<div class="flex items-center border-b border-grey-lighter">
<div class="flex-grow flex items-center py-4">
Pay hydro bill
</div>
<svg class="ml-2 h-4 w-4 cursor-move text-grey hover:text-grey-darkest" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M14 4h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zM8 4h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm6 6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zm-6 0h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zm6 6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zm-6 0h2a1 1 0 0 1 1 1v2a1 1 0...
CSS
.draggable-source--is-dragging {
background-color: #f1f5f8;
}
.draggable-source--is-dragging > div {
opacity: 0;
}
JavaScript
const test = new Draggable.Sortable(document.querySelectorAll('ul'), {
draggable: 'li',
handle: 'svg',
mirror: {
constrainDimensions: true,
},
})
test.on('drag:start', () => console.log('drag:start'));
test.on('drag:move', () => console.log('drag:move'));
test.on('drag:stop', () => console.log('drag:stop'));