MediaWiki:Common.js: Difference between revisions
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function() { | mw.loader.using(['mediawiki.api', 'mediawiki.util'], function() { | ||
$(function() { | $(function() { | ||
// Create a | // Create a simple mode selector as a normal navigation item | ||
var $ | var $modeSelector = $( | ||
'< | '<li class="mw-list-item mode-nav-item">' + | ||
'<div class="mode | '<span class="mode-text">Mode: <span class="current-mode">Anime</span></span>' + | ||
' | '<div class="mode-menu">' + | ||
'<a class="mode-option" data-mode="anime">Anime Mode</a>' + | |||
'<a class="mode-option" data-mode="manga">Manga Mode</a>' + | |||
'</div>' + | '</div>' + | ||
'</li>' | |||
'</ | |||
); | ); | ||
// Insert it | // Insert it into the navigation list at the top | ||
$('.vector-menu- | $('#mw-navigation .vector-menu-content ul').first().prepend($modeSelector); | ||
// Initialize | // Initialize from stored preference | ||
var currentMode = localStorage.getItem('contentMode') || 'anime'; | var currentMode = localStorage.getItem('contentMode') || 'anime'; | ||
updateContentDisplay(currentMode); | updateContentDisplay(currentMode); | ||
Line 29: | Line 27: | ||
localStorage.setItem('contentMode', mode); | localStorage.setItem('contentMode', mode); | ||
updateContentDisplay(mode); | updateContentDisplay(mode); | ||
$('.mode-menu').removeClass('visible'); | |||
}); | }); | ||
// Toggle | // Toggle menu visibility | ||
$('.mode- | $('.mode-text').on('click', function(e) { | ||
$('.mode- | e.preventDefault(); | ||
$('.mode-menu').toggleClass('visible'); | |||
}); | |||
// Close menu when clicking elsewhere | |||
$(document).on('click', function(e) { | |||
if (!$(e.target).closest('.mode-nav-item').length) { | |||
$('.mode-menu').removeClass('visible'); | |||
} | |||
}); | }); | ||
}); | }); | ||
Line 47: | Line 54: | ||
} | } | ||
// Update | // Update the mode display text | ||
$('.mode | $('.current-mode').text(mode.charAt(0).toUpperCase() + mode.slice(1)); | ||
// Update active state in menu | |||
$('.mode-option').removeClass('active'); | $('.mode-option').removeClass('active'); | ||
$('.mode-option[data-mode="' + mode + '"]').addClass('active'); | $('.mode-option[data-mode="' + mode + '"]').addClass('active'); | ||
} | } |
Revision as of 18:00, 6 February 2025
/* Any JavaScript here will be loaded for all users on every page load. */
// MediaWiki:Common.js
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function() {
$(function() {
// Create a simple mode selector as a normal navigation item
var $modeSelector = $(
'<li class="mw-list-item mode-nav-item">' +
'<span class="mode-text">Mode: <span class="current-mode">Anime</span></span>' +
'<div class="mode-menu">' +
'<a class="mode-option" data-mode="anime">Anime Mode</a>' +
'<a class="mode-option" data-mode="manga">Manga Mode</a>' +
'</div>' +
'</li>'
);
// Insert it into the navigation list at the top
$('#mw-navigation .vector-menu-content ul').first().prepend($modeSelector);
// Initialize from stored preference
var currentMode = localStorage.getItem('contentMode') || 'anime';
updateContentDisplay(currentMode);
// Handle mode selection
$('.mode-option').on('click', function(e) {
e.preventDefault();
var mode = $(this).data('mode');
localStorage.setItem('contentMode', mode);
updateContentDisplay(mode);
$('.mode-menu').removeClass('visible');
});
// Toggle menu visibility
$('.mode-text').on('click', function(e) {
e.preventDefault();
$('.mode-menu').toggleClass('visible');
});
// Close menu when clicking elsewhere
$(document).on('click', function(e) {
if (!$(e.target).closest('.mode-nav-item').length) {
$('.mode-menu').removeClass('visible');
}
});
});
});
function updateContentDisplay(mode) {
// Update content visibility
$('.manga-content, .anime-content').hide();
if (mode === 'manga') {
$('.manga-content, .anime-content').show();
} else {
$('.anime-content').show();
}
// Update the mode display text
$('.current-mode').text(mode.charAt(0).toUpperCase() + mode.slice(1));
// Update active state in menu
$('.mode-option').removeClass('active');
$('.mode-option[data-mode="' + mode + '"]').addClass('active');
}