Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/src/tooltip.js14
-rw-r--r--js/tests/unit/tooltip.js58
2 files changed, 67 insertions, 5 deletions
diff --git a/js/src/tooltip.js b/js/src/tooltip.js
index 3d3130bb5b..cf8b8e1186 100644
--- a/js/src/tooltip.js
+++ b/js/src/tooltip.js
@@ -486,13 +486,17 @@ class Tooltip {
(event) => this._leave(event)
)
}
-
- $(this.element).closest('.modal').on(
- 'hide.bs.modal',
- () => this.hide()
- )
})
+ $(this.element).closest('.modal').on(
+ 'hide.bs.modal',
+ () => {
+ if (this.element) {
+ this.hide()
+ }
+ }
+ )
+
if (this.config.selector) {
this.config = {
...this.config,
diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js
index 9cf3068a36..7652d4cf86 100644
--- a/js/tests/unit/tooltip.js
+++ b/js/tests/unit/tooltip.js
@@ -862,6 +862,44 @@ $(function () {
.modal('show')
})
+ QUnit.test('should allow to close modal if the tooltip element is detached', function (assert) {
+ assert.expect(1)
+ var done = assert.async()
+ var templateHTML = [
+ '<div id="modal-test" class="modal">',
+ ' <div class="modal-dialog" role="document">',
+ ' <div class="modal-content">',
+ ' <div class="modal-body">',
+ ' <a id="tooltipTest" href="#" data-toggle="tooltip" title="Some tooltip text!">Tooltip</a>',
+ ' </div>',
+ ' </div>',
+ ' </div>',
+ '</div>'
+ ].join('')
+
+ $(templateHTML).appendTo('#qunit-fixture')
+ var $tooltip = $('#tooltipTest')
+ var $modal = $('#modal-test')
+
+ $tooltip.on('shown.bs.tooltip', function () {
+ $tooltip.detach()
+ $tooltip.bootstrapTooltip('dispose')
+ $modal.modal('hide')
+ })
+
+ $modal.on('shown.bs.modal', function () {
+ $tooltip.bootstrapTooltip({
+ trigger: 'manuel'
+ })
+ .bootstrapTooltip('show')
+ })
+ .on('hidden.bs.modal', function () {
+ assert.ok(true, 'modal hidden')
+ done()
+ })
+ .modal('show')
+ })
+
QUnit.test('should reset tip classes when hidden event triggered', function (assert) {
assert.expect(2)
var done = assert.async()
@@ -966,4 +1004,24 @@ $(function () {
assert.ok(tooltip.tip === $tipTest[0])
})
+
+ QUnit.test('should toggle enabled', function (assert) {
+ assert.expect(3)
+
+ var $tooltip = $('<a href="#" rel="tooltip" data-trigger="click" title="Another tooltip"/>')
+ .appendTo('#qunit-fixture')
+ .bootstrapTooltip()
+
+ var tooltip = $tooltip.data('bs.tooltip')
+
+ assert.strictEqual(tooltip._isEnabled, true)
+
+ tooltip.toggleEnabled()
+
+ assert.strictEqual(tooltip._isEnabled, false)
+
+ tooltip.toggleEnabled()
+
+ assert.strictEqual(tooltip._isEnabled, true)
+ })
})