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

мНет описания правки
Нет описания правки
Строка 569: Строка 569:
var menuItems = document.querySelectorAll('.menu div');
var menuItems = document.querySelectorAll('.menu div');
var currentCategoryIndex = 0; // Индекс текущей активной категории
var currentCategoryIndex = 0; // Индекс текущей активной категории
// Устанавливаем ID для категорий
categories.forEach(function(category, index) {
var categoryText = category.textContent.trim().toLowerCase().replace(/\s+/g, '-'); // Преобразуем текст в id
category.id = categoryText || 'category-' + index; // Если текста нет, используем индекс
});
// Устанавливаем ID для пунктов меню
menuItems.forEach(function(menuItem, index) {
var menuItemText = menuItem.textContent.trim().toLowerCase().replace(/\s+/g, '-'); // Преобразуем текст в id
menuItem.id = menuItemText || 'menu-item-' + index; // Если текста нет, используем индекс
});


function clearActiveContent() {
function clearActiveContent() {
Строка 592: Строка 604:
clearActiveContent();
clearActiveContent();


// Удаляем класс active у всех категорий
categories.forEach(function(category) {
categories.forEach(function(category) {
category.classList.remove('active');
category.classList.remove('active');
});
});


// Устанавливаем новую активную категорию
var selectedCategory = categories[index];
var selectedCategory = categories[index];
if (selectedCategory) {
if (selectedCategory) {
selectedCategory.classList.add('active'); // Добавляем класс active
selectedCategory.classList.add('active');
var categoryClass = selectedCategory.classList[0]; // Получаем класс категории
var categoryClass = selectedCategory.classList[0];
var selectedMenu = document.querySelector('.' + categoryClass + '-menu');
var selectedMenu = document.querySelector('.' + categoryClass + '-menu');
if (selectedMenu) {
if (selectedMenu) {
selectedMenu.classList.add('active'); // Активируем меню соответствующей категории
selectedMenu.classList.add('active');
var firstParagraph = selectedMenu.querySelector('div');
var firstParagraph = selectedMenu.querySelector('div');
if (firstParagraph) {
if (firstParagraph) {
switchContent(firstParagraph); // Открываем первый пункт меню
switchContent(firstParagraph);
}
}
}
}
}
}
currentCategoryIndex = index;
updateArrowStates(); // Обновляем состояние стрелок
}
}


Строка 621: Строка 634:
content.classList.add('active');
content.classList.add('active');
menuItem.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');
prevArrow.style.pointerEvents = 'none'; // Отключаем клики
} else {
prevArrow.classList.remove('disabled');
prevArrow.style.pointerEvents = 'auto'; // Включаем клики
}
if (currentCategoryIndex === categories.length - 1) {
nextArrow.classList.add('disabled');
nextArrow.style.pointerEvents = 'none';
} else {
nextArrow.classList.remove('disabled');
nextArrow.style.pointerEvents = 'auto';
}
}
// Функция для обработки якорей
function handleAnchorLink() {
var hash = window.location.hash.substring(1); // Получаем якорь без '#'
if (hash) {
var categoryIndex = Array.from(categories).findIndex(category => category.id === hash);
if (categoryIndex !== -1) {
switchCategory(categoryIndex);
return;
}
var menuItem = document.querySelector('.menu div[id="' + hash + '"]');
if (menuItem) {
var categoryClass = menuItem.closest('.menu').classList[0].replace('-menu', '');
var categoryIndex = Array.from(categories).findIndex(category => category.classList.contains(categoryClass));
if (categoryIndex !== -1) {
switchCategory(categoryIndex);
switchContent(menuItem);
}
}
}
}
}
}
Строка 626: Строка 684:
// Стрелки для переключения категорий
// Стрелки для переключения категорий
document.getElementById('prev-category').addEventListener('click', function() {
document.getElementById('prev-category').addEventListener('click', function() {
currentCategoryIndex = (currentCategoryIndex - 1 + categories.length) % categories.length; // Переход на предыдущую категорию
if (currentCategoryIndex > 0) {
switchCategory(currentCategoryIndex); // Переключаем на новую категорию
currentCategoryIndex = currentCategoryIndex - 1;
switchCategory(currentCategoryIndex); // Переключаем на новую категорию
}
});
});


document.getElementById('next-category').addEventListener('click', function() {
document.getElementById('next-category').addEventListener('click', function() {
currentCategoryIndex = (currentCategoryIndex + 1) % categories.length; // Переход на следующую категорию
if (currentCategoryIndex < categories.length - 1) {
switchCategory(currentCategoryIndex); // Переключаем на новую категорию
currentCategoryIndex = currentCategoryIndex + 1;
switchCategory(currentCategoryIndex); // Переключаем на новую категорию
}
});
});


Строка 638: Строка 700:
if (categories.length > 0) {
if (categories.length > 0) {
switchCategory(currentCategoryIndex); // Отображаем первую категорию
switchCategory(currentCategoryIndex); // Отображаем первую категорию
updateArrowStates(); // Обновляем состояние стрелок
}
}


// Удаляем обработчики кликов на категории
categories.forEach(function(category) {
categories.forEach(function(category) {
category.addEventListener('click', function(event) {
category.addEventListener('click', function(event) {
Строка 647: Строка 709:
});
});


// Клик по элементам меню
for (var i = 0; i < menuItems.length; i++) {
for (var i = 0; i < menuItems.length; i++) {
menuItems[i].addEventListener('click', function() {
menuItems[i].addEventListener('click', function() {
Строка 656: Строка 717:
document.querySelector('.menu-toggle').addEventListener('click', function() {
document.querySelector('.menu-toggle').addEventListener('click', function() {
var menu = document.querySelector('.menu-container');
var menu = document.querySelector('.menu-container');
menu.classList.toggle('active'); // Переключаем класс для показа/скрытия меню
menu.classList.toggle('active');
var toggleButton = document.querySelector('.menu-toggle');
var toggleButton = document.querySelector('.menu-toggle');
toggleButton.classList.toggle('active'); // Добавляем переключение для перемещения кнопки
toggleButton.classList.toggle('active');
});
});
handleAnchorLink();
window.addEventListener('hashchange', handleAnchorLink);
}
}
const currentPageTitle = document.title;
const currentPageTitle = document.title;