From: GeoSot Date: Tue, 31 Aug 2021 13:11:22 +0000 (+0300) Subject: Fix tooltip `data-bs-original-title` issue (#34842) X-Git-Tag: v5.1.1~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=51afe026ca1c08d228cb58cbe47f8c3d61167c96;p=thirdparty%2Fbootstrap.git Fix tooltip `data-bs-original-title` issue (#34842) --- 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) {