mirror of
https://github.com/Universal-Omega/PortableInfobox.git
synced 2024-12-21 12:32:35 +00:00
80 lines
2.2 KiB
JavaScript
80 lines
2.2 KiB
JavaScript
(function (window, $) {
|
|
'use strict';
|
|
|
|
var MediaCollection = {
|
|
init: function($content) {
|
|
var $mediaCollections = $content.find('.pi-media-collection');
|
|
|
|
$mediaCollections.each( function( index ) {
|
|
var $collection = $mediaCollections.eq(index),
|
|
$tabs = $collection.find('ul.pi-media-collection-tabs li'),
|
|
$tabContent = $collection.find('.pi-media-collection-tab-content');
|
|
|
|
$tabs.click( function() {
|
|
var $target = $(this),
|
|
tabId = $target.attr('data-pi-tab');
|
|
|
|
$tabs.removeClass('current');
|
|
$tabContent.removeClass('current');
|
|
|
|
$target.addClass('current');
|
|
$collection.find('#' + tabId).addClass('current');
|
|
});
|
|
});
|
|
}
|
|
};
|
|
|
|
var CollapsibleGroup = {
|
|
init: function($content) {
|
|
var $collapsibleGroups = $content.find('.pi-collapse');
|
|
|
|
$collapsibleGroups.each( function( index ) {
|
|
var $group = $collapsibleGroups.eq(index),
|
|
$header = $group.find('.pi-header:first');
|
|
|
|
$header.click( function() {
|
|
$group.toggleClass('pi-collapse-closed');
|
|
|
|
// SUS-3245: lazy-load any images in the un-collapsed section
|
|
$(window).trigger('scroll');
|
|
});
|
|
});
|
|
}
|
|
};
|
|
|
|
var Panel = {
|
|
init: function($content) {
|
|
var $panels = $content.find('.pi-panel');
|
|
|
|
$panels.each( function( index ) {
|
|
var $panel = $panels.eq(index),
|
|
$toggles = $panel.find('.pi-section-navigation');
|
|
|
|
$toggles.on('click', function(e) {
|
|
var toggle = e.target.closest('.pi-section-tab');
|
|
|
|
if (toggle !== null) {
|
|
var $newActiveToggle = $(toggle),
|
|
newRef = $newActiveToggle.attr('data-ref'),
|
|
$oldActiveToggle = $toggles.find('.pi-section-active'),
|
|
$oldActiveContent = $panel.find('.pi-section-content.pi-section-active'),
|
|
$newActiveContent = $panel.find('.pi-section-content[data-ref=' + newRef + ']');
|
|
|
|
$oldActiveToggle.removeClass('pi-section-active');
|
|
$oldActiveContent.removeClass('pi-section-active');
|
|
|
|
$newActiveToggle.addClass('pi-section-active');
|
|
$newActiveContent.addClass('pi-section-active');
|
|
}
|
|
});
|
|
}.bind(this));
|
|
},
|
|
};
|
|
|
|
mw.hook('wikipage.content').add(function($content) {
|
|
MediaCollection.init($content);
|
|
CollapsibleGroup.init($content);
|
|
Panel.init($content);
|
|
});
|
|
})(window, jQuery);
|