Во-первых, nextStep.nextElementSibling - это никакой не блок аккордеона. Во-вторых, условие кривое - открываете блок, если он не следующий (
!==
) и закрыт, т.е., открываете все, кроме закрываемого.
document.addEventListener('click', e => {
const t = e.target;
const heading = t.closest('.panel-heading');
const nextStep = t.closest('.construct-btn');
const collapse =
heading ? heading.nextElementSibling :
nextStep ? t.closest('.panel').nextElementSibling.querySelector('.panel-collapse') :
null;
if (collapse) {
e.preventDefault();
t.closest('.panel-group').querySelectorAll('.panel-collapse').forEach(n => {
n.classList[n === collapse ? 'toggle' : 'remove']('in');
});
}
});