@@ -2,6 +2,7 @@ import GlobalEvents from "/app/js/common/EventCaller.js"; | |||
import EmitterElements from "/app/js/ui/Emitters.js"; | |||
import Input from "/app/js/ui/Input.js"; | |||
import Modal from "/app/js/ui/Modal.js"; | |||
import Tabs from "/app/js/ui/Tabs.js"; | |||
import CTRLPalettes from "/app/js/ctrls/CTRLPalettes.js"; | |||
import CTRLPainter from "/app/js/ctrls/CTRLPainter.js"; | |||
import CTRLPalettesStore from "/app/js/ctrls/CTRLPalettesStore.js"; | |||
@@ -26,6 +27,7 @@ function TitlePainter(pal){ | |||
function initialize(DOC){ | |||
TitlePainter(NESPalette.SystemColor); | |||
EmitterElements.initialize(); | |||
Tabs.initialize(); | |||
//GlobalEvents.listen("emitted-event", handle_emitted); | |||
//var nespainter = new NESPainter(DOC.getElementById("painter")); |
@@ -0,0 +1,78 @@ | |||
import GlobalEvents from "/app/js/common/EventCaller.js"; | |||
function UnselectTab(tabname, tabid, el){ | |||
el.classList.remove("tab-selected"); | |||
var d = document.querySelectorAll("[fortabs='" + tabname + "'][tabid='" + tabid + "']"); | |||
for (let i=0; i < d.length; i++){ | |||
d[i].classList.add("hidden"); | |||
} | |||
} | |||
function SelectTab(tabname, tabid, el){ | |||
if (!el.classList.contains("tab-selected")) | |||
el.classList.add("tab-selected"); | |||
var d = document.querySelectorAll("[fortabs='" + tabname + "'][tabid='" + tabid + "']"); | |||
for (let i=0; i < d.length; i++){ | |||
d[i].classList.remove("hidden"); | |||
} | |||
} | |||
function GenTABListener(tabname, tabid, lil){ | |||
return function(e){ | |||
// TODO: FIX ME!! | |||
var sel = lil.querySelector("li.tab-selected"); | |||
if (sel){ | |||
var oldtabid = sel.getAttribute("tabid"); | |||
UnselectTab(tabname, oldtabid, sel); | |||
} | |||
sel = lil.querySelector("li[tabid='" + tabid + "']"); | |||
if (sel){ | |||
SelectTab(tabname, tabid, sel); | |||
} | |||
} | |||
} | |||
function HideAllTABContent(tabname){ | |||
var d = document.querySelectorAll("[fortabs='" + tabname + "']"); | |||
for (let i=0; i < d.length; i++){ | |||
d[i].classList.add("hidden"); | |||
} | |||
} | |||
class Tabs{ | |||
constructor(){} | |||
initialize(){ | |||
var tabs = document.querySelectorAll("ul[tabs]"); | |||
for (let i=0; i < tabs.length; i++){ | |||
var selectionMade = false; | |||
var tabname = tabs[i].getAttribute("tabs"); | |||
HideAllTABContent(tabname); | |||
var li = tabs[i].querySelectorAll("li[tabid]"); | |||
for (let j=0; j < li.length; j++){ | |||
var tabid = li[j].getAttribute("tabid"); | |||
var a = li[j].querySelector("a"); | |||
a.addEventListener("click", GenTABListener(tabname, tabid, li)); | |||
if (li[j].classList.contains("tab-selected")){ | |||
if (selectionMade){ | |||
UnselectTab(tabname, tabid, li[j]); | |||
} else { | |||
SelectTab(tabname, tabid, li[j]); | |||
selectionMade = true; | |||
} | |||
} | |||
} | |||
if (selectionMade == false){ | |||
var tabid = li[0].getAttribute("tabid"); | |||
SelectTab(tabname, tabid, li[0]); | |||
} | |||
} | |||
} | |||
} | |||
const instance = new Tabs(); | |||
export default instance; | |||
@@ -1,23 +1,35 @@ | |||
.tabnav { | |||
background-color: $tabnav-bg; | |||
.tabnav { | |||
color: $tabnav-text; | |||
padding: 0; | |||
ul { | |||
margin: 0; | |||
padding: 0; | |||
} | |||
li { | |||
display: inline; | |||
background-color: $tabnav-bg; | |||
display: inline; | |||
border-top-left-radius: 10px; | |||
border-top-right-radius: 10px; | |||
&.tab-selected { | |||
background-color: $tabnav-content-bg; | |||
color: $tabnav-content-text; | |||
} | |||
} | |||
a { | |||
padding: 0 10px; | |||
text-decoration: none; | |||
a { | |||
padding: 0 10px; | |||
text-decoration: none; | |||
} | |||
div.tab-content { | |||
background-color: $tabnav-content-bg; | |||
color: $tabnav-content-text; | |||
padding: 1.25em 0.75em 0.5em 0.75em | |||
} | |||
} | |||
.tab-selected { | |||
background-color: $tabnav-content-bg; | |||
color: $tabnav-content-text; | |||
} | |||
@@ -1,10 +1,16 @@ | |||
<div class="tabnav"> | |||
<ul tabname="assetlists"> | |||
<ul tabs="assetlists"> | |||
<li class="tab-selected" tabid="palettes"><a href="#">Palettes</a></li> | |||
<li tabid="Banks"><a href="#">Banks</a></li> | |||
<li tabid="AttrTables"><a href="#">Attib. Tables</a></li> | |||
<li tabid="banks"><a href="#">Banks</a></li> | |||
<li tabid="attrtables"><a href="#">Attib. Tables</a></li> | |||
</ul> | |||
<div class="tab-content" contentfor="assetlists" tabid="palettes"> | |||
Stuff to go here! | |||
<div class="tab-content" fortabs="assetlists" tabid="palettes"> | |||
Palettes Content! | |||
</div> | |||
<div class="tab-content" fortabs="assetlists" tabid="banks"> | |||
Bank Content! | |||
</div> | |||
<div class="tab-content" fortabs="assetlists" tabid="attrtables"> | |||
Attribute Table Content! | |||
</div> | |||
</div> |