diff --git a/js/src/popover.js b/js/src/popover.js index a08e4c4dd4..5ef127b8af 100644 --- a/js/src/popover.js +++ b/js/src/popover.js @@ -124,7 +124,7 @@ class Popover extends Tooltip { // Private _getContent() { - return this._element.getAttribute('data-bs-content') || this._config.content + return this._resolvePossibleFunction(this._config.content) } _getBasicClassPrefix() { diff --git a/js/src/tooltip.js b/js/src/tooltip.js index 6dc7a0350d..5746ec6baf 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -17,10 +17,7 @@ import { noop, typeCheckConfig } from './util/index' -import { - DefaultAllowlist, - sanitizeHtml -} from './util/sanitizer' +import { DefaultAllowlist, sanitizeHtml } from './util/sanitizer' import Data from './dom/data' import EventHandler from './dom/event-handler' import Manipulator from './dom/manipulator' @@ -272,7 +269,7 @@ class Tooltip extends BaseComponent { tip.classList.add(CLASS_NAME_SHOW) - const customClass = typeof this._config.customClass === 'function' ? this._config.customClass() : this._config.customClass + const customClass = this._resolvePossibleFunction(this._config.customClass) if (customClass) { tip.classList.add(...customClass.split(' ')) } @@ -413,15 +410,9 @@ class Tooltip extends BaseComponent { } getTitle() { - let title = this._element.getAttribute('data-bs-original-title') + const title = this._element.getAttribute('data-bs-original-title') || this._config.title - if (!title) { - title = typeof this._config.title === 'function' ? - this._config.title.call(this._element) : - this._config.title - } - - return title + return this._resolvePossibleFunction(title) } updateAttachment(attachment) { @@ -456,6 +447,10 @@ class Tooltip extends BaseComponent { return offset } + _resolvePossibleFunction(content) { + return typeof content === 'function' ? content.call(this._element) : content + } + _getPopperConfig(attachment) { const defaultBsPopperConfig = { placement: attachment,