Add css/js class tabbed_container.
This commit is contained in:
parent
8dafe8c4f4
commit
45b42d3ca3
2 changed files with 108 additions and 0 deletions
|
@ -143,6 +143,51 @@ button:active
|
||||||
background-color: #ffea57;
|
background-color: #ffea57;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tabbed_container
|
||||||
|
{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.tabbed_container .tab_buttons
|
||||||
|
{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
.tabbed_container .tab_button
|
||||||
|
{
|
||||||
|
/* outline: none; prevents the blue outline left after clicking on it */
|
||||||
|
outline: none;
|
||||||
|
flex: 1;
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: 1.3em;
|
||||||
|
border-radius: 8px 8px 0 0;
|
||||||
|
}
|
||||||
|
.tabbed_container .tab,
|
||||||
|
.tabbed_container .tab_button
|
||||||
|
{
|
||||||
|
border-width: 2px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #888;
|
||||||
|
}
|
||||||
|
.tabbed_container .tab_button_inactive
|
||||||
|
{
|
||||||
|
border-top-color: transparent;
|
||||||
|
border-left-color: transparent;
|
||||||
|
border-right-color: transparent;
|
||||||
|
}
|
||||||
|
.tabbed_container .tab_button_active
|
||||||
|
{
|
||||||
|
border-bottom-color: transparent;
|
||||||
|
}
|
||||||
|
.tabbed_container .tab
|
||||||
|
{
|
||||||
|
/* This will be set by javascript after the tabs have been initialized.
|
||||||
|
That way, the tab panes don't have a missing top border while the dom is
|
||||||
|
loading or if javascript is disabled.
|
||||||
|
/*border-top-color: transparent;*/
|
||||||
|
}
|
||||||
|
|
||||||
#message_area
|
#message_area
|
||||||
{
|
{
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
@ -320,6 +320,68 @@ function init_enable_on_pageload()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
common.init_tabbed_container =
|
||||||
|
function init_tabbed_container()
|
||||||
|
{
|
||||||
|
var switch_tab =
|
||||||
|
function switch_tab(event)
|
||||||
|
{
|
||||||
|
var tab_button = event.target;
|
||||||
|
if (tab_button.classList.contains("tab_button_active"))
|
||||||
|
{ return; }
|
||||||
|
|
||||||
|
var tab_id = tab_button.dataset.tabId;
|
||||||
|
var tab_buttons = tab_button.parentElement.getElementsByClassName("tab_button");
|
||||||
|
var tabs = tab_button.parentElement.parentElement.getElementsByClassName("tab");
|
||||||
|
for (let tab_button of tab_buttons)
|
||||||
|
{
|
||||||
|
if (tab_button.dataset.tabId === tab_id)
|
||||||
|
{
|
||||||
|
tab_button.classList.remove("tab_button_inactive");
|
||||||
|
tab_button.classList.add("tab_button_active");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tab_button.classList.remove("tab_button_active");
|
||||||
|
tab_button.classList.add("tab_button_inactive");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (let tab of tabs)
|
||||||
|
{
|
||||||
|
if (tab.dataset.tabId === tab_id)
|
||||||
|
{ tab.classList.remove("hidden"); }
|
||||||
|
else
|
||||||
|
{ tab.classList.add("hidden"); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var tabbed_containers = Array.from(document.getElementsByClassName("tabbed_container"));
|
||||||
|
tabbed_containers.forEach(function(tabbed_container)
|
||||||
|
{
|
||||||
|
var button_container = document.createElement("div");
|
||||||
|
button_container.className = "tab_buttons";
|
||||||
|
tabbed_container.prepend(button_container);
|
||||||
|
var tabs = Array.from(tabbed_container.getElementsByClassName("tab"));
|
||||||
|
tabs.forEach(function(tab)
|
||||||
|
{
|
||||||
|
tab.classList.add("hidden");
|
||||||
|
var tab_id = tab.dataset.tabId || tab.dataset.tabTitle;
|
||||||
|
tab.dataset.tabId = tab_id;
|
||||||
|
tab.style.borderTopColor = "transparent";
|
||||||
|
|
||||||
|
var button = document.createElement("button");
|
||||||
|
button.className = "tab_button tab_button_inactive";
|
||||||
|
button.onclick = switch_tab;
|
||||||
|
button.innerText = tab.dataset.tabTitle;
|
||||||
|
button.dataset.tabId = tab_id;
|
||||||
|
button_container.append(button);
|
||||||
|
});
|
||||||
|
tabs[0].classList.remove("hidden");
|
||||||
|
button_container.firstElementChild.classList.remove("tab_button_inactive");
|
||||||
|
button_container.firstElementChild.classList.add("tab_button_active");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
common.refresh =
|
common.refresh =
|
||||||
function refresh()
|
function refresh()
|
||||||
{
|
{
|
||||||
|
@ -332,5 +394,6 @@ function on_pageload()
|
||||||
common.init_atag_merge_params();
|
common.init_atag_merge_params();
|
||||||
common.init_button_with_confirm();
|
common.init_button_with_confirm();
|
||||||
common.init_enable_on_pageload();
|
common.init_enable_on_pageload();
|
||||||
|
common.init_tabbed_container();
|
||||||
}
|
}
|
||||||
document.addEventListener("DOMContentLoaded", common.on_pageload);
|
document.addEventListener("DOMContentLoaded", common.on_pageload);
|
||||||
|
|
Loading…
Reference in a new issue