* Remove the given node from the grid. * * @param node the node to remove * @param removeDOM if true (default), marks node for DOM removal * @param triggerEvent if true, adds node to removedNodes list for event triggering * @returns the engine instance for chaining * * @example
(node: GridStackNode, removeDOM = true, triggerEvent = false)
| 788 | * engine.removeNode(node, true, true); |
| 789 | */ |
| 790 | public removeNode(node: GridStackNode, removeDOM = true, triggerEvent = false): GridStackEngine { |
| 791 | if (!this.nodes.find(n => n._id === node._id)) { |
| 792 | // TEST console.log(`Error: GridStackEngine.removeNode() node._id=${node._id} not found!`) |
| 793 | return this; |
| 794 | } |
| 795 | if (triggerEvent) { // we wait until final drop to manually track removed items (rather than during drag) |
| 796 | this.removedNodes.push(node); |
| 797 | } |
| 798 | if (removeDOM) node._removeDOM = true; // let CB remove actual HTML (used to set _id to null, but then we loose layout info) |
| 799 | // don't use 'faster' .splice(findIndex(),1) in case node isn't in our list, or in multiple times. |
| 800 | this.nodes = this.nodes.filter(n => n._id !== node._id); |
| 801 | if (!node._isAboutToRemove) this._packNodes(); // if dragged out, no need to relayout as already done... |
| 802 | this._notify([node]); |
| 803 | return this; |
| 804 | } |
| 805 | |
| 806 | /** |
| 807 | * Remove all nodes from the grid. |
no test coverage detected