diff options
author | GeoSot <geo.sotis@gmail.com> | 2021-08-31 16:11:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-31 16:11:22 +0300 |
commit | 51afe026ca1c08d228cb58cbe47f8c3d61167c96 (patch) | |
tree | 83403de3d09c5c135e48119712533adb9741a720 | |
parent | ef21000cbe742830e0e1e39864f9315daf939722 (diff) |
Fix tooltip `data-bs-original-title` issue (#34842)
-rw-r--r-- | js/src/tooltip.js | 25 |
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) { |