{order.map((service, index) => (
{
setDragIndex(index);
event.dataTransfer.effectAllowed = "move";
event.dataTransfer.setData("text/plain", String(index));
}}
onDragOver={event => event.preventDefault()}
onDrop={event => {
event.preventDefault();
const sourceIndex = dragIndex ?? Number(event.dataTransfer.getData("text/plain"));
if (!Number.isInteger(sourceIndex) || sourceIndex === index || sourceIndex < 0 || sourceIndex >= order.length) {
setDragIndex(null);
return;
}
const nextOrder = [...order];
const [moved] = nextOrder.splice(sourceIndex, 1);
nextOrder.splice(index, 0, moved);
setDragIndex(null);
commitOrder(nextOrder);
}}
onDragEnd={() => setDragIndex(null)}
data-dragging={dragIndex === index}
>
{serviceLabels[service]}
Drag
))}