From aa7f95fd777b5a733bc85c158919d206e05a61b5 Mon Sep 17 00:00:00 2001 From: Max Beatty Date: Mon, 26 Dec 2016 16:21:27 -0800 Subject: [PATCH] update click state when hiding so can be shown again by trigger. fixes #16732 --- js/src/tooltip.js | 4 ++++ js/tests/unit/tooltip.js | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/js/src/tooltip.js b/js/src/tooltip.js index 024035fe4e23..0c1d381b90df 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 1e59f0958fd5..7ff967fabc8e 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') + }) + })