Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoSot <geo.sotis@gmail.com>2021-08-31 16:11:22 +0300
committerGitHub <noreply@github.com>2021-08-31 16:11:22 +0300
commit51afe026ca1c08d228cb58cbe47f8c3d61167c96 (patch)
tree83403de3d09c5c135e48119712533adb9741a720
parentef21000cbe742830e0e1e39864f9315daf939722 (diff)
Fix tooltip `data-bs-original-title` issue (#34842)
-rw-r--r--js/src/tooltip.js25
1 files changed, 17 insertions, 8 deletions
diff --git a/js/src/tooltip.js b/js/src/tooltip.js
index 288146472f..f65fd517a1 100644
--- a/js/src/tooltip.js
+++ b/js/src/tooltip.js
@@ -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) {