1
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-08-30 00:29:52 +02:00

tooltip/popover: add a customClass option (#31834)

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
This commit is contained in:
James Remeika
2020-11-20 04:56:16 -05:00
committed by GitHub
parent ffa88deb85
commit 2d8c02eb10
5 changed files with 88 additions and 0 deletions

View File

@@ -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) {

View File

@@ -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()

View File

@@ -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)
})
})