Skip to content

Commit e904db8

Browse files
authored
Resolve drag-and-drop position desync when reordering contents items fast (#8372)
1 parent 882ed66 commit e904db8

3 files changed

Lines changed: 6 additions & 6 deletions

File tree

packages/volto/news/8372.bugfix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix incorrect item positioning when rapidly dragging and dropping items in ``/contents``. @wesleybl
2+

packages/volto/src/components/manage/Contents/Contents.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -724,9 +724,9 @@ class Contents extends Component {
724724
delta,
725725
);
726726
} else {
727-
this.setState({
728-
items: move(this.state.items, itemIndex, itemIndex + delta),
729-
});
727+
this.setState((prevState) => ({
728+
items: move(prevState.items, itemIndex, itemIndex + delta),
729+
}));
730730
}
731731
}
732732

packages/volto/src/components/manage/Contents/ContentsItem.jsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -364,15 +364,13 @@ const DragDropConnector = (props) => {
364364
drop(props, monitor) {
365365
const id = monitor.getItem().id;
366366
const dragOrder = monitor.getItem().startOrder;
367-
const dropOrder = props.order;
367+
const dropOrder = monitor.getItem().order;
368368

369369
if (dragOrder === dropOrder) {
370370
return;
371371
}
372372

373373
props.onOrderItem(id, dragOrder, dropOrder - dragOrder, true);
374-
375-
monitor.getItem().order = dropOrder;
376374
},
377375
},
378376
(connect) => ({

0 commit comments

Comments
 (0)