primo commit

This commit is contained in:
2024-12-17 17:34:10 +01:00
commit e650f8df99
16435 changed files with 2451012 additions and 0 deletions

128
media/fef/js/tabs.js Normal file
View File

@ -0,0 +1,128 @@
/*
* Akeeba Frontend Framework (FEF)
*
* @package fef
* @copyright (c) 2017-2020 Nicholas K. Dionysopoulos / Akeeba Ltd
* @license GNU General Public License version 3, or later
*
* Created by Crystal Dionysopoulou for Akeeba Ltd, https://www.akeeba.com
*/
if (typeof akeeba === 'undefined')
{
akeeba = {};
}
if (typeof akeeba.fef === 'undefined')
{
akeeba.fef = {};
}
if (typeof akeeba.fef.forEach === 'undefined')
{
akeeba.fef.forEach = function (array, callback, scope) {
for (var i = 0; i < array.length; i++) {
callback.call(scope, i, array[i]);
}
};
}
/**
* Activates the tab interface for specific HTML elements
*
* @param {String} [selector] CSS selector for the tab-set wrapper(s). Default: 'div.akeeba-tabs'
*/
akeeba.fef.tabs = function(selector)
{
// Use the default selector, if necessary
if ((typeof selector === 'undefined') || (selector === ''))
{
selector = 'div.akeeba-tabs';
}
var wrappersList = document.querySelectorAll(selector);
if (wrappersList.length === 0)
{
return;
}
// Loop for every tab set matching the selector
akeeba.fef.forEach(wrappersList, function(i, elWrapper) {
// Sort the child elements of the selector to tabs (label) and panels (section)
var tabList = elWrapper.querySelectorAll('label');
var tabId = elWrapper.id;
var tabPreselected = '';
if (tabList.length === 0)
{
return;
}
if (tabId != '')
{
tabPreselected = window.sessionStorage.getItem('akeeba.tabs.' + tabId);
}
akeeba.fef.forEach(tabList, function(k, elTab) {
if (elTab.parentElement !== elWrapper)
{
return;
}
elTab.addEventListener('click', function (event) {
var selectedId = this.getAttribute('for');
akeeba.fef.forEach(tabList, function(q, element) {
if (element.parentElement !== elWrapper)
{
return;
}
var currentClasses = element.className.split(' ');
var newClass = '';
for (var property in currentClasses)
{
if (!currentClasses.hasOwnProperty(property) || (currentClasses[property] === 'active'))
{
continue;
}
newClass += currentClasses[property] + ' ';
}
if (newClass.trim)
{
newClass = newClass.trim();
}
// If the 'for' attribute matches add back the "active" class
if (element.getAttribute('for') === selectedId)
{
window.sessionStorage.setItem('akeeba.tabs.' + tabId, selectedId);
newClass += ' active';
}
element.className = newClass;
});
});
});
if (tabPreselected != '')
{
akeeba.fef.forEach(tabList, function(k, elTab) {
if (elTab.parentElement !== elWrapper)
{
return;
}
if (elTab.getAttribute('for') == tabPreselected)
{
var clickEvent = new MouseEvent('click');
elTab.dispatchEvent(clickEvent);
}
});
}
});
};