You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Update method breaks default drag and drop behavior for subgrids #3173
When calling Gridstack.update(), with the exact same values the node already has, the _orig value is cleared out (added as part of #2669). This breaks the implementation of GridStack.prepareDragDrop#onEndMoving, as the widthChanged variable requires the _orig property to exist on the GridStackNode.
Moving the element within its parent grid repopulates the _orig property again, allowing the drag and drop to work.
This is normally not an issue unless the user drags an element off the grid without touching/moving an existing element (such as the case when float = true). Then, the _orig parameter is never restored and dragging to a subgrid fails.
Your environment
VueJS 3.5, Using GridStack 12.3.2.
Steps to reproduce
Using the demo at https://github.com/gridstack/gridstack.js/blob/master/demo/nested.html, simply add a call to grid.update('.grid-stack-item:first-of-type', {x: 0, w: 1, y: 0, h: 1})twice. The first time will assign the 4 parameters to the node, the second time will do nothing but clear the _orig parameter.
You can do this in the debugger console on the existing demo as well.
Expected behavior
Update should leave the widget in the correct state, even if a redundant update call was issued. Without this, the node will drag/drop within its own grid properly, but cannot be dragged outside of its grid.
Workaround
As a dirty workaround, we can do the same thing the Engine class is doing and assign the _orig parameter ourselves like so:
Activity