@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)
| 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 | } |
no test coverage detected