MediaWiki:Common.js: различия между версиями
Mei Day (обсуждение | вклад) Нет описания правки |
Mei Day (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
// Переключение вкладок | // Переключение вкладок и классов "chaos-*". | ||
mw.hook('wikipage.content').add(function ($root) { | mw.hook('wikipage.content').add(function ($root) { | ||
$root.find('.hj-chaos-container').each(function () { | $root.find('.hj-chaos-container').each(function () { | ||
| Строка 9: | Строка 8: | ||
if (!$buttons.length || !$blocks.length) return; | if (!$buttons.length || !$blocks.length) return; | ||
var CHAOS_CLASSES = 'chaos-overview chaos-calm chaos-medium chaos-high'; | |||
var | |||
function activate(key, $btn) { | function activate(key, $btn) { | ||
// активная кнопка | |||
$buttons.removeClass('active'); | $buttons.removeClass('active'); | ||
$btn.addClass('active'); | $btn.addClass('active'); | ||
// активный блок | |||
$blocks.removeClass('active').hide(); | $blocks.removeClass('active').hide(); | ||
$blocks | |||
.filter('[data-chaos="' + key + '"]') | .filter('[data-chaos="' + key + '"]') | ||
.addClass('active') | .addClass('active') | ||
.show(); | .show(); | ||
// класс на контейнере для раскраски рамок/фона | |||
$container | |||
.removeClass(CHAOS_CLASSES) | |||
.addClass('chaos-' + key); | |||
} | } | ||
| Строка 65: | Строка 39: | ||
// Клики | // Клики | ||
$buttons.off('click.hjChaos').on('click.hjChaos', function () { | $buttons.off('click.hjChaos').on('click.hjChaos', function () { | ||
var $btn | var $btn = $(this); | ||
activate($btn.data('chaos'), $btn); | |||
}); | }); | ||
}); | }); | ||
}); | }); | ||
Текущая версия от 23:37, 15 ноября 2025
// Переключение вкладок и классов "chaos-*".
mw.hook('wikipage.content').add(function ($root) {
$root.find('.hj-chaos-container').each(function () {
var $container = $(this);
var $buttons = $container.find('.hj-chaos-tab-button');
var $blocks = $container.find('.hj-chaos-block');
if (!$buttons.length || !$blocks.length) return;
var CHAOS_CLASSES = 'chaos-overview chaos-calm chaos-medium chaos-high';
function activate(key, $btn) {
// активная кнопка
$buttons.removeClass('active');
$btn.addClass('active');
// активный блок
$blocks.removeClass('active').hide();
$blocks
.filter('[data-chaos="' + key + '"]')
.addClass('active')
.show();
// класс на контейнере для раскраски рамок/фона
$container
.removeClass(CHAOS_CLASSES)
.addClass('chaos-' + key);
}
// Инициализация
var $activeBtn = $buttons.filter('.active').first();
if ($activeBtn.length) {
activate($activeBtn.data('chaos'), $activeBtn);
} else {
var $first = $buttons.first();
activate($first.data('chaos'), $first);
}
// Клики
$buttons.off('click.hjChaos').on('click.hjChaos', function () {
var $btn = $(this);
activate($btn.data('chaos'), $btn);
});
});
});