]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
fix tooltip/popper disposal inconsistencies (#37235)
authorGeoSot <geo.sotis@gmail.com>
Thu, 6 Oct 2022 08:31:38 +0000 (11:31 +0300)
committerGitHub <noreply@github.com>
Thu, 6 Oct 2022 08:31:38 +0000 (11:31 +0300)
js/src/tooltip.js

index e01f0a4ae59c1bf06f409aa38d80cc3e614b819d..70198c81bf949e80c3a5a957a7d726f29db81110 100644 (file)
@@ -172,10 +172,6 @@ class Tooltip extends BaseComponent {
 
     EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)
 
-    if (this.tip) {
-      this.tip.remove()
-    }
-
     if (this._element.getAttribute('data-bs-original-title')) {
       this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))
     }
@@ -202,10 +198,7 @@ class Tooltip extends BaseComponent {
     }
 
     // todo v6 remove this OR make it optional
-    if (this.tip) {
-      this.tip.remove()
-      this.tip = null
-    }
+    this._disposePopper()
 
     const tip = this._getTipElement()
 
@@ -218,11 +211,7 @@ class Tooltip extends BaseComponent {
       EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))
     }
 
-    if (this._popper) {
-      this._popper.update()
-    } else {
-      this._popper = this._createPopper(tip)
-    }
+    this._popper = this._createPopper(tip)
 
     tip.classList.add(CLASS_NAME_SHOW)
 
@@ -281,13 +270,11 @@ class Tooltip extends BaseComponent {
       }
 
       if (!this._isHovered) {
-        tip.remove()
+        this._disposePopper()
       }
 
       this._element.removeAttribute('aria-describedby')
       EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))
-
-      this._disposePopper()
     }
 
     this._queueCallback(complete, this.tip, this._isAnimated())
@@ -612,6 +599,11 @@ class Tooltip extends BaseComponent {
       this._popper.destroy()
       this._popper = null
     }
+
+    if (this.tip) {
+      this.tip.remove()
+      this.tip = null
+    }
   }
 
   // Static