fix: menu drag-and-drop reorder using sorted array and correct sort_order
This commit is contained in:
@@ -1365,11 +1365,13 @@ function MenuSection({ items, setItems, images, onToast }: any) {
|
||||
|
||||
const handleDragEnd = () => {
|
||||
if (dragIdx !== null && overIdx !== null && dragIdx !== overIdx) {
|
||||
const reordered = [...items];
|
||||
// Use sorted array for correct index mapping
|
||||
const reordered = [...sorted];
|
||||
const [moved] = reordered.splice(dragIdx, 1);
|
||||
reordered.splice(overIdx, 0, moved);
|
||||
setItems(reordered);
|
||||
setItems(reordered);
|
||||
// Update sort_order based on new position
|
||||
const updated = reordered.map((it: MenuItem, i: number) => ({ ...it, sort_order: i }));
|
||||
setItems(updated);
|
||||
}
|
||||
setDragIdx(null);
|
||||
setOverIdx(null);
|
||||
@@ -1377,10 +1379,12 @@ function MenuSection({ items, setItems, images, onToast }: any) {
|
||||
|
||||
const saveOrder = async () => {
|
||||
try {
|
||||
// Use sorted order for consistency
|
||||
const order = sorted.map((it: MenuItem, i: number) => ({ id: it.id, sort_order: i }));
|
||||
await fetch('/api/menu/reorder', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ order: items.map((it: MenuItem, i: number) => ({ id: it.id, sort_order: i })) }),
|
||||
body: JSON.stringify({ order }),
|
||||
});
|
||||
onToast('Order saved!', 'success');
|
||||
} catch { onToast('Error reordering', 'error'); }
|
||||
|
||||
Reference in New Issue
Block a user