diff options
author | GeoSot <geo.sotis@gmail.com> | 2022-09-20 17:20:47 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-20 17:20:47 +0300 |
commit | 1510c25e9be4d8f7f2ba23622bfdfd9afebb6598 (patch) | |
tree | 4931d3d6150218179943387823fc8aad370030f8 | |
parent | 2be9cd59bae8c864f6d2cfb03c535e96f00160ca (diff) |
Drop tabs auto-focus (#37146)
* fix: drop tabs auto-focus
-rw-r--r-- | js/src/tab.js | 1 | ||||
-rw-r--r-- | js/tests/unit/tab.spec.js | 31 |
2 files changed, 29 insertions, 3 deletions
diff --git a/js/src/tab.js b/js/src/tab.js index 91187ae9f0..31dcec4a4b 100644 --- a/js/src/tab.js +++ b/js/src/tab.js @@ -115,7 +115,6 @@ class Tab extends BaseComponent { return } - element.focus() element.removeAttribute('tabindex') element.setAttribute('aria-selected', true) this._toggleDropDown(element, true) diff --git a/js/tests/unit/tab.spec.js b/js/tests/unit/tab.spec.js index f1c1d695c3..15d5811736 100644 --- a/js/tests/unit/tab.spec.js +++ b/js/tests/unit/tab.spec.js @@ -36,9 +36,7 @@ describe('Tab', () => { expect(tabBySelector._element).toEqual(tabEl) expect(tabByElement._element).toEqual(tabEl) }) - }) - describe('constructor', () => { it('Do not Throw exception if not parent', () => { fixtureEl.innerHTML = [ fixtureEl.innerHTML = '<div class=""><div class="nav-link"></div></div>' @@ -383,6 +381,35 @@ describe('Tab', () => { btnCloseEl.click() }) }) + + it('should not focus on opened tab', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '<ul class="nav" role="tablist">', + ' <li><button type="button" id="home" data-bs-target="#home" role="tab">Home</button></li>', + ' <li><button type="button" id="triggerProfile" data-bs-target="#profile" role="tab">Profile</button></li>', + '</ul>', + '<ul>', + ' <li id="home" role="tabpanel"></li>', + ' <li id="profile" role="tabpanel"></li>', + '</ul>' + ].join('') + + const firstTab = fixtureEl.querySelector('#home') + firstTab.focus() + + const profileTriggerEl = fixtureEl.querySelector('#triggerProfile') + const tab = new Tab(profileTriggerEl) + + profileTriggerEl.addEventListener('shown.bs.tab', () => { + expect(document.activeElement).toBe(firstTab) + expect(document.activeElement).not.toBe(profileTriggerEl) + resolve() + }) + + tab.show() + }) + }) }) describe('dispose', () => { |