MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 564: | Строка 564: | ||
// Функция для логики меню, создаваемого модулем CategoryMenu | // Функция для логики меню, создаваемого модулем CategoryMenu | ||
function initCategorySwitcher() { | function initCategorySwitcher() { | ||
var categories = document.querySelectorAll('.categories div'); | |||
var menus = document.querySelectorAll('.menu'); | |||
var contentDivs = document.querySelectorAll('.content div'); | |||
var menuItems = document.querySelectorAll('.menu div'); | |||
var currentCategoryIndex = 0; // Индекс текущей активной категории | |||
function clearActiveContent() { | |||
for (var i = 0; i < contentDivs.length; i++) { | |||
contentDivs[i].classList.remove('active'); | |||
} | |||
} | |||
function clearActiveMenu() { | |||
for (var i = 0; i < menus.length; i++) { | |||
menus[i].classList.remove('active'); | |||
} | |||
} | |||
function clearActiveMenuItems() { | |||
for (var i = 0; i < menuItems.length; i++) { | |||
menuItems[i].classList.remove('active'); | |||
} | |||
} | |||
function switchCategory(index) { | |||
clearActiveMenu(); | |||
clearActiveContent(); | |||
// Удаляем класс active у всех категорий | |||
categories.forEach(function(category) { | |||
category.classList.remove('active'); | |||
}); | |||
// Устанавливаем новую активную категорию | |||
var selectedCategory = categories[index]; | |||
if (selectedCategory) { | |||
selectedCategory.classList.add('active'); // Добавляем класс active | |||
var categoryClass = selectedCategory.classList[0]; // Получаем класс категории | |||
var selectedMenu = document.querySelector('.' + categoryClass + '-menu'); | |||
if (selectedMenu) { | |||
selectedMenu.classList.add('active'); // Активируем меню соответствующей категории | |||
var firstParagraph = selectedMenu.querySelector('div'); | |||
if (firstParagraph) { | |||
switchContent(firstParagraph); // Открываем первый пункт меню | |||
} | |||
} | |||
} | |||
currentCategoryIndex = index; | |||
updateArrowStates(); // Обновляем состояние стрелок | |||
} | |||
function switchContent(menuItem) { | |||
clearActiveMenuItems(); | |||
clearActiveContent(); | |||
var contentClass = menuItem.className + '-content'; | |||
var content = document.querySelector('.' + contentClass); | |||
if (content) { | |||
content.classList.add('active'); | |||
menuItem.classList.add('active'); | |||
} | |||
} | |||
// Обновляем состояние стрелок (активные/неактивные) | |||
function updateArrowStates() { | |||
const prevArrow = document.getElementById('prev-category'); | |||
const nextArrow = document.getElementById('next-category'); | |||
// Если это первая категория, отключаем стрелку назад | |||
if (currentCategoryIndex === 0) { | |||
prevArrow.classList.add('disabled'); | |||
} else { | |||
prevArrow.classList.remove('disabled'); | |||
} | |||
// Если это последняя категория, отключаем стрелку вперёд | |||
if (currentCategoryIndex === categories.length - 1) { | |||
nextArrow.classList.add('disabled'); | |||
} else { | |||
nextArrow.classList.remove('disabled'); | |||
} | |||
} | |||
// Стрелки для переключения категорий | |||
document.getElementById('prev-category').addEventListener('click', function() { | |||
if (currentCategoryIndex > 0) { | |||
currentCategoryIndex = currentCategoryIndex - 1; | |||
switchCategory(currentCategoryIndex); // Переключаем на новую категорию | |||
} | |||
}); | |||
document.getElementById('next-category').addEventListener('click', function() { | |||
if (currentCategoryIndex < categories.length - 1) { | |||
currentCategoryIndex = currentCategoryIndex + 1; | |||
switchCategory(currentCategoryIndex); // Переключаем на новую категорию | |||
} | |||
}); | |||
// Инициализация: открываем первую категорию и первый пункт | |||
if (categories.length > 0) { | |||
switchCategory(currentCategoryIndex); // Отображаем первую категорию | |||
updateArrowStates(); // Обновляем состояние стрелок | |||
} | |||
// Удаляем обработчики кликов на категории | |||
categories.forEach(function(category) { | |||
category.addEventListener('click', function(event) { | |||
event.preventDefault(); // Предотвращаем любое действие при клике | |||
}); | |||
}); | |||
// Клик по элементам меню | |||
for (var i = 0; i < menuItems.length; i++) { | |||
menuItems[i].addEventListener('click', function() { | |||
switchContent(this); | |||
}); | |||
} | |||
document.querySelector('.menu-toggle').addEventListener('click', function() { | |||
var menu = document.querySelector('.menu-container'); | |||
menu.classList.toggle('active'); // Переключаем класс для показа/скрытия меню | |||
var toggleButton = document.querySelector('.menu-toggle'); | |||
toggleButton.classList.toggle('active'); // Добавляем переключение для перемещения кнопки | |||
}); | |||
} | } | ||
const currentPageTitle = document.title; | const currentPageTitle = document.title; | ||