MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 474: | Строка 474: | ||
category.setAttribute('id', categoryId); | category.setAttribute('id', categoryId); | ||
menus[index].querySelectorAll('div').forEach(function(menuItem) { | |||
var menuItemText = menuItem.textContent || menuItem.innerText; | var menuItemText = menuItem.textContent || menuItem.innerText; | ||
menuItem.setAttribute('id', generateIdFromText(menuItemText)); | |||
menuItem.setAttribute('id', | |||
}); | }); | ||
}); | }); | ||
| Строка 486: | Строка 483: | ||
assignIds(); // Вызов функции для присвоения ID | assignIds(); // Вызов функции для присвоения ID | ||
// Удаление класса active у всех | // Удаление класса active у всех переданных элементов | ||
function | function clearActiveElements(elements) { | ||
elements.forEach(function(element) { | |||
element.classList.remove('active'); | |||
}); | |||
} | |||
} | } | ||
// Переключение категорий | // Переключение категорий | ||
function switchCategory(index) { | function switchCategory(index) { | ||
clearActiveElements(menus); | |||
clearActiveElements(contentDivs); | |||
clearActiveElements(categories); | |||
categories | |||
var selectedCategory = categories[index]; | var selectedCategory = categories[index]; | ||
if (selectedCategory) { | if (selectedCategory) { | ||
selectedCategory.classList.add('active'); | selectedCategory.classList.add('active'); | ||
var | var selectedMenu = document.querySelector(`.${selectedCategory.classList[0]}-menu`); | ||
if (selectedMenu) { | if (selectedMenu) { | ||
selectedMenu.classList.add('active'); | selectedMenu.classList.add('active'); | ||
switchContent(selectedMenu.querySelector('div')); // Открытие первого пункта меню | |||
} | } | ||
} | } | ||
| Строка 538: | Строка 512: | ||
// Переключение контента в меню | // Переключение контента в меню | ||
function switchContent(menuItem) { | function switchContent(menuItem) { | ||
clearActiveElements(menuItems); | |||
clearActiveElements(contentDivs); | |||
if (menuItem) { | |||
var content = document.querySelector(`.${menuItem.className}-content`); | |||
if (content) { | |||
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); | |||
prevArrow.style.pointerEvents = currentCategoryIndex === 0 ? 'none' : 'auto'; | |||
nextArrow.classList.toggle('disabled', currentCategoryIndex === categories.length - 1); | |||
nextArrow.style.pointerEvents = currentCategoryIndex === categories.length - 1 ? 'none' : 'auto'; | |||
} | } | ||
| Строка 575: | Строка 539: | ||
document.getElementById('prev-category').addEventListener('click', function() { | document.getElementById('prev-category').addEventListener('click', function() { | ||
if (currentCategoryIndex > 0) { | if (currentCategoryIndex > 0) { | ||
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) { | ||
switchCategory(++currentCategoryIndex); | |||
switchCategory(currentCategoryIndex); | |||
} | } | ||
}); | }); | ||
| Строка 594: | Строка 556: | ||
// Клик по элементам меню | // Клик по элементам меню | ||
menuItems.forEach(function(item) { | |||
item.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'); | |||
this.classList.toggle('active'); | |||
}); | }); | ||
} | } | ||