* Removes widget from the grid. * @param el widget or selector to modify * @param removeDOM if `false` DOM element won't be removed from the tree (Default? true). * @param triggerEvent if `false` (quiet mode) element will not be added to removed list and no 'removed' callbacks will be call
(els: GridStackElement, removeDOM = true, triggerEvent = true)
| 1388 | * @param triggerEvent if `false` (quiet mode) element will not be added to removed list and no 'removed' callbacks will be called (Default? true). |
| 1389 | */ |
| 1390 | public removeWidget(els: GridStackElement, removeDOM = true, triggerEvent = true): GridStack { |
| 1391 | if (!els) { console.error('Error: GridStack.removeWidget(undefined) called'); return this; } |
| 1392 | |
| 1393 | GridStack.getElements(els).forEach(el => { |
| 1394 | if (el.parentElement && el.parentElement !== this.el) return; // not our child! |
| 1395 | let node = el.gridstackNode; |
| 1396 | // For Meteor support: https://github.com/gridstack/gridstack.js/pull/272 |
| 1397 | if (!node) { |
| 1398 | node = this.engine.nodes.find(n => el === n.el); |
| 1399 | } |
| 1400 | if (!node) return; |
| 1401 | |
| 1402 | if (removeDOM && GridStack.addRemoveCB) { |
| 1403 | GridStack.addRemoveCB(this.el, node, false, false); |
| 1404 | } |
| 1405 | |
| 1406 | // remove our DOM data (circular link) and drag&drop permanently |
| 1407 | delete el.gridstackNode; |
| 1408 | this._removeDD(el); |
| 1409 | |
| 1410 | this.engine.removeNode(node, removeDOM, triggerEvent); |
| 1411 | |
| 1412 | if (removeDOM && el.parentElement) { |
| 1413 | el.remove(); // in batch mode engine.removeNode doesn't call back to remove DOM |
| 1414 | } |
| 1415 | }); |
| 1416 | if (triggerEvent) { |
| 1417 | this._triggerRemoveEvent(); |
| 1418 | this._triggerChangeEvent(); |
| 1419 | } |
| 1420 | return this; |
| 1421 | } |
| 1422 | |
| 1423 | /** |
| 1424 | * Removes all widgets from the grid. |
no test coverage detected