<?= Html::button('Сохранить', ['class' => 'btn btn-success btn-save', 'style' => 'width:100%']); ?>
</div>
</div>
- <div class="row">
- <div class="d-flex justify-content-center">
- <button class="btn btn-light" type="button" data-bs-toggle="collapse"
- data-bs-target="#filter-container"
- aria-expanded="true">
- <span data-bs-collapse-icon="open">▲</span>
- <span data-bs-collapse-icon="closed">▼</span>
- </button>
- </div>
+ </div>
+ <div class="row">
+ <div class="d-flex justify-content-center">
+ <button class="btn btn-light" type="button" data-bs-toggle="collapse"
+ data-bs-target="#filter-container"
+ aria-expanded="true">
+ <span data-bs-collapse-icon="open">▲</span>
+ <span data-bs-collapse-icon="closed">▼</span>
+ </button>
</div>
</div>
</div>
<?= Html::label("Тип магазина:") ?><br>
<?= Html::label("Тер. Уп.:") ?><br>
<?= Html::label("КШФ:") ?><br>
- <div class="buttons d-flex">
- <?= Html::a('Auto', '#', ['class' => 'btn btn-success ml-auto']) ?>
- <?= Html::a('Corrected', '#', ['class' => 'btn btn-success ml-auto']) ?>
+ <div class="buttons d-flex justify-content-end">
+ <?= Html::a('Auto', '#', ['class' => 'btn btn-success ms-1']) ?>
+ <?= Html::a('Corrected', '#', ['class' => 'btn btn-success ms-1']) ?>
</div>
</th>
// Обработчик кликов для категорий
document.querySelectorAll(".category").forEach(category => {
category.addEventListener("click", function () {
- let isVisible = this.parentElement.nextElementSibling?.style.display === "table-row";
let nextRow = this.parentElement.nextElementSibling;
+ let isVisible = nextRow?.style.display === "table-row";
- // Закрываем все вложенные элементы (subcategory + items)
+ // Закрываем все элементы внутри категории
while (nextRow && !nextRow.querySelector(".category")) {
nextRow.style.display = "none";
nextRow = nextRow.nextElementSibling;
}
- // Ð\95Ñ\81ли каÑ\82егоÑ\80иÑ\8f закÑ\80Ñ\8bвалаÑ\81Ñ\8c, Ñ\82о оÑ\82кÑ\80Ñ\8bваем Ñ\82олÑ\8cко подкатегории
+ // Ð\95Ñ\81ли каÑ\82егоÑ\80иÑ\8f бÑ\8bла закÑ\80Ñ\8bÑ\82а â\80\94 оÑ\82кÑ\80Ñ\8bваем подкатегории
if (!isVisible) {
nextRow = this.parentElement.nextElementSibling;
while (nextRow && !nextRow.querySelector(".category")) {
});
});
- let activeSubcategory = null; // Текущая открытая подкатегория
-
// Обработчик кликов для подкатегорий
document.querySelectorAll(".subcategory").forEach(subcategory => {
- subcategory.addEventListener("click", function () {
- let isOpening = activeSubcategory !== this;
+ subcategory.addEventListener("click", function (event) {
+ event.stopPropagation(); // Чтобы клик по подкатегории не закрывал категорию
- // Закрываем текущую открытую подкатегорию и её items
- if (activeSubcategory) {
- let prevRow = activeSubcategory.parentElement.nextElementSibling;
- while (prevRow && !prevRow.querySelector(".subcategory") && !prevRow.querySelector(".category")) {
- prevRow.style.display = "none";
- prevRow = prevRow.nextElementSibling;
- }
- }
+ let nextRow = this.parentElement.nextElementSibling;
+ let isVisible = nextRow?.style.display === "table-row";
- // Если открываем новую, показываем её items
- if (isOpening) {
- let nextRow = this.parentElement.nextElementSibling;
- while (nextRow && !nextRow.querySelector(".subcategory") && !nextRow.querySelector(".category")) {
- nextRow.style.display = "table-row";
- nextRow = nextRow.nextElementSibling;
- }
- activeSubcategory = this;
- } else {
- activeSubcategory = null;
+ // Переключаем видимость только айтемов внутри этой подкатегории
+ while (nextRow && !nextRow.querySelector(".subcategory") && !nextRow.querySelector(".category")) {
+ nextRow.style.display = isVisible ? "none" : "table-row";
+ nextRow = nextRow.nextElementSibling;
}
});
});