Skip to content

Commit 1ccae24

Browse files
Merge pull request #8 from mschlitz-trux/tooltip-missing-class-fixes
Fix tooltip missing classes
2 parents 063d699 + 7dc6922 commit 1ccae24

File tree

2 files changed

+22
-26
lines changed

2 files changed

+22
-26
lines changed

dist/ui-bootstrap-tpls.js

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5158,24 +5158,22 @@ angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.s
51585158

51595159
if (!positionTimeout) {
51605160
positionTimeout = $timeout(function() {
5161-
var placementClasses = $position.parsePlacement(ttScope.placement);
5161+
// calculate position based on available space
5162+
var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendTo || appendToBody, true);
5163+
var placementClasses = ttPosition.placement.split('-');
51625164

5163-
// need to add classes prior to placement to allow correct tooltip size calculations
5165+
// add placement class, e.g. "top", "left", etc
51645166
if (!tooltip.hasClass(options.placementClassPrefix + placementClasses[0])) {
5165-
tooltip.removeClass(lastPlacement);
5166-
tooltip.removeClass(options.placementClassPrefix + lastPlacement);
5167+
tooltip.removeClass(options.placementClassPrefix + lastPlacement.split('-')[0]);
51675168
tooltip.addClass(options.placementClassPrefix + placementClasses[0]);
51685169
}
5169-
5170-
// calculate proper positioning based on available space
5171-
var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendTo || appendToBody, true);
5172-
var placement = ttPosition.placement;
51735170

5174-
if (!tooltip.hasClass(options.placementClassPrefix + placement)) {
5175-
tooltip.removeClass(options.placementClassPrefix + placementClasses[0]);
5176-
tooltip.addClass(options.placementClassPrefix + placement);
5171+
// add secondary alignment class, e.g. "top-left", "bottom-right", etc
5172+
if (!tooltip.hasClass(options.placementClassPrefix + ttPosition.placement)) {
5173+
tooltip.removeClass(options.placementClassPrefix + lastPlacement);
5174+
tooltip.addClass(options.placementClassPrefix + ttPosition.placement);
51775175
}
5178-
5176+
51795177
// Take into account tooltup margins, since boostrap css draws tooltip arrow inside margins
51805178
var initialHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');
51815179
var elementPos = appendToBody ? $position.offset(element) : $position.position(element);
@@ -5199,7 +5197,7 @@ angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.s
51995197
} else if (lastPlacement !== ttPosition.placement) {
52005198
$position.positionArrow(tooltip, ttPosition.placement);
52015199
}
5202-
lastPlacement = placement;
5200+
lastPlacement = ttPosition.placement;
52035201

52045202
positionTimeout = null;
52055203
}, 0, false);

src/tooltip/tooltip.js

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -163,24 +163,22 @@ angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.s
163163

164164
if (!positionTimeout) {
165165
positionTimeout = $timeout(function() {
166-
var placementClasses = $position.parsePlacement(ttScope.placement);
166+
// calculate position based on available space
167+
var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendTo || appendToBody, true);
168+
var placementClasses = ttPosition.placement.split('-');
167169

168-
// need to add classes prior to placement to allow correct tooltip size calculations
170+
// add placement class, e.g. "top", "left", etc
169171
if (!tooltip.hasClass(options.placementClassPrefix + placementClasses[0])) {
170-
tooltip.removeClass(lastPlacement);
171-
tooltip.removeClass(options.placementClassPrefix + lastPlacement);
172+
tooltip.removeClass(options.placementClassPrefix + lastPlacement.split('-')[0]);
172173
tooltip.addClass(options.placementClassPrefix + placementClasses[0]);
173174
}
174-
175-
// calculate proper positioning based on available space
176-
var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendTo || appendToBody, true);
177-
var placement = ttPosition.placement;
178175

179-
if (!tooltip.hasClass(options.placementClassPrefix + placement)) {
180-
tooltip.removeClass(options.placementClassPrefix + placementClasses[0]);
181-
tooltip.addClass(options.placementClassPrefix + placement);
176+
// add secondary alignment class, e.g. "top-left", "bottom-right", etc
177+
if (!tooltip.hasClass(options.placementClassPrefix + ttPosition.placement)) {
178+
tooltip.removeClass(options.placementClassPrefix + lastPlacement);
179+
tooltip.addClass(options.placementClassPrefix + ttPosition.placement);
182180
}
183-
181+
184182
// Take into account tooltup margins, since boostrap css draws tooltip arrow inside margins
185183
var initialHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');
186184
var elementPos = appendToBody ? $position.offset(element) : $position.position(element);
@@ -204,7 +202,7 @@ angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.s
204202
} else if (lastPlacement !== ttPosition.placement) {
205203
$position.positionArrow(tooltip, ttPosition.placement);
206204
}
207-
lastPlacement = placement;
205+
lastPlacement = ttPosition.placement;
208206

209207
positionTimeout = null;
210208
}, 0, false);

0 commit comments

Comments
 (0)