diff options
-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', () => { |