Задать вопрос
@nasty0808

Как переделать фильтрацию, чтобы выбирать только один фильтр?

это генерируются фильтры
const { groups} = filterItems;
    const templateGroupFiltres = groups.reduce((template, group) => {
      const templateItem = `<label class='filter-checkbox map-filter__checkbox'><input type='radio' name=${group.id} class='filter-checkbox__checkbox'><div class='filter-checkbox__content'><span class='filter-checkbox__text'>${group.name}</div></label>`; 
      return template + templateItem;
    }, '');

    this.filtresContainer.insertAdjacentHTML('beforeend', templateGroupFiltres);
  };


<div class="map-filter__list">
        <label class="filter-checkbox map-filter__checkbox">
    <input type="radio" name=showAll class="filter-checkbox__checkbox" checked>
    <div class="filter-checkbox__content">
      <span class="filter-checkbox__text">Все объекты</span>
    </div>

как переделать условия фильтрации, чтобы каждый фильтр можно было выбрать по одному?
сейчас выбираются либо все обьекты, либо любое количество сгенерированных фильтровБ нужно из генерированных выбрать только один
this.filtresContainer.addEventListener('change', (e) => {
      const filtres = []
        .slice
        .call(this.filtresContainer.querySelectorAll('.filter-checkbox__checkbox'));

      if (e.target.name === 'showAll' && e.target.checked) {
        filtres.forEach((filter) => {
          if(filter.name !== 'showAll'){
            filter.checked = false
          } else{
            null
          }
        })
        objManager.setFilter(() => true);
      } 
      else {
        filtres.forEach((filter) => {
          if (filter.name === 'showAll' && e.target.checked){
            filter.checked = false
          } else{
            null
          }
        })
        objManager.setFilter((obj) => {
          if (obj.groupId === 'project') {
            return true;
          }
          else{
            return filtres
            .find((filter) => filter.name === obj.groupId)
            .checked;   
          }

               
        });
      };
      })
  • Вопрос задан
  • 34 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы