diff --git a/js/src/tooltip.js b/js/src/tooltip.js index 9ad73328bed9fb214a8c9da82756ed58f517c3fb..1bda97e388caf614d6ceb52e9741ff1b9282e3e6 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -331,6 +331,10 @@ class Tooltip { } hide() { + if (!this._popper) { + return + } + const tip = this.getTipElement() const complete = () => { if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { diff --git a/js/tests/unit/tooltip.spec.js b/js/tests/unit/tooltip.spec.js index 0a98096a405ecc25e2c9e595f1bfcbefa1aaa78e..3e5c9179401b77e41af3ae84fb501c613d61b142 100644 --- a/js/tests/unit/tooltip.spec.js +++ b/js/tests/unit/tooltip.spec.js @@ -717,6 +717,20 @@ describe('Tooltip', () => { tooltip.show() }) + + it('should not throw error running hide if popper hasn\'t been shown', () => { + fixtureEl.innerHTML = '<div></div>' + + const div = fixtureEl.querySelector('div') + const tooltip = new Tooltip(div) + + try { + tooltip.hide() + expect().nothing() + } catch { + throw new Error('should not throw error') + } + }) }) describe('update', () => {