From 70a388938dd8bf5cf09d5ac5e5481de2fd5831ca Mon Sep 17 00:00:00 2001 From: randym Date: Thu, 15 Feb 2018 18:27:37 +0900 Subject: [PATCH] fix(dragstart): cleanup DOM modifications when drag:start is canceled --- .gitignore | 3 +++ src/Draggable/Draggable.js | 3 +++ src/Draggable/tests/Draggable.test.js | 9 ++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9f0c82f..bba881e 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,6 @@ example.html coverage/ docs/ lib/ + +# 'cause we are all yarny and stuff +package-lock.json diff --git a/src/Draggable/Draggable.js b/src/Draggable/Draggable.js index 0b952ee..a0c01c5 100644 --- a/src/Draggable/Draggable.js +++ b/src/Draggable/Draggable.js @@ -438,6 +438,9 @@ export default class Draggable { this.mirror.parentNode.removeChild(this.mirror); } + this.source.parentNode.removeChild(this.source); + this.originalSource.style.display = null; + this.source.classList.remove(this.getClassNameFor('source:dragging')); this.sourceContainer.classList.remove(this.getClassNameFor('container:dragging')); document.body.classList.remove(this.getClassNameFor('body:dragging')); diff --git a/src/Draggable/tests/Draggable.test.js b/src/Draggable/tests/Draggable.test.js index db39045..aeba6ac 100644 --- a/src/Draggable/tests/Draggable.test.js +++ b/src/Draggable/tests/Draggable.test.js @@ -418,16 +418,21 @@ describe('Draggable', () => { .toBeInstanceOf(DragStartEvent); }); - test('sets dragging to false when `drag:start` event is canceled', () => { + test('cleans up when `drag:start` event is canceled', () => { const newInstance = new Draggable(containers, { draggable: 'li', }); const draggableElement = sandbox.querySelector('li'); document.elementFromPoint = () => draggableElement; + let source; + let originalSource; const callback = jest.fn((event) => { + source = event.source; + originalSource = event.originalSource; event.cancel(); }); + newInstance.on('drag:start', callback); triggerEvent(draggableElement, 'mousedown', {button: 0}); @@ -438,6 +443,8 @@ describe('Draggable', () => { triggerEvent(draggableElement, 'dragstart', {button: 0}); expect(newInstance.dragging).toBeFalsy(); + expect(source.parentNode).toBeNull(); + expect(originalSource.style.display).toEqual(''); }); test('triggers `drag:move` drag event on mousedown', () => {