Skip to content

Commit 1532d01

Browse files
committed
TS: fix when dragging to delete and back
introduced during the jquery-ui removal.
1 parent 49e9ed8 commit 1532d01

File tree

5 files changed

+22
-20
lines changed

5 files changed

+22
-20
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"scripts": {
1212
"build": "yarn --no-progress && rm -rf dist/* && webpack && tsc --stripInternal && grunt && doctoc ./README.md && doctoc ./doc/README.md && doctoc ./doc/CHANGES.md",
1313
"t": "tsc --stripInternal",
14-
"web": "rm -rf dist/* && webpack",
14+
"w": "webpack",
1515
"test": "yarn lint && karma start karma.conf.js",
1616
"lint": "tsc --noEmit && eslint src/*.ts",
1717
"reset": "rm -rf dist node_modules",

spec/gridstack-engine-spec.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ describe('gridstack engine', function() {
152152
});
153153

154154
beforeEach(function() {
155-
engine.batchMode = false;
155+
delete engine.batchMode;
156156
});
157157

158158
it('should return all dirty nodes', function() {
@@ -187,8 +187,8 @@ describe('gridstack engine', function() {
187187
expect(engine.float).toEqual(true);
188188
engine.commit();
189189
engine.commit();
190-
expect(engine.batchMode).toBeFalse();
191-
expect(engine.float).toEqual(false);
190+
expect(engine.batchMode).not.toBeTrue();
191+
expect(engine.float).not.toBeTrue;
192192
});
193193

194194
it('should work on float grids', function() {
@@ -197,7 +197,7 @@ describe('gridstack engine', function() {
197197
expect(engine.batchMode).toBeTrue();
198198
expect(engine.float).toEqual(true);
199199
engine.commit();
200-
expect(engine.batchMode).toBeFalse();
200+
expect(engine.batchMode).not.toBeTrue();
201201
expect(engine.float).toEqual(true);
202202
});
203203
});
@@ -214,7 +214,7 @@ describe('gridstack engine', function() {
214214
expect(engine.batchMode).toBeTrue();
215215
expect(engine.float).toEqual(true);
216216
engine.commit();
217-
expect(engine.batchMode).toBeFalse();
217+
expect(engine.batchMode).not.toBeTrue();
218218
expect(engine.float).toEqual(true);
219219
});
220220
});

src/gridstack-engine.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ export class GridStackEngine {
285285
return this;
286286
}
287287

288-
public addNode(node: GridStackNode, triggerAddEvent?: boolean): GridStackNode {
288+
public addNode(node: GridStackNode, triggerAddEvent = false): GridStackNode {
289289
node = this.prepareNode(node);
290290

291291
node._id = node._id || GridStackEngine._idSeq++;
@@ -320,9 +320,10 @@ export class GridStackEngine {
320320
return node;
321321
}
322322

323-
public removeNode(node: GridStackNode, detachNode?: boolean): GridStackEngine {
324-
detachNode = (detachNode === undefined ? true : detachNode);
325-
this.removedNodes.push(node);
323+
public removeNode(node: GridStackNode, detachNode = true, triggerRemoveEvent = false): GridStackEngine {
324+
if (triggerRemoveEvent) {
325+
this.removedNodes.push(node);
326+
}
326327
node._id = null; // hint that node is being removed
327328
this.nodes = this.nodes.filter(n => n !== node);
328329
this._packNodes();
@@ -459,7 +460,7 @@ export class GridStackEngine {
459460
public endUpdate(): GridStackEngine {
460461
let n = this.nodes.find(n => n._updating);
461462
if (n) {
462-
n._updating = false;
463+
delete n._updating;
463464
this.nodes.forEach(n => { delete n._packY; });
464465
}
465466
return this;

src/gridstack.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ export class GridStack {
827827
* @param el widget or selector to modify
828828
* @param detachNode if false DOM node won't be removed from the tree (Default? true).
829829
*/
830-
public removeWidget(els: GridStackElement, detachNode?: boolean): GridStack {
830+
public removeWidget(els: GridStackElement, detachNode = true): GridStack {
831831
this.getElements(els).forEach(el => {
832832
if (el.parentElement !== this.el) return; // not our child!
833833
let node = el.gridstackNode;
@@ -841,7 +841,7 @@ export class GridStack {
841841
delete el.gridstackNode;
842842
this.dd.draggable(el, 'destroy').resizable(el, 'destroy');
843843

844-
this.engine.removeNode(node, detachNode);
844+
this.engine.removeNode(node, detachNode, true); // true for trigger event
845845
});
846846
this._triggerRemoveEvent();
847847
this._triggerChangeEvent();
@@ -1165,9 +1165,9 @@ export class GridStack {
11651165
let node = el.gridstackNode;
11661166
if (!node || !node._removeTimeout) return this;
11671167
clearTimeout(node._removeTimeout);
1168-
node._removeTimeout = null;
1168+
delete node._removeTimeout;
11691169
el.classList.remove('grid-stack-item-removing');
1170-
node._isAboutToRemove = false;
1170+
delete node._isAboutToRemove;
11711171
return this;
11721172
}
11731173

@@ -1257,7 +1257,7 @@ export class GridStack {
12571257
this._writeAttrs(this.placeholder, x, y, width, height);
12581258
this.el.appendChild(this.placeholder);
12591259
node.el = this.placeholder;
1260-
node._temporaryRemoved = false;
1260+
delete node._temporaryRemoved;
12611261
}
12621262
}
12631263
} else if (event.type === 'resize') {
@@ -1295,6 +1295,7 @@ export class GridStack {
12951295
if (gridToNotify._gsEventHandler[event.type]) {
12961296
gridToNotify._gsEventHandler[event.type](event, target);
12971297
}
1298+
gridToNotify.engine.removedNodes.push(node);
12981299
gridToNotify._triggerRemoveEvent();
12991300
delete el.gridstackNode;
13001301
el.remove();
@@ -1308,7 +1309,7 @@ export class GridStack {
13081309
this._writeAttrs(target, node._beforeDragX, node._beforeDragY, node.width, node.height);
13091310
node.x = node._beforeDragX;
13101311
node.y = node._beforeDragY;
1311-
node._temporaryRemoved = false;
1312+
delete node._temporaryRemoved;
13121313
this.engine.addNode(node);
13131314
}
13141315
if (this._gsEventHandler[event.type]) {
@@ -1475,7 +1476,7 @@ export class GridStack {
14751476
this.column(1);
14761477
} else {
14771478
if (!this._oneColumnMode) { return this }
1478-
this._oneColumnMode = false;
1479+
delete this._oneColumnMode;
14791480
this.column(this._prevColumn);
14801481
}
14811482
return this;
@@ -1499,7 +1500,7 @@ export class GridStack {
14991500
.on(trashZone, 'dropout', (event, el) => {
15001501
let node = el.gridstackNode;
15011502
if (!node || node._grid !== this) return;
1502-
el.dataset.inTrashZone = 'false';
1503+
delete el.dataset.inTrashZone;
15031504
this._clearRemovingTimeout(el);
15041505
});
15051506
}

webpack.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module.exports = {
44
entry: {
55
'gridstack.all': './src/index.ts'
66
},
7-
mode: 'production', // production vs development
7+
mode: 'development', // production vs development
88
module: {
99
rules: [
1010
{

0 commit comments

Comments
 (0)