Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
document.addEventListener("DOMContentLoaded", function() {
    const menu = document.querySelector("div.catlinks");

    function updateOpacity() {
        const scrollTop = menu.scrollTop;
        const maxScroll = menu.scrollHeight - menu.clientHeight;

        menu.style.opacity = (scrollTop > 10 && scrollTop < maxScroll - 10) ? "1" : "0.5";
    }

    menu.addEventListener("scroll", updateOpacity);
    updateOpacity();
});



$(document).ready(function() {
    console.log("Скрипт дерева категорий загружен.");

    // Функция для сохранения состояния дерева в localStorage
    function saveTreeState() {
        console.log("Сохраняем состояние дерева...");
        var treeState = {};
        $('.CategoryTreeSection').each(function() { // Используем CategoryTreeSection вместо CategoryTreeItem
            var $section = $(this);
            var isVisible = $section.find('.CategoryTreeChildren').is(':visible');
            var title = $section.find('.CategoryTreeToggle').data('ct-title'); // Получаем data-ct-title
            if (title) {
                treeState[title] = isVisible; // Сохраняем состояние видимости
            }
        });
        localStorage.setItem('categoryTreeState', JSON.stringify(treeState));
        console.log("Состояние дерева сохранено:", treeState);
    }

    // Функция для восстановления состояния дерева из localStorage
    function restoreTreeState() {
        console.log("Восстанавливаем состояние дерева...");
        var treeStateString = localStorage.getItem('categoryTreeState');
        if (treeStateString) {
            var treeState = JSON.parse(treeStateString);
            console.log("Состояние дерева из localStorage:", treeState);
            $('.CategoryTreeSection').each(function() { // Используем CategoryTreeSection вместо CategoryTreeItem
                var $section = $(this);
                var title = $section.find('.CategoryTreeToggle').data('ct-title'); // Получаем data-ct-title
                if (title && treeState[title] === true) {
                    console.log("Раскрываем категорию:", title);
                    $section.find('.CategoryTreeToggle').click(); // Раскрываем категорию
                }
            });
        } else {
            console.log("Состояние дерева в localStorage не найдено.");
        }
    }

    // Восстанавливаем состояние дерева при загрузке страницы
    restoreTreeState();

    // Делегируем обработку кликов на body
    $('body').on('click', '.CategoryTreeItem', function(event) {
        var $target = $(event.target);
        var $item = $(this); // Текущий элемент CategoryTreeItem
        var $toggleButton = $item.find('.CategoryTreeToggle').first();
        var isCategory = !$item.find('.CategoryTreePageBullet').length; // Является ли элементом категорией

        // 1. Если клик был на toggle-кнопке, ничего не делаем
        if ($target.hasClass('CategoryTreeToggle')) {
            console.log("Клик на кнопке раскрытия, ничего не делаем.");
            return;
        }

        // 2. Если клик по ссылке категории
        if ($target.is('a') && isCategory) {
            // Предотвращаем переход по ссылке
            event.preventDefault();

            // Переключаем состояние категории (раскрываем или сворачиваем)
            console.log("Клик по ссылке категории, переключаем состояние:", $target.attr('href'));
            $toggleButton.click();

        }
         // 3. Если клик по элементу категории (не ссылке и не странице)
        else if (isCategory) {
            // Переключаем состояние категории (раскрываем или сворачиваем)
            console.log("Клик по элементу категории (не ссылка), переключаем состояние:", $item.text().trim());
            $toggleButton.click();
        }
            // 4. Если клик по ссылке страницы или на элемент страницы
        else  {
              // Получаем ссылку страницы
                var link = $item.find('a').attr('href');
              // Переходим по ссылке страницы
                 if (link) {
                    console.log("Клик по элементу страницы, переходим:", link);
                    // Сохраняем состояние дерева перед переходом
                     saveTreeState();
                     window.location.href = link;
                  }
        }
          // Сохраняем состояние дерева после каждого клика
        saveTreeState();
    });
     // Сохраняем состояние дерева при выгрузке страницы (например, при закрытии вкладки)
    $(window).on('beforeunload', saveTreeState);
});