MediaWiki:Common.js: различия между версиями

мНет описания правки
мНет описания правки
Строка 488: Строка 488:
// Удаление класса active у всех контентных элементов
// Удаление класса active у всех контентных элементов
function clearActiveContent() {
function clearActiveContent() {
contentDivs.forEach(function(content) {
for (var i = 0; i < contentDivs.length; i++) {
content.classList.remove('active');
contentDivs[i].classList.remove('active');
});
}
}
}


// Удаление класса active у всех меню
// Удаление класса active у всех меню
function clearActiveMenu() {
function clearActiveMenu() {
menus.forEach(function(menu) {
for (var i = 0; i < menus.length; i++) {
menu.classList.remove('active');
menus[i].classList.remove('active');
});
}
}
}


// Удаление класса active у всех пунктов меню
// Удаление класса active у всех пунктов меню
function clearActiveMenuItems() {
function clearActiveMenuItems() {
menuItems.forEach(function(menuItem) {
for (var i = 0; i < menuItems.length; i++) {
menuItem.classList.remove('active');
menuItems[i].classList.remove('active');
});
}
}
}


Строка 587: Строка 587:
});
});


// Логика для обработки якоря
// Инициализация: открытие первой категории и первого пункта
function openCategoryFromAnchor() {
if (categories.length > 0) {
var hash = window.location.hash.substring(1); // Получение якоря без #
switchCategory(currentCategoryIndex);
if (!hash) return; // Выход, если якорь пустой
updateArrowStates();
 
// Попытка найти пункт меню или категорию с соответствующим ID
var targetMenuItem = document.getElementById(hash);
if (targetMenuItem) {
// Если это пункт меню, нужно сначала открыть его категорию
var menu = targetMenuItem.closest('.navigation__menu-item');
var categoryIndex = Array.from(menus).indexOf(menu);
if (categoryIndex !== -1) {
switchCategory(categoryIndex);
switchContent(targetMenuItem); // Открытие пункта меню
targetMenuItem.scrollIntoView(); // Прокрутка к пункту
}
} else {
// Поиск категории по ID
var targetCategory = document.getElementById(hash);
if (targetCategory) {
var categoryIndex = Array.from(categories).indexOf(targetCategory);
if (categoryIndex !== -1) {
switchCategory(categoryIndex); // Открытие категории
targetCategory.scrollIntoView(); // Прокрутка к категории
}
}
}
}
}
// Инициализация: обработка якоря при загрузке
openCategoryFromAnchor();
// Удаление обработчиков кликов на категории
categories.forEach(function(category) {
category.addEventListener('click', function(event) {
event.preventDefault(); // Предотвращение любого действия при клике
});
});


// Клик по элементам меню
// Клик по элементам меню
Строка 632: Строка 599:
});
});
}
}
// Обработка изменения URL
window.addEventListener('hashchange', openCategoryFromAnchor);


document.querySelector('.navigation__menu-toggle').addEventListener('click', function() {
document.querySelector('.navigation__menu-toggle').addEventListener('click', function() {