]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Fix tooltip `data-bs-original-title` issue (#34842)
authorGeoSot <geo.sotis@gmail.com>
Tue, 31 Aug 2021 13:11:22 +0000 (16:11 +0300)
committerGitHub <noreply@github.com>
Tue, 31 Aug 2021 13:11:22 +0000 (16:11 +0300)
js/src/tooltip.js

index 288146472f572f2d27545d18248059846f041e97..f65fd517a137a7158642859dbbd6a072b1be7019 100644 (file)
@@ -211,10 +211,7 @@ class Tooltip extends BaseComponent {
       this.tip.remove()
     }
 
-    if (this._popper) {
-      this._popper.destroy()
-    }
-
+    this._disposePopper()
     super.dispose()
   }
 
@@ -237,6 +234,14 @@ class Tooltip extends BaseComponent {
       return
     }
 
+    // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`
+    // This will be removed later in favor of a `setContent` method
+    if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {
+      this._disposePopper()
+      this.tip.remove()
+      this.tip = null
+    }
+
     const tip = this.getTipElement()
     const tipId = getUID(this.constructor.NAME)
 
@@ -319,10 +324,7 @@ class Tooltip extends BaseComponent {
       this._element.removeAttribute('aria-describedby')
       EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)
 
-      if (this._popper) {
-        this._popper.destroy()
-        this._popper = null
-      }
+      this._disposePopper()
     }
 
     const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)
@@ -725,6 +727,13 @@ class Tooltip extends BaseComponent {
     this._addAttachmentClass(this._getAttachment(state.placement))
   }
 
+  _disposePopper() {
+    if (this._popper) {
+      this._popper.destroy()
+      this._popper = null
+    }
+  }
+
   // Static
 
   static jQueryInterface(config) {