diff options
| author | James Remeika <[email protected]> | 2020-11-20 04:56:16 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-11-20 11:56:16 +0200 |
| commit | 2d8c02eb1024ef2ce8877d6484a9ea8a4d9cd67f (patch) | |
| tree | 1f4a1277f06bd474a76865f301cc1b8c223264fd /js | |
| parent | ffa88deb85b406fc32b3abd4b66169405634bfbe (diff) | |
| download | bootstrap-2d8c02eb1024ef2ce8877d6484a9ea8a4d9cd67f.tar.xz bootstrap-2d8c02eb1024ef2ce8877d6484a9ea8a4d9cd67f.zip | |
tooltip/popover: add a `customClass` option (#31834)
Co-authored-by: XhmikosR <[email protected]>
Diffstat (limited to 'js')
| -rw-r--r-- | js/src/tooltip.js | 7 | ||||
| -rw-r--r-- | js/tests/unit/popover.js | 13 | ||||
| -rw-r--r-- | js/tests/unit/tooltip.js | 50 |
3 files changed, 70 insertions, 0 deletions
diff --git a/js/src/tooltip.js b/js/src/tooltip.js index 4b58f3156..a77034038 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -41,6 +41,7 @@ const DefaultType = { container: '(string|element|boolean)', fallbackPlacement: '(string|array)', boundary: '(string|element)', + customClass: '(string|function)', sanitize: 'boolean', sanitizeFn: '(null|function)', whiteList: 'object', @@ -70,6 +71,7 @@ const Default = { container: false, fallbackPlacement: 'flip', boundary: 'scrollParent', + customClass: '', sanitize: true, sanitizeFn: null, whiteList: DefaultWhitelist, @@ -284,6 +286,7 @@ class Tooltip { this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment)) $(tip).addClass(CLASS_NAME_SHOW) + $(tip).addClass(this._getCustomClass()) // If this is a touch-enabled device we add extra // empty mouseover listeners to the body's immediate children; @@ -731,6 +734,10 @@ class Tooltip { this.config.animation = initConfigAnimation } + _getCustomClass() { + return this.element.getAttribute('data-custom-class') || this.config.customClass + } + // Static static _jQueryInterface(config) { diff --git a/js/tests/unit/popover.js b/js/tests/unit/popover.js index a5981e45f..102f37f8d 100644 --- a/js/tests/unit/popover.js +++ b/js/tests/unit/popover.js @@ -61,6 +61,19 @@ $(function () { .bootstrapPopover('show') }) + QUnit.test('should render popover element with additional classes', function (assert) { + assert.expect(2) + var done = assert.async() + $('<a href="#" title="mdo" data-content="https://twitter.com/mdo" data-custom-class="a b">@mdo</a>') + .appendTo('#qunit-fixture') + .on('shown.bs.popover', function () { + assert.strictEqual($('.popover').hasClass('popover fade bs-popover-right show'), true, 'has default classes') + assert.strictEqual($('.popover').hasClass('a b'), true, 'has custom classes') + done() + }) + .bootstrapPopover('show') + }) + QUnit.test('should store popover instance in popover data object', function (assert) { assert.expect(1) var $popover = $('<a href="#" title="mdo" data-content="https://twitter.com/mdo">@mdo</a>').bootstrapPopover() diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js index 4f55007c7..b6a40b873 100644 --- a/js/tests/unit/tooltip.js +++ b/js/tests/unit/tooltip.js @@ -1283,4 +1283,54 @@ $(function () { assert.strictEqual(popperConfig.placement, 'left') }) + + QUnit.test('additional classes can be applied via data attribute', function (assert) { + assert.expect(2) + + $('<a href="#" rel="tooltip" data-trigger="click" title="Another tooltip" data-custom-class="a b"/>') + .appendTo('#qunit-fixture') + .bootstrapTooltip() + .bootstrapTooltip('show') + + var tooltip = $('.tooltip') + + assert.strictEqual(tooltip.hasClass('a b'), true) + assert.strictEqual(tooltip.hasClass('tooltip fade bs-tooltip-top show'), true) + }) + + QUnit.test('additional classes can be applied via config string', function (assert) { + assert.expect(2) + + $('<a href="#" rel="tooltip" data-trigger="click" title="Another tooltip" />') + .appendTo('#qunit-fixture') + .bootstrapTooltip({ + customClass: 'a b' + }) + .bootstrapTooltip('show') + + var tooltip = $('.tooltip') + + assert.strictEqual(tooltip.hasClass('a b'), true) + assert.strictEqual(tooltip.hasClass('tooltip fade bs-tooltip-top show'), true) + }) + + QUnit.test('additional classes can be applied via function', function (assert) { + assert.expect(2) + + var getClasses = function () { + return 'a b' + } + + $('<a href="#" rel="tooltip" data-trigger="click" title="Another tooltip" />') + .appendTo('#qunit-fixture') + .bootstrapTooltip({ + customClass: getClasses + }) + .bootstrapTooltip('show') + + var tooltip = $('.tooltip') + + assert.strictEqual(tooltip.hasClass('a b'), true) + assert.strictEqual(tooltip.hasClass('tooltip fade bs-tooltip-top show'), true) + }) }) |
