Skip to content

Commit e217752

Browse files
vetruvetsherwinski
authored andcommitted
fix: remove lingering DOM elements on destroy() (#291)
1 parent b63518d commit e217752

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

src/js/Drift.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ export default class Drift {
168168
}
169169

170170
destroy() {
171+
this.trigger._hide();
171172
this.trigger._unbindEvents();
172173
}
173174
}

src/js/Trigger.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,9 @@ export default class Trigger {
121121
}
122122

123123
_hide(e) {
124-
e.preventDefault();
124+
if (e) {
125+
e.preventDefault();
126+
}
125127

126128
this._lastMovement = null;
127129

test/testDrift.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* global describe it expect beforeEach afterEach */
1+
/* global describe it expect beforeEach afterEach spyOn */
22

33
import Drift from "../src/js/Drift";
44

@@ -137,5 +137,20 @@ describe("Drift", () => {
137137
expect(drift.trigger.enabled).toBe(false);
138138
});
139139
});
140+
141+
describe("#destroy", () => {
142+
it("should hide and unbind events", function() {
143+
const anchor = document.querySelector(".test-anchor");
144+
const drift = new Drift(anchor);
145+
146+
const hideSpy = spyOn(drift.trigger, "_hide");
147+
const unbindEventsSpy = spyOn(drift.trigger, "_unbindEvents");
148+
149+
drift.destroy();
150+
151+
expect(hideSpy).toHaveBeenCalled();
152+
expect(unbindEventsSpy).toHaveBeenCalled();
153+
});
154+
});
140155
});
141156
});

0 commit comments

Comments
 (0)