aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/src/util/backdrop.js6
-rw-r--r--js/tests/unit/util/backdrop.spec.js19
2 files changed, 24 insertions, 1 deletions
diff --git a/js/src/util/backdrop.js b/js/src/util/backdrop.js
index 4c18e99c0..c05c221dd 100644
--- a/js/src/util/backdrop.js
+++ b/js/src/util/backdrop.js
@@ -116,7 +116,11 @@ class Backdrop {
EventHandler.off(this._element, EVENT_MOUSEDOWN)
- this._getElement().parentNode.removeChild(this._element)
+ const { parentNode } = this._getElement()
+ if (parentNode) {
+ parentNode.removeChild(this._element)
+ }
+
this._isAppended = false
}
diff --git a/js/tests/unit/util/backdrop.spec.js b/js/tests/unit/util/backdrop.spec.js
index ae342b092..02dea5a25 100644
--- a/js/tests/unit/util/backdrop.spec.js
+++ b/js/tests/unit/util/backdrop.spec.js
@@ -129,6 +129,25 @@ describe('Backdrop', () => {
})
})
+ it('should not error if the backdrop no longer has a parent', done => {
+ const instance = new Backdrop({
+ isVisible: true,
+ isAnimated: true
+ })
+ const getElements = () => document.querySelectorAll(CLASS_BACKDROP)
+
+ instance.show(() => {
+ instance.hide(() => {
+ expect(getElements().length).toEqual(0)
+
+ // replace the fixture, which was just wiped out
+ fixtureEl = getFixture()
+ done()
+ })
+ document.body.innerHTML = 'changed'
+ })
+ })
+
describe('click callback', () => {
it('it should execute callback on click', done => {
const spy = jasmine.createSpy('spy')