Add css/js class tabbed_container.
This commit is contained in:
		
							parent
							
								
									b8c25f217d
								
							
						
					
					
						commit
						f103447807
					
				
					 2 changed files with 108 additions and 0 deletions
				
			
		|  | @ -143,6 +143,51 @@ button:active | |||
|     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 | ||||
| { | ||||
|     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 = | ||||
| function refresh() | ||||
| { | ||||
|  | @ -332,5 +394,6 @@ function on_pageload() | |||
|     common.init_atag_merge_params(); | ||||
|     common.init_button_with_confirm(); | ||||
|     common.init_enable_on_pageload(); | ||||
|     common.init_tabbed_container(); | ||||
| } | ||||
| document.addEventListener("DOMContentLoaded", common.on_pageload); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue