mirror of
https://github.com/twbs/bootstrap.git
synced 2024-11-29 11:24:18 +01:00
Popover - call content
once if it's a function. (#24690)
This commit is contained in:
parent
b42a38b886
commit
26dc17bcd2
@ -124,7 +124,11 @@ const Popover = (($) => {
|
||||
|
||||
// we use append for html objects to maintain js events
|
||||
this.setElementContent($tip.find(Selector.TITLE), this.getTitle())
|
||||
this.setElementContent($tip.find(Selector.CONTENT), this._getContent())
|
||||
let content = this._getContent()
|
||||
if (typeof content === 'function') {
|
||||
content = content.call(this.element)
|
||||
}
|
||||
this.setElementContent($tip.find(Selector.CONTENT), content)
|
||||
|
||||
$tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)
|
||||
}
|
||||
@ -133,9 +137,7 @@ const Popover = (($) => {
|
||||
|
||||
_getContent() {
|
||||
return this.element.getAttribute('data-content')
|
||||
|| (typeof this.config.content === 'function' ?
|
||||
this.config.content.call(this.element) :
|
||||
this.config.content)
|
||||
|| this.config.content
|
||||
}
|
||||
|
||||
_cleanTipClass() {
|
||||
|
@ -410,4 +410,25 @@ $(function () {
|
||||
$popover.trigger($.Event('click'))
|
||||
}, 200)
|
||||
})
|
||||
|
||||
QUnit.test('popover should call content function only once', function (assert) {
|
||||
assert.expect(1)
|
||||
var done = assert.async()
|
||||
var nbCall = 0
|
||||
$('<div id="popover" style="display:none">content</div>').appendTo('#qunit-fixture')
|
||||
var $popover = $('<a href="#">@Johann-S</a>')
|
||||
.appendTo('#qunit-fixture')
|
||||
.bootstrapPopover({
|
||||
content: function () {
|
||||
nbCall++
|
||||
return $('#popover').clone().show().get(0)
|
||||
}
|
||||
})
|
||||
.on('shown.bs.popover', function () {
|
||||
assert.strictEqual(nbCall, 1)
|
||||
done()
|
||||
})
|
||||
|
||||
$popover.trigger($.Event('click'))
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user