diff --git a/js/src/tooltip.js b/js/src/tooltip.js index 024035fe4e..0c1d381b90 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -358,6 +358,10 @@ const Tooltip = (($) => { $(tip).removeClass(ClassName.SHOW) + this._activeTrigger[Trigger.CLICK] = false + this._activeTrigger[Trigger.FOCUS] = false + this._activeTrigger[Trigger.HOVER] = false + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { this._isTransitioning = true diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js index 1e59f0958f..7ff967fabc 100644 --- a/js/tests/unit/tooltip.js +++ b/js/tests/unit/tooltip.js @@ -818,4 +818,25 @@ $(function () { }) }) + QUnit.test('should show on first trigger after hide', function (assert) { + assert.expect(3) + var $el = $('') + .appendTo('#qunit-fixture') + .bootstrapTooltip({ trigger: 'click hover focus', animation: false }) + + var tooltip = $el.data('bs.tooltip') + var $tooltip = $(tooltip.getTipElement()) + + function showingTooltip() { return $tooltip.hasClass('show') || tooltip._hoverState === 'show' } + + $el.trigger('click') + assert.ok(showingTooltip(), 'tooltip is faded in') + + $el.bootstrapTooltip('hide') + assert.ok(!showingTooltip(), 'tooltip was faded out') + + $el.trigger('click') + assert.ok(showingTooltip(), 'tooltip is faded in again') + }) + })