Проблема отображения смешанного фильтра Multifilter с data-filter = "all" - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть простая настройка Mixitup с 3 группами фильтров данных: размер, местоположение и доступность.

Группа местоположений имеет 3 варианта: ВСЕ МЕСТА, СОХО И НОМАД.

Фильтр данных кнопки «Все местоположения» установлен на «все».

Если я нажму на «soho» или «nomad», а затем вернусь к «all location», имя класса «.mix» будет выведено на консоль, как и должно быть, но когда я объединю «All location» с размером data-filter-group, выходной фильтр: .classNameFromOtherFilterGroup все ( все слово добавляется в конец имени класса из группы фильтров размера), так что это не действительное имя класса, ничего не отображается.

Та же проблема возникает, когда я нажимаю «Все местоположения» и любое другое свойство из доступность группы фильтров, но на этот раз слово «все» добавляется в начало all .classNameFromOtherFilterGroup

В обоих случаях ничего не отображается, поскольку комбинация не является допустимым селектором. Мой код ниже:


fieldset {
  border: none;
  display: inline-block;
  padding: 0;
  margin: 0;
}

.private-office-container_controls-container {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 1rem;
  background: #f2f2f2;
  cursor: pointer;
  font-size: .9rem;
  font-weight: 800;
  color: #252525;
  transition: background 150ms;
  border: 1px solid #979797;
}

.private-office-container {
  display: flex;
  flex-direction: column;
}

.private-office-container_item {
  display: flex;
  flex-direction: column;
  padding: 1em;
  text-align: left;
  background-color: white;
  color: #252525;
  border-bottom: 1px solid #979797;
  border-left: 1px solid #979797;
  border-right: 1px solid #979797;
}

.private-office-container_header {
  margin: 0;
  font-size: 1.3em;
}

.private-office-container_info {
  margin-bottom: 0;
  line-height: 1.4;
}

.private-office-container_form {
  display: flex;
  justify-content: space-between;
  margin-top: 1em;
}

.private-office-container_controls-item {
  display: flex;
  background-color: white;
  border: 1px solid #d2d2d2;
}

.private-office-container_controls-item>button,
.private-office-container_button {
  border: none;
  padding: 1em;
  background-color: transparent;
  -webkit-transition: all 0.2s ease-in-out 0s;
  transition: all 0.2s ease-in-out 0s;
}

.private-office-container_controls-item>button:hover {
  background-color: green;
  color: white;
}

.private-office-container_controls-item__size>button {
  padding: 1em;
  background-color: transparent;
  color: #252525;
}

.private-office-container_controls-text {
  position: relative;
  display: inline-block;
  width: 80px;
  margin: 0;
  padding: 1em;
  text-align: center;
  background-color: #D2D2D2;
}

.private-office-container_controls-text__size {
  position: relative;
  display: inline-block;
  margin: 0;
  padding: 1em;
  text-align: center;
  background-color: #D2D2D2;
}

.private-office-container_controls-text__header {
  text-align: center;
  font-size: 1.5em;
  margin: 0.5em;
  font-weight: 300;
}

.mixitup-control-active {
  background-color: green !important;
  color: white !important;
}
<head>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/mixitup/3.3.1/mixitup.min.js"></script>
<script src="https://sancar.work/mixitup-multifilter.min.js"></script>

  <script>
    var mixer = mixitup('.private-office-container', {
      multifilter: {
        enable: true
      },
      animation: {
        animateResizeTargets: true
      },
      callbacks: {
        onMixStart: function(state, futureState) {
          console.log(futureState.activeFilter.selector);
        }
      }
    });
  </script>

</head>

<body>
  <div class="private-office-container_controls-container">
    <p class="private-office-container_controls-text__header" style="display:none">Size of your team</p>
    <div class="private-office-container_controls-item private-office-container_controls-item__size" data-filter-group>
      <p class="private-office-container_controls-text__size">Size of your team</p>
      <button type="button" data-toggle=".filter-size-1">1 person</button>
      <button type="button" data-toggle=".filter-size-2-3">2 - 3 person</button>
      <button type="button" data-toggle=".filter-size-4-6">4 - 6 person</button>
      <button type="button" data-toggle=".filter-size-6-8">6 - 8 person</button>
      <button type="button" data-toggle=".filter-size-8-12">8 - 12 person</button>
      <button type="button" data-toggle=".filter-size-12">12+ person</button>
    </div>

    <form class="private-office-container_form">
      <div class="private-office-container_controls-item private-office-container_controls-item__location" data-filter-group>
        <p class="private-office-container_controls-text">Location</p>
        <button type="button" data-filter="all">All Locations</button>
        <button type="button" data-filter=".filter-location_soho-east">Soho East</button>
        <button type="button" data-filter=".filter-location_nomad">Nomad</button>
      </div>


      <div class="private-office-container_controls-item private-office-container_controls-item__date" data-filter-group>
        <p class="private-office-container_controls-text">Availability</p>
        <button type="button" data-toggle=".filter-availability_now">Now</button>
        <button type="button" data-toggle=".filter-availability_1mo">Within 1 month</button>
        <button type="button" data-toggle=".filter-availability_3mo">Within 3 months</button>
      </div>
      <button class="private-office-container_button" type="reset">See All</button>
    </form>
  </div>

  <div class="private-office-container">
    <div class="mix private-office-container_item filter-size-1 filter-location_soho-east filter-availability_now" data-order="1">
      <p class="private-office-container_header">1 Person Office</p>
      <p class="private-office-container_info">Available Now ● Soho East
        <br/> $750/mo
      </p>
    </div>
    <div class="mix private-office-container_item filter-size-2-3 filter-location_nomad filter-availability_3mo" data-order="2">
      <p class="private-office-container_header">2-3 Person Office</p>
      <p class="private-office-container_info">Available Now ● Nomad
        <br/> $1,250/mo
      </p>
    </div>
    <div class="mix private-office-container_item filter-size-4-6 filter-location_soho-east filter-availability_1mo" data-order="3">
      <p class="private-office-container_header">4-6 Person Office</p>
      <p class="private-office-container_info">In 1 month ● Soho East
        <br/> $2,750/mo
      </p>
    </div>
    <div class="mix private-office-container_item filter-size-6-8 filter-location_nomad filter-availability_3mo" data-order="4">
      <p class="private-office-container_header">6-8 Person Office</p>
      <p class="private-office-container_info">In 3 months ● Nomad
        <br/> $3,750/mo
      </p>
    </div>
    <div class="mix private-office-container_item filter-size-12 filter-location_soho-east filter-availability_now" data-order="5">
      <p class="private-office-container_header">16 Person Office</p>
      <p class="private-office-container_info">Available Now ● Soho East
        <br/> $9.500/mo
      </p>
    </div>
  </div>


</body>

Я создаю это в Squarespace - может ли быть конфликт с JS-кодом Squarespace?

Заранее спасибо!

...