From c1fc1dbbee7dcda176f54a76479b9e47d9a5b1de Mon Sep 17 00:00:00 2001 From: GeoSot Date: Mon, 30 Aug 2021 15:29:02 +0300 Subject: [PATCH] Collapse on toggle, should not hide descendant tabpanels (#34835) --- js/src/collapse.js | 2 +- js/tests/unit/collapse.spec.js | 50 ++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/js/src/collapse.js b/js/src/collapse.js index f39c55b92f..17edae9ae2 100644 --- a/js/src/collapse.js +++ b/js/src/collapse.js @@ -55,7 +55,7 @@ const CLASS_NAME_HORIZONTAL = 'collapse-horizontal' const WIDTH = 'width' const HEIGHT = 'height' -const SELECTOR_ACTIVES = '.show, .collapsing' +const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing' const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]' /** diff --git a/js/tests/unit/collapse.spec.js b/js/tests/unit/collapse.spec.js index 6220623fc1..ece88eff58 100644 --- a/js/tests/unit/collapse.spec.js +++ b/js/tests/unit/collapse.spec.js @@ -267,6 +267,56 @@ describe('Collapse', () => { collapse.show() }) + it('should not change tab tabpanels descendants on accordion', done => { + fixtureEl.innerHTML = [ + '
', + '
', + '

', + ' ', + '

', + '
', + '
', + ' ', + ' ', + '
', + '
', + '
', + '
' + ].join('') + + // const btn = fixtureEl.querySelector('[data-bs-target="#collapseOne"]') + const el = fixtureEl.querySelector('#collapseOne') + const activeTabPane = fixtureEl.querySelector('#nav-home') + const collapse = new Collapse(el) + let times = 1 + + el.addEventListener('hidden.bs.collapse', () => { + setTimeout(() => collapse.show(), 10) + }) + + el.addEventListener('shown.bs.collapse', () => { + expect(activeTabPane.classList.contains('show')).toEqual(true) + times++ + if (times === 2) { + done() + } + + collapse.hide() + }) + + collapse.show() + }) + it('should not fire shown when show is prevented', done => { fixtureEl.innerHTML = '
'