@@ -154,6 +154,7 @@ angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.s
154
154
var isOpenParse = angular . isDefined ( attrs [ prefix + 'IsOpen' ] ) ? $parse ( attrs [ prefix + 'IsOpen' ] ) : false ;
155
155
var contentParse = options . useContentExp ? $parse ( attrs [ ttType ] ) : false ;
156
156
var observers = [ ] ;
157
+ var lastPlacement ;
157
158
158
159
var positionTooltip = function ( ) {
159
160
// check if tooltip exists and is not empty
@@ -168,29 +169,16 @@ angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.s
168
169
var ttPosition = $position . positionElements ( element , tooltip , ttScope . placement , appendToBody ) ;
169
170
tooltip . css ( { top : ttPosition . top + 'px' , left : ttPosition . left + 'px' , visibility : 'visible' } ) ;
170
171
171
- // If the placement class is prefixed, still need
172
- // to remove the TWBS standard class.
173
- if ( options . placementClassPrefix ) {
174
- tooltip . removeClass ( 'top bottom left right' ) ;
175
- }
172
+ if ( ttPosition . placement !== lastPlacement ) {
173
+ tooltip . removeClass ( lastPlacement . split ( '-' ) [ 0 ] ) ;
174
+ tooltip . addClass ( ttPosition . placement . split ( '-' ) [ 0 ] ) ;
175
+
176
+ tooltip . removeClass ( options . placementClassPrefix + lastPlacement ) ;
177
+ tooltip . addClass ( options . placementClassPrefix + ttPosition . placement ) ;
176
178
177
- tooltip . removeClass (
178
- options . placementClassPrefix + 'top ' +
179
- options . placementClassPrefix + 'top-left ' +
180
- options . placementClassPrefix + 'top-right ' +
181
- options . placementClassPrefix + 'bottom ' +
182
- options . placementClassPrefix + 'bottom-left ' +
183
- options . placementClassPrefix + 'bottom-right ' +
184
- options . placementClassPrefix + 'left ' +
185
- options . placementClassPrefix + 'left-top ' +
186
- options . placementClassPrefix + 'left-bottom ' +
187
- options . placementClassPrefix + 'right ' +
188
- options . placementClassPrefix + 'right-top ' +
189
- options . placementClassPrefix + 'right-bottom' ) ;
190
-
191
- var placement = ttPosition . placement . split ( '-' ) ;
192
- tooltip . addClass ( placement [ 0 ] + ' ' + options . placementClassPrefix + ttPosition . placement ) ;
193
- $position . positionArrow ( tooltip , ttPosition . placement ) ;
179
+ $position . positionArrow ( tooltip , ttPosition . placement ) ;
180
+ lastPlacement = ttPosition . placement ;
181
+ }
194
182
195
183
positionTimeout = null ;
196
184
} , 0 , false ) ;
@@ -365,6 +353,7 @@ angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.s
365
353
366
354
ttScope . popupClass = attrs [ prefix + 'Class' ] ;
367
355
ttScope . placement = angular . isDefined ( attrs [ prefix + 'Placement' ] ) ? attrs [ prefix + 'Placement' ] : options . placement ;
356
+ lastPlacement = '' ;
368
357
369
358
var delay = parseInt ( attrs [ prefix + 'PopupDelay' ] , 10 ) ;
370
359
var closeDelay = parseInt ( attrs [ prefix + 'PopupCloseDelay' ] , 10 ) ;
@@ -540,7 +529,7 @@ angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.s
540
529
}
541
530
542
531
appendToBody = angular . isDefined ( appendToBodyVal ) ? appendToBodyVal : appendToBody ;
543
-
532
+
544
533
// Make sure tooltip is destroyed and removed.
545
534
scope . $on ( '$destroy' , function onDestroyTooltip ( ) {
546
535
unregisterTriggers ( ) ;
0 commit comments