MCPcopy Index your code
hub / github.com/gridstack/gridstack.js / _leave

Method _leave

src/gridstack.ts:2989–3023  ·  view source on GitHub ↗

@internal called when item leaving our area by either cursor dropout event * or shape is outside our boundaries. remove it from us, and mark temporary if this was * our item to start with else restore prev node values from prev grid it came from.

(el: GridItemHTMLElement, helper?: GridItemHTMLElement)

Source from the content-addressed store, hash-verified

2987 * our item to start with else restore prev node values from prev grid it came from.
2988 */
2989 protected _leave(el: GridItemHTMLElement, helper?: GridItemHTMLElement): void {
2990 helper = helper || el;
2991 const node = helper.gridstackNode;
2992 if (!node) return;
2993
2994 // remove the scale of the helper on leave
2995 helper.style.transform = helper.style.transformOrigin = null;
2996 dd.off(el, 'drag'); // no need to track while being outside
2997
2998 // this gets called when cursor leaves and shape is outside, so only do this once
2999 if (node._temporaryRemoved) return;
3000 node._temporaryRemoved = true;
3001
3002 this.engine.removeNode(node); // remove placeholder as well, otherwise it's a sign node is not in our list, which is a bigger issue
3003 node.el = node._isExternal && helper ? helper : el; // point back to real item being dragged
3004 const sidebarOrig = node._sidebarOrig;
3005 if (node._isExternal) this.engine.cleanupNode(node);
3006 // Restore sidebar item initial size info to stay consistent when dragging between multiple grids
3007 node._sidebarOrig = sidebarOrig;
3008
3009 if (this.opts.removable === true) { // boolean vs a class string
3010 // item leaving us and we are supposed to remove on leave (no need to drag onto trash) mark it so
3011 GridStack._itemRemoving(el, true);
3012 }
3013
3014 // finally if item originally came from another grid, but left us, restore things back to prev info
3015 if (el._gridstackNodeOrig) {
3016 // console.log('leave delete _gridstackNodeOrig') // TEST
3017 el.gridstackNode = el._gridstackNodeOrig;
3018 delete el._gridstackNodeOrig;
3019 } else if (node._isExternal) {
3020 // item came from outside restore all nodes back to original
3021 this.engine.restoreInitial();
3022 }
3023 }
3024
3025}

Callers 1

_setupAcceptWidgetMethod · 0.95

Calls 5

removeNodeMethod · 0.80
cleanupNodeMethod · 0.80
_itemRemovingMethod · 0.80
restoreInitialMethod · 0.80
offMethod · 0.45

Tested by

no test coverage detected