mirror of https://github.com/twbs/bootstrap.git
parent
41b8ce278b
commit
bab999701c
|
@ -436,6 +436,10 @@ class Dropdown {
|
||||||
|
|
||||||
toggles[i].setAttribute('aria-expanded', 'false')
|
toggles[i].setAttribute('aria-expanded', 'false')
|
||||||
|
|
||||||
|
if (context._popper) {
|
||||||
|
context._popper.destroy()
|
||||||
|
}
|
||||||
|
|
||||||
$(dropdownMenu).removeClass(ClassName.SHOW)
|
$(dropdownMenu).removeClass(ClassName.SHOW)
|
||||||
$(parent)
|
$(parent)
|
||||||
.removeClass(ClassName.SHOW)
|
.removeClass(ClassName.SHOW)
|
||||||
|
|
|
@ -799,7 +799,7 @@ $(function () {
|
||||||
.parent('.dropdown')
|
.parent('.dropdown')
|
||||||
.on('shown.bs.dropdown', function () {
|
.on('shown.bs.dropdown', function () {
|
||||||
// Forcibly focus first item
|
// Forcibly focus first item
|
||||||
$item.focus()
|
$item[0].focus()
|
||||||
assert.ok($(document.activeElement)[0] === $item[0], 'menu item initial focus set')
|
assert.ok($(document.activeElement)[0] === $item[0], 'menu item initial focus set')
|
||||||
|
|
||||||
// Key escape
|
// Key escape
|
||||||
|
@ -1506,4 +1506,48 @@ $(function () {
|
||||||
|
|
||||||
assert.strictEqual(popperConfig.placement, 'left')
|
assert.strictEqual(popperConfig.placement, 'left')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
QUnit.test('should destroy old popper references on toggle', function (assert) {
|
||||||
|
assert.expect(3)
|
||||||
|
var done = assert.async()
|
||||||
|
|
||||||
|
var fixtureHtml = [
|
||||||
|
'<div class="first dropdown">',
|
||||||
|
' <button href="#" class="firstBtn btn" data-toggle="dropdown" aria-expanded="false">Dropdown</button>',
|
||||||
|
' <div class="dropdown-menu">',
|
||||||
|
' <a class="dropdown-item" href="#">Secondary link</a>',
|
||||||
|
' </div>',
|
||||||
|
'</div>',
|
||||||
|
'<div class="second dropdown">',
|
||||||
|
' <button href="#" class="secondBtn btn" data-toggle="dropdown" aria-expanded="false">Dropdown</button>',
|
||||||
|
' <div class="dropdown-menu">',
|
||||||
|
' <a class="dropdown-item" href="#">Secondary link</a>',
|
||||||
|
' </div>',
|
||||||
|
'</div>'
|
||||||
|
].join('')
|
||||||
|
|
||||||
|
$(fixtureHtml).appendTo('#qunit-fixture')
|
||||||
|
|
||||||
|
var $btnDropdown1 = $('.firstBtn').bootstrapDropdown()
|
||||||
|
var $btnDropdown2 = $('.secondBtn').bootstrapDropdown()
|
||||||
|
var $firstDropdownEl = $('.first')
|
||||||
|
var $secondDropdownEl = $('.second')
|
||||||
|
var dropdown1 = $btnDropdown1.data('bs.dropdown')
|
||||||
|
var dropdown2 = $btnDropdown2.data('bs.dropdown')
|
||||||
|
var spyPopper
|
||||||
|
|
||||||
|
$firstDropdownEl.one('shown.bs.dropdown', function () {
|
||||||
|
assert.strictEqual($firstDropdownEl.hasClass('show'), true)
|
||||||
|
spyPopper = sinon.spy(dropdown1._popper, 'destroy')
|
||||||
|
dropdown2.toggle()
|
||||||
|
})
|
||||||
|
|
||||||
|
$secondDropdownEl.one('shown.bs.dropdown', function () {
|
||||||
|
assert.strictEqual($secondDropdownEl.hasClass('show'), true)
|
||||||
|
assert.ok(spyPopper.called)
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
|
||||||
|
dropdown1.toggle()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue