Skip to content

Commit 244ec9a

Browse files
committed
drag to trash calls removeWidget()
* dragging onto trash now calls removeWidget() and therefore `GridStack.addRemoveCB` (for component cleanup)
1 parent 0ab56af commit 244ec9a

File tree

4 files changed

+9
-15
lines changed

4 files changed

+9
-15
lines changed

angular/projects/demo/src/environments/environment.prod.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

doc/CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ Change log
9494

9595
## 8.3.0-dev (TBD)
9696
* feat [#2378](https://github.com/gridstack/gridstack.js/pull/2378) attribute `DDRemoveOpt.decline` to deny the removal of a specific class.
97+
* fix: dragging onto trash now calls removeWidget() and therefore `GridStack.addRemoveCB` (for component cleanup)
9798

9899
## 8.3.0 (2023-06-13)
99100
* feat [#2358](https://github.com/gridstack/gridstack.js/issues/2358) column(N, 'list'|'compact'|...) resizing now support reflowing content as list

src/gridstack-engine.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -547,8 +547,9 @@ export class GridStackEngine {
547547
if (removeDOM) node._removeDOM = true; // let CB remove actual HTML (used to set _id to null, but then we loose layout info)
548548
// don't use 'faster' .splice(findIndex(),1) in case node isn't in our list, or in multiple times.
549549
this.nodes = this.nodes.filter(n => n._id !== node._id);
550-
return this._packNodes()
551-
._notify([node]);
550+
if (!node._isAboutToRemove) this._packNodes(); // if dragged out, no need to relayout as already done...
551+
this._notify([node]);
552+
return this;
552553
}
553554

554555
public removeAll(removeDOM = true): GridStackEngine {

src/gridstack.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2113,17 +2113,12 @@ export class GridStack {
21132113
node.el = target;
21142114

21152115
if (node._isAboutToRemove) {
2116-
let gridToNotify = el.gridstackNode.grid;
2117-
if (gridToNotify._gsEventHandler[event.type]) {
2118-
gridToNotify._gsEventHandler[event.type](event, target);
2116+
let grid = el.gridstackNode.grid;
2117+
if (grid._gsEventHandler[event.type]) {
2118+
grid._gsEventHandler[event.type](event, target);
21192119
}
2120-
this._removeDD(el);
2121-
gridToNotify.engine.removedNodes.push(node);
2122-
gridToNotify._triggerRemoveEvent();
2123-
// break circular links and remove DOM
2124-
delete el.gridstackNode;
2125-
delete node.el;
2126-
el.remove();
2120+
grid.engine.nodes.push(node); // temp add it back so we can proper remove it next
2121+
grid.removeWidget(el, true, true);
21272122
} else {
21282123
Utils.removePositioningStyles(target);
21292124
if (node._temporaryRemoved) {

0 commit comments

Comments
 (0)