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
|
// we use append for html objects to maintain js events
|
||||||
this.setElementContent($tip.find(Selector.TITLE), this.getTitle())
|
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}`)
|
$tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)
|
||||||
}
|
}
|
||||||
@ -133,9 +137,7 @@ const Popover = (($) => {
|
|||||||
|
|
||||||
_getContent() {
|
_getContent() {
|
||||||
return this.element.getAttribute('data-content')
|
return this.element.getAttribute('data-content')
|
||||||
|| (typeof this.config.content === 'function' ?
|
|| this.config.content
|
||||||
this.config.content.call(this.element) :
|
|
||||||
this.config.content)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_cleanTipClass() {
|
_cleanTipClass() {
|
||||||
|
@ -410,4 +410,25 @@ $(function () {
|
|||||||
$popover.trigger($.Event('click'))
|
$popover.trigger($.Event('click'))
|
||||||
}, 200)
|
}, 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