MediaWiki:Common.js
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
// Переключение вкладок + синхронизация фона и карточек.
// Работает по каждому .hj-chaos-container отдельно.
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;
function darken(rgb, k) {
var m = (rgb || '').match(/\d+/g) || [17,17,17];
var r = Math.round(m[0] * (1 - k));
var g = Math.round(m[1] * (1 - k));
var b = Math.round(m[2] * (1 - k));
return 'rgb(' + r + ', ' + g + ', ' + b + ')';
}
function applyColors($btn, $block) {
var bg = getComputedStyle($btn[0]).backgroundColor;
// Фон блока = фон вкладки
$block.css('background-color', bg);
$container[0].style.setProperty('--hj-chaos-block-bg', bg);
// Рамка = тот же цвет
$container[0].style.setProperty('--hj-chaos-border', bg);
// Карточки — чуточку темнее
var cardBg = darken(bg, 0.18);
$block.find('.hj-rule-card').css('background-color', cardBg);
}
function activate(key, $btn) {
$buttons.removeClass('active');
$btn.addClass('active');
$blocks.removeClass('active').hide();
var $blk = $blocks.filter('[data-chaos="' + key + '"]').addClass('active').show();
applyColors($btn, $blk);
}
// Инициализация
var $activeBtn = $buttons.filter('.active').first();
if ($activeBtn.length) {
activate($activeBtn.data('chaos'), $activeBtn);
} else {
activate($buttons.first().data('chaos'), $buttons.first());
}
// Клики
$buttons.off('click.hjChaos').on('click.hjChaos', function () {
var $btn = $(this);
activate($btn.data('chaos'), $btn);
});
});
});