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

мНет описания правки
мНет описания правки
Строка 469: Строка 469:
// Присвоение ID категориям и пунктам меню
// Присвоение ID категориям и пунктам меню
function assignIds() {
function assignIds() {
categories.forEach(function(category, index) {
for (var i = 0; i < categories.length; i++) {
var category = categories[i];
var categoryText = category.textContent || category.innerText;
var categoryText = category.textContent || category.innerText;
var categoryId = generateIdFromText(categoryText);
var categoryId = generateIdFromText(categoryText);
category.setAttribute('id', categoryId);
category.setAttribute('id', categoryId);


menus[index].querySelectorAll('div').forEach(function(menuItem) {
var menu = menus[i];
var menuItems = menu.querySelectorAll('div');
for (var j = 0; j < menuItems.length; j++) {
var menuItem = menuItems[j];
var menuItemText = menuItem.textContent || menuItem.innerText;
var menuItemText = menuItem.textContent || menuItem.innerText;
menuItem.setAttribute('id', generateIdFromText(menuItemText));
var menuItemId = generateIdFromText(menuItemText);
});
menuItem.setAttribute('id', menuItemId);
});
}
}
}
}


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


Строка 499: Строка 504:
if (selectedCategory) {
if (selectedCategory) {
selectedCategory.classList.add('active');
selectedCategory.classList.add('active');
var selectedMenu = document.querySelector(`.${selectedCategory.classList[0]}-menu`);
var categoryClass = selectedCategory.classList[0];
var selectedMenu = document.querySelector('.' + categoryClass + '-menu');
if (selectedMenu) {
if (selectedMenu) {
selectedMenu.classList.add('active');
selectedMenu.classList.add('active');
Строка 516: Строка 522:


if (menuItem) {
if (menuItem) {
var content = document.querySelector(`.${menuItem.className}-content`);
var contentClass = menuItem.className + '-content';
var content = document.querySelector('.' + contentClass);
if (content) {
if (content) {
content.classList.add('active');
content.classList.add('active');
Строка 526: Строка 533:
// Обновление состояния стрелок (активные/неактивные)
// Обновление состояния стрелок (активные/неактивные)
function updateArrowStates() {
function updateArrowStates() {
const prevArrow = document.getElementById('prev-category');
var prevArrow = document.getElementById('prev-category');
const nextArrow = document.getElementById('next-category');
var 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'; // Включение кликов
}
}
}


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


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


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