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

мНет описания правки
мНет описания правки
Строка 474: Строка 474:
category.setAttribute('id', categoryId);
category.setAttribute('id', categoryId);


var menu = menus[index];
menus[index].querySelectorAll('div').forEach(function(menuItem) {
var menuItems = menu.querySelectorAll('div');
menuItems.forEach(function(menuItem) {
var menuItemText = menuItem.textContent || menuItem.innerText;
var menuItemText = menuItem.textContent || menuItem.innerText;
var menuItemId = generateIdFromText(menuItemText);
menuItem.setAttribute('id', generateIdFromText(menuItemText));
menuItem.setAttribute('id', menuItemId);
});
});
});
});
Строка 486: Строка 483:
assignIds(); // Вызов функции для присвоения ID
assignIds(); // Вызов функции для присвоения ID


// Удаление класса active у всех контентных элементов
// Удаление класса active у всех переданных элементов
function clearActiveContent() {
function clearActiveElements(elements) {
for (var i = 0; i < contentDivs.length; i++) {
elements.forEach(function(element) {
contentDivs[i].classList.remove('active');
element.classList.remove('active');
}
});
}
 
// Удаление класса active у всех меню
function clearActiveMenu() {
for (var i = 0; i < menus.length; i++) {
menus[i].classList.remove('active');
}
}
 
// Удаление класса active у всех пунктов меню
function clearActiveMenuItems() {
for (var i = 0; i < menuItems.length; i++) {
menuItems[i].classList.remove('active');
}
}
}


// Переключение категорий
// Переключение категорий
function switchCategory(index) {
function switchCategory(index) {
clearActiveMenu();
clearActiveElements(menus);
clearActiveContent();
clearActiveElements(contentDivs);
 
clearActiveElements(categories);
// Удаление класса active у всех категорий
categories.forEach(function(category) {
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 selectedMenu = document.querySelector(`.${selectedCategory.classList[0]}-menu`);
var selectedMenu = document.querySelector('.' + categoryClass + '-menu');
if (selectedMenu) {
if (selectedMenu) {
selectedMenu.classList.add('active'); // Активирование меню соответствующей категории
selectedMenu.classList.add('active');
var firstParagraph = selectedMenu.querySelector('div');
switchContent(selectedMenu.querySelector('div')); // Открытие первого пункта меню
if (firstParagraph) {
switchContent(firstParagraph); // Открытие первого пункта меню
}
}
}
}
}
Строка 538: Строка 512:
// Переключение контента в меню
// Переключение контента в меню
function switchContent(menuItem) {
function switchContent(menuItem) {
clearActiveMenuItems();
clearActiveElements(menuItems);
clearActiveContent();
clearActiveElements(contentDivs);
var contentClass = menuItem.className + '-content';
 
var content = document.querySelector('.' + contentClass);
if (menuItem) {
if (content) {
var content = document.querySelector(`.${menuItem.className}-content`);
content.classList.add('active');
if (content) {
menuItem.classList.add('active');
content.classList.add('active');
menuItem.classList.add('active');
}
}
}
}
}
Строка 553: Строка 529:
const nextArrow = document.getElementById('next-category');
const nextArrow = document.getElementById('next-category');


// Отключение стрелки назад, если это первая категория
prevArrow.classList.toggle('disabled', currentCategoryIndex === 0);
if (currentCategoryIndex === 0) {
prevArrow.style.pointerEvents = currentCategoryIndex === 0 ? 'none' : 'auto';
prevArrow.classList.add('disabled');
prevArrow.style.pointerEvents = 'none'; // Отключение кликов
} else {
prevArrow.classList.remove('disabled');
prevArrow.style.pointerEvents = 'auto'; // Включение кликов
}


// Отключение стрелки вперёд, если это последняя категория
nextArrow.classList.toggle('disabled', currentCategoryIndex === categories.length - 1);
if (currentCategoryIndex === categories.length - 1) {
nextArrow.style.pointerEvents = currentCategoryIndex === categories.length - 1 ? 'none' : 'auto';
nextArrow.classList.add('disabled');
nextArrow.style.pointerEvents = 'none'; // Отключение кликов
} else {
nextArrow.classList.remove('disabled');
nextArrow.style.pointerEvents = 'auto'; // Включение кликов
}
}
}


Строка 575: Строка 539:
document.getElementById('prev-category').addEventListener('click', function() {
document.getElementById('prev-category').addEventListener('click', function() {
if (currentCategoryIndex > 0) {
if (currentCategoryIndex > 0) {
currentCategoryIndex = currentCategoryIndex - 1;
switchCategory(--currentCategoryIndex);
switchCategory(currentCategoryIndex); // Переключение на новую категорию
}
}
});
});
Строка 582: Строка 545:
document.getElementById('next-category').addEventListener('click', function() {
document.getElementById('next-category').addEventListener('click', function() {
if (currentCategoryIndex < categories.length - 1) {
if (currentCategoryIndex < categories.length - 1) {
currentCategoryIndex = currentCategoryIndex + 1;
switchCategory(++currentCategoryIndex);
switchCategory(currentCategoryIndex); // Переключение на новую категорию
}
}
});
});
Строка 594: Строка 556:


// Клик по элементам меню
// Клик по элементам меню
for (var i = 0; i < menuItems.length; i++) {
menuItems.forEach(function(item) {
menuItems[i].addEventListener('click', function() {
item.addEventListener('click', function() {
switchContent(this); // Переключение контента при клике на пункт меню
switchContent(this);
});
});
}
});


document.querySelector('.navigation__menu-toggle').addEventListener('click', function() {
document.querySelector('.navigation__menu-toggle').addEventListener('click', function() {
var menu = document.querySelector('.navigation__menu-container');
document.querySelector('.navigation__menu-container').classList.toggle('active');
menu.classList.toggle('active'); // Переключение класса для показа/скрытия меню
this.classList.toggle('active');
var toggleButton = document.querySelector('.navigation__menu-toggle');
toggleButton.classList.toggle('active'); // Переключение для перемещения кнопки
});
});
}
}