const JQUERY_NO_CONFLICT = $.fn[NAME]
const TRANSITION_DURATION = 150
const CLASS_PREFIX = 'bs-tether'
+ const TETHER_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g')
const Default = {
animation : true,
tip.parentNode.removeChild(tip)
}
+ this._cleanTipClass()
this.element.removeAttribute('aria-describedby')
$(this.element).trigger(this.constructor.Event.HIDDEN)
this._isTransitioning = false
return AttachmentMap[placement.toUpperCase()]
}
+ _cleanTipClass() {
+ const $tip = $(this.getTipElement())
+ const tabClass = $tip.attr('class').match(TETHER_PREFIX_REGEX)
+ if (tabClass !== null && tabClass.length > 0) {
+ $tip.removeClass(tabClass.join(''))
+ }
+ }
+
_setListeners() {
const triggers = this.config.trigger.split(' ')
})
.modal('show')
})
+
+ QUnit.test('should reset tip classes when hidden event triggered', function (assert) {
+ assert.expect(2)
+ var done = assert.async()
+ var $el = $('<a href="#" rel="tooltip" title="Test tooltip"/>')
+ .appendTo('#qunit-fixture')
+ .bootstrapTooltip('show')
+ .on('hidden.bs.tooltip', function () {
+ var tooltip = $el.data('bs.tooltip')
+ var $tooltip = $(tooltip.getTipElement())
+ assert.ok($tooltip.hasClass('tooltip'))
+ assert.ok($tooltip.hasClass('fade'))
+ done()
+ })
+
+ $el.bootstrapTooltip('hide')
+ })
})