-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Description
Looks like it does not work for this case. I imaging imagine it's because the there's no tag-level grouping of the related rows.
Of course I do not want invalid HTML but for fun I wrapped related rows in a span
but things did still not work.
Before Drag

After Drag

Code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Draggable.js Table Row Example</title>
<script src="https://unpkg.com/@shopify/[email protected]/lib/draggable.bundle.js"></script>
<style>
table {
width: 100%;
max-width: 600px;
border-collapse: collapse;
margin: 20px auto;
font-family: Arial, sans-serif;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
tr {
background-color: #fff;
cursor: move;
}
tr.dragging {
opacity: 0.5;
background-color: #f0f0f0;
}
tr:hover {
background-color: #f5f5f5;
}
</style>
</head>
<body>
<table id="sortableTable">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Role</th>
</tr>
</thead>
<tbody id="tableBody">
<tr data-user-id="1" data-user-row="first">
<td rowspan="2">1</td>
<td rowspan="2">Alice</td>
<td>Developer</td>
</tr>
<tr data-user-id="1" data-user-row="sub">
<td>Team Lead</td>
</tr>
<tr data-user-id="2" data-user-row="first">
<td rowspan="3">2</td>
<td rowspan="3">Bob</td>
<td>Designer</td>
</tr>
<tr data-user-id="2" data-user-row="sub">
<td>UI Specialist</td>
</tr>
<tr data-user-id="2" data-user-row="sub">
<td>Illustrator</td>
</tr>
<tr data-user-id="3" data-user-row="first">
<td rowspan="1">3</td>
<td rowspan="1">Tommy</td>
<td>Manager</td>
</tr>
<tr data-user-id="4" data-user-row="first">
<td rowspan="2">4</td>
<td rowspan="2">Diana</td>
<td>Analyst</td>
</tr>
<tr data-user-id="4" data-user-row="sub">
<td>Data Scientist</td>
</tr>
</tbody>
</table>
<script>
document.addEventListener('DOMContentLoaded', () => {
const tableBody = document.querySelector('#tableBody');
const sortable = new Draggable.Sortable([tableBody], {
draggable: 'tr',
mirror: {
constrainDimensions: true,
},
});
});
</script>
</body>
</html>
Metadata
Metadata
Assignees
Labels
No labels