diff options
author | Julien Déramond <julien.deramond@orange.com> | 2022-06-08 22:56:18 +0300 |
---|---|---|
committer | Julien Déramond <julien.deramond@orange.com> | 2022-06-08 22:56:33 +0300 |
commit | 7ebb190a2d3c9c0c23bfa15b9d3255d7ec913e9f (patch) | |
tree | 6ff5a331123ee2af7a490228ac576205689cf906 | |
parent | 6fd203060baeb2c49bd4bb3f83a2837762802f95 (diff) |
Add missing things in `hide` method of dropdownv4-dev-dropdown-hide-method
-rw-r--r-- | js/src/dropdown.js | 10 | ||||
-rw-r--r-- | js/tests/unit/dropdown.js | 10 |
2 files changed, 13 insertions, 7 deletions
diff --git a/js/src/dropdown.js b/js/src/dropdown.js index 1403fd9ee2..1dfd6f39af 100644 --- a/js/src/dropdown.js +++ b/js/src/dropdown.js @@ -202,11 +202,18 @@ class Dropdown { return } + // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + if ('ontouchstart' in document.documentElement) { + $(document.body).children().off('mouseover', null, $.noop) + } + if (this._popper) { this._popper.destroy() } $(this._menu).toggleClass(CLASS_NAME_SHOW) + this._element.setAttribute('aria-expanded', false) $(parent) .toggleClass(CLASS_NAME_SHOW) .trigger($.Event(EVENT_HIDDEN, relatedTarget)) @@ -404,13 +411,12 @@ class Dropdown { $(document.body).children().off('mouseover', null, $.noop) } - toggles[i].setAttribute('aria-expanded', 'false') - if (context._popper) { context._popper.destroy() } $(dropdownMenu).removeClass(CLASS_NAME_SHOW) + toggles[i].setAttribute('aria-expanded', 'false') $(parent) .removeClass(CLASS_NAME_SHOW) .trigger($.Event(EVENT_HIDDEN, relatedTarget)) diff --git a/js/tests/unit/dropdown.js b/js/tests/unit/dropdown.js index db6c893fb2..766be0a90b 100644 --- a/js/tests/unit/dropdown.js +++ b/js/tests/unit/dropdown.js @@ -1585,12 +1585,12 @@ $(function () { }) QUnit.test('should hide a dropdown and destroy popper', function (assert) { - assert.expect(1) + assert.expect(2) var done = assert.async() var fixtureHtml = [ '<div class="dropdown">', - ' <button href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>', + ' <button href="#" class="btn dropdown-toggle" data-toggle="dropdown" aria-expanded="true">Dropdown</button>', ' <div class="dropdown-menu">', ' <a class="dropdown-item" href="#">Secondary link</a>', ' </div>', @@ -1600,9 +1600,8 @@ $(function () { $(fixtureHtml).appendTo('#qunit-fixture') var $dropdownEl = $('.dropdown') - var dropdown = $('[data-toggle="dropdown"]') - .bootstrapDropdown() - .data('bs.dropdown') + var $btnDropdown = $('[data-toggle="dropdown"]').bootstrapDropdown() + var dropdown = $btnDropdown.data('bs.dropdown') var spyPopper $dropdownEl.one('shown.bs.dropdown', function () { @@ -1612,6 +1611,7 @@ $(function () { $dropdownEl.one('hidden.bs.dropdown', function () { assert.true(spyPopper.called) + assert.strictEqual($btnDropdown.attr('aria-expanded'), 'false', 'aria-expanded is set to string "false" on hide') done() }) |