aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrien <[email protected]>2015-03-24 17:12:52 +0100
committerChris Rebert <[email protected]>2015-04-27 01:13:16 -0700
commit37a10d37c17c051830cdd2ecec698d28c0984603 (patch)
treeef52a55d3830974836ae145334622243161f6084
parentd0926f2debde5e920ca369ad56a07e7c8bacdd89 (diff)
downloadbootstrap-37a10d37c17c051830cdd2ecec698d28c0984603.tar.xz
bootstrap-37a10d37c17c051830cdd2ecec698d28c0984603.zip
Compare tooltip right offset to viewport right offset (and not width)
Closes #16142 by merging it.
-rw-r--r--js/tests/unit/tooltip.js27
-rw-r--r--js/tooltip.js2
2 files changed, 28 insertions, 1 deletions
diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js
index 2c492a92b..711eba8ec 100644
--- a/js/tests/unit/tooltip.js
+++ b/js/tests/unit/tooltip.js
@@ -764,6 +764,33 @@ $(function () {
$styles.remove()
})
+ QUnit.test('should not misplace the tip when the right edge offset is greater or equal than the viewport width', function (assert) {
+ assert.expect(2)
+ var styles = '<style>'
+ + '.tooltip, .tooltip *, .tooltip *:before, .tooltip *:after { box-sizing: border-box; }'
+ + '.tooltip, .tooltip .tooltip-inner { width: 50px; height: 50px; max-width: none; background: red; }'
+ + '.container-viewport { padding: 100px; margin-left: 100px; width: 100px; }'
+ + '</style>'
+ var $styles = $(styles).appendTo('head')
+
+ var $container = $('<div class="container-viewport"/>').appendTo(document.body)
+ var $target = $('<a href="#" rel="tooltip" title="tip">foobar</a>')
+ .appendTo($container)
+ .bootstrapTooltip({
+ viewport: '.container-viewport'
+ })
+
+ $target.bootstrapTooltip('show')
+ var $tooltip = $container.find('.tooltip')
+ assert.strictEqual(Math.round($tooltip.offset().left), Math.round($target.position().left + $target.width() / 2 - $tooltip[0].offsetWidth / 2))
+
+ $target.bootstrapTooltip('hide')
+ assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom')
+
+ $container.remove()
+ $styles.remove()
+ })
+
QUnit.test('should not error when trying to show an auto-placed tooltip that has been removed from the dom', function (assert) {
assert.expect(1)
var passed = true
diff --git a/js/tooltip.js b/js/tooltip.js
index 2d42cab24..1f66413d8 100644
--- a/js/tooltip.js
+++ b/js/tooltip.js
@@ -378,7 +378,7 @@
var rightEdgeOffset = pos.left + viewportPadding + actualWidth
if (leftEdgeOffset < viewportDimensions.left) { // left overflow
delta.left = viewportDimensions.left - leftEdgeOffset
- } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
+ } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
}
}