mirror of
https://github.com/twbs/bootstrap.git
synced 2025-02-26 23:54:23 +01:00
Fix popover doesn't show if its content or title is set dynamically after init
This commit is contained in:
parent
523493d096
commit
6579b9a674
@ -186,14 +186,14 @@ class Tooltip extends BaseComponent {
|
|||||||
throw new Error('Please use show on visible elements')
|
throw new Error('Please use show on visible elements')
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(this._isWithContent() && this._isEnabled)) {
|
if (!((this._isWithContent() || this._newContent != null) && this._isEnabled)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))
|
const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))
|
||||||
const shadowRoot = findShadowRoot(this._element)
|
const shadowRoot = findShadowRoot(this._element)
|
||||||
const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)
|
const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)
|
||||||
|
|
||||||
if (showEvent.defaultPrevented || !isInTheDom) {
|
if (showEvent.defaultPrevented || !isInTheDom) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -56,6 +56,26 @@ describe('Popover', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe('show', () => {
|
describe('show', () => {
|
||||||
|
fit('should show a popover with no content after setContent', () => {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
fixtureEl.innerHTML = '<a href="#">BS twitter</a>'
|
||||||
|
|
||||||
|
const popoverEl = fixtureEl.querySelector('a')
|
||||||
|
const popover = Popover.getOrCreateInstance(popoverEl)
|
||||||
|
|
||||||
|
popoverEl.addEventListener('shown.bs.popover', () => {
|
||||||
|
expect(document.querySelector('.popover')).not.toBeNull()
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
|
||||||
|
popover.setContent({
|
||||||
|
'.popover-body': 'some content'
|
||||||
|
})
|
||||||
|
|
||||||
|
popover.show()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
it('should toggle a popover after show', () => {
|
it('should toggle a popover after show', () => {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
fixtureEl.innerHTML = '<a href="#" title="Popover" data-bs-content="https://twitter.com/getbootstrap">BS twitter</a>'
|
fixtureEl.innerHTML = '<a href="#" title="Popover" data-bs-content="https://twitter.com/getbootstrap">BS twitter</a>'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user