MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 500: | Строка 500: | ||
} | } | ||
// Удаление класса active у всех | // Удаление класса active у всех категорий | ||
function | function clearActiveCategories() { | ||
categories.forEach(function(category) { | |||
category.classList.remove('active'); | |||
} | }); | ||
} | } | ||
| Строка 511: | Строка 511: | ||
clearActiveMenu(); | clearActiveMenu(); | ||
clearActiveContent(); | clearActiveContent(); | ||
clearActiveCategories(); | |||
// Установка новой активной категории | // Установка новой активной категории | ||
| Строка 553: | Строка 549: | ||
const nextArrow = document.getElementById('next-category'); | const nextArrow = document.getElementById('next-category'); | ||
if (currentCategoryIndex === 0) { | if (currentCategoryIndex === 0) { | ||
prevArrow.classList.add('disabled'); | prevArrow.classList.add('disabled'); | ||
prevArrow.style.pointerEvents = 'none'; | prevArrow.style.pointerEvents = 'none'; | ||
} else { | } else { | ||
prevArrow.classList.remove('disabled'); | prevArrow.classList.remove('disabled'); | ||
prevArrow.style.pointerEvents = 'auto'; | prevArrow.style.pointerEvents = 'auto'; | ||
} | } | ||
if (currentCategoryIndex === categories.length - 1) { | if (currentCategoryIndex === categories.length - 1) { | ||
nextArrow.classList.add('disabled'); | nextArrow.classList.add('disabled'); | ||
nextArrow.style.pointerEvents = 'none'; | nextArrow.style.pointerEvents = 'none'; | ||
} else { | } else { | ||
nextArrow.classList.remove('disabled'); | nextArrow.classList.remove('disabled'); | ||
nextArrow.style.pointerEvents = 'auto'; | nextArrow.style.pointerEvents = 'auto'; | ||
} | } | ||
} | } | ||
// Логика для обработки якоря | // Логика для обработки якоря | ||
function openCategoryFromAnchor() { | function openCategoryFromAnchor() { | ||
var hash = window.location.hash.substring(1); // Получение якоря без # | var hash = window.location.hash.substring(1); // Получение якоря без # | ||
if (!hash) return | if (!hash) return; // Выход, если якорь пустой | ||
// | // Поиск категории по ID | ||
var | var targetCategory = document.getElementById(hash); | ||
if ( | if (targetCategory) { | ||
var categoryIndex = Array.from(categories).indexOf(targetCategory); | |||
var categoryIndex = Array.from( | |||
if (categoryIndex !== -1) { | if (categoryIndex !== -1) { | ||
switchCategory(categoryIndex | switchCategory(categoryIndex); // Открытие категории | ||
targetCategory.scrollIntoView(); // Прокрутка к категории | |||
} | } | ||
} | } | ||
} | } | ||
// | // Инициализация: открытие категории по якорю или первой категории | ||
if ( | if (window.location.hash) { | ||
// Если | openCategoryFromAnchor(); // Если есть якорь, открываем его | ||
} else if (categories.length > 0) { | |||
switchCategory(currentCategoryIndex); // Иначе открываем первую категорию | |||
} | } | ||
// Обработка якоря при изменении URL | // Обработка якоря при изменении URL | ||
window.addEventListener('hashchange', openCategoryFromAnchor); | window.addEventListener('hashchange', openCategoryFromAnchor); | ||
} | } | ||
const currentPageTitle = document.title; | const currentPageTitle = document.title; | ||