diff options
author | Jeremy Jackson <git@jeremyvii.com> | 2019-10-17 18:01:44 +0300 |
---|---|---|
committer | XhmikosR <xhmikosr@gmail.com> | 2019-10-17 18:01:44 +0300 |
commit | c1ee395f80c05de8317588b07f34a65c5b95c42c (patch) | |
tree | 56d88e6e3e4256ceeea5766af744679e763eb904 /js/tests | |
parent | 104385c508a4c77761b04a9842e978bab6f359f6 (diff) |
Skip hidden dropdowns while focusing (#29523)
Diffstat (limited to 'js/tests')
-rw-r--r-- | js/tests/unit/dropdown.spec.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/js/tests/unit/dropdown.spec.js b/js/tests/unit/dropdown.spec.js index 0046cf6809..7491e38c0d 100644 --- a/js/tests/unit/dropdown.spec.js +++ b/js/tests/unit/dropdown.spec.js @@ -1292,6 +1292,43 @@ describe('Dropdown', () => { triggerDropdown.click() }) + it('should skip hidden element when using keyboard navigation', done => { + fixtureEl.innerHTML = [ + '<style>', + ' .d-none {', + ' display: none;', + ' }', + '</style>', + '<div class="dropdown">', + ' <button href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>', + ' <div class="dropdown-menu">', + ' <button class="dropdown-item d-none" type="button">Hidden button by class</button>', + ' <a class="dropdown-item" href="#sub1" style="display: none">Hidden link</a>', + ' <a class="dropdown-item" href="#sub1" style="visibility: hidden">Hidden link</a>', + ' <a id="item1" class="dropdown-item" href="#">Another link</a>', + ' </div>', + '</div>' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-toggle="dropdown"]') + const dropdown = fixtureEl.querySelector('.dropdown') + + dropdown.addEventListener('shown.bs.dropdown', () => { + const keyDown = createEvent('keydown') + keyDown.which = 40 + + triggerDropdown.dispatchEvent(keyDown) + + expect(document.activeElement.classList.contains('d-none')).toEqual(false, '.d-none not focused') + expect(document.activeElement.style.display === 'none').toEqual(false, '"display: none" not focused') + expect(document.activeElement.style.visibility === 'hidden').toEqual(false, '"visibility: hidden" not focused') + + done() + }) + + triggerDropdown.click() + }) + it('should focus next/previous element when using keyboard navigation', done => { fixtureEl.innerHTML = [ '<div class="dropdown">', |