Я не на 100% понял ваш вопрос, но я написал фрагмент на jsfiddle, чтобы я работал соответственно, как я понял.
Лучший способ - использовать условные операторы для проверки, свернуты ли эти компоненты или нет. Исходя из этого, мы можем использовать методы свертывания, которые упомянуты в документах по начальной загрузке
<div class="container mt-5">
<button id="main-button" type="button" class="btn btn-primary mb5">Expand/Collapse</button>
<div class="card">
<div class="card-body">
<button type="button" class="btn btn-info d-block m-2" data-toggle="collapse" data-target="#demo1">Demo 01</button>
<div id="demo1" class="collapse">
Lorem ipsum dolor sit amet
</div>
<button type="button" class="btn btn-info d-block m-2" data-toggle="collapse" data-target="#demo2">Demo 02</button>
<div id="demo2" class="collapse">
Lorem ipsum dolor sit amet
</div>
</div>
</div>
Это часть jQuery
$('.collapse').collapse();
$('#main-button').on('click',function(){
let demo1 = $('#demo1');
let demo2 = $('#demo2');
if(demo1.hasClass('show') && demo2.hasClass('show')){
demo1.collapse('hide');
demo2.collapse('hide');
}
if((demo1.hasClass('show') === false) && (demo2.hasClass('show') === false) ){
demo1.collapse('show');
demo2.collapse('show');
}
if((demo1.hasClass('show') === false) && (demo2.hasClass('show') === true) ){
demo2.collapse('hide');
}
if((demo1.hasClass('show') === true) && (demo2.hasClass('show') === false) ){
demo1.collapse('hide');
}
});
Я написал это в js fiddle, нажмите ЗДЕСЬ , чтобы увидеть его.