58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
/* Tabs JS implementation. Borrowed from Skaffold */
|
|
function initTabs() {
|
|
try{
|
|
$('.tab-content').children('.tab-pane').each(function(idx, item) {
|
|
var navTabs = $(this).closest('.code-tabs').children('.nav-tabs'),
|
|
title = escape($(this).attr('title')).replace(/%20/g, ' '),
|
|
os = escape($(this).attr('os') || '');
|
|
navTabs.append('<li class="nav-tab '+os+'"><a href="#" class="nav-tab">'+title+'</a></li>');
|
|
});
|
|
|
|
$('.code-tabs ul.nav-tabs').each(function() {
|
|
let tabSelector = getTabSelector(this);
|
|
$(this).find('li'+tabSelector).addClass('active');
|
|
});
|
|
|
|
$('.code-tabs .tab-content').each(function() {
|
|
let tabSelector = getTabSelector(this);
|
|
$(this).find('div'+tabSelector).addClass('active');
|
|
})
|
|
|
|
$('.nav-tabs a').click(function(e){
|
|
e.preventDefault();
|
|
var tab = $(this).parent(),
|
|
tabIndex = tab.index(),
|
|
tabPanel = $(this).closest('.code-tabs'),
|
|
tabPane = tabPanel.find('.tab-content:first').children('.tab-pane').eq(tabIndex);
|
|
tab.siblings().removeClass('active');
|
|
tabPane.siblings().removeClass('active');
|
|
tab.addClass('active');
|
|
tabPane.addClass('active');
|
|
});
|
|
} catch(e) {
|
|
const elements = document.getElementsByClassName("tab-pane");
|
|
for (let element of elements) {
|
|
element.style.display = "block";
|
|
const title = document.createElement("h3");
|
|
title.innerText = element.title;
|
|
title.classList.add("backup-tab-title");
|
|
element.prepend(title);
|
|
}
|
|
}
|
|
}
|
|
|
|
const getTabSelector = currElement => {
|
|
let osSelector = '.'+getUserOS();
|
|
let hasMatchingOSTab = $(currElement).find(osSelector).length;
|
|
return hasMatchingOSTab ? osSelector : ':first';
|
|
}
|
|
|
|
const getUserOS = () => {
|
|
let os = ['Linux', 'Mac', 'Windows'];
|
|
let userAgent = navigator.userAgent;
|
|
for (let currentOS of os) {
|
|
if (userAgent.indexOf(currentOS) !== -1) return currentOS;
|
|
}
|
|
return 'Linux';
|
|
}
|