| import EmitterElements from "/app/js/ui/Emitters.js"; | import EmitterElements from "/app/js/ui/Emitters.js"; | ||||
| import Input from "/app/js/ui/Input.js"; | import Input from "/app/js/ui/Input.js"; | ||||
| import Modal from "/app/js/ui/Modal.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 CTRLPalettes from "/app/js/ctrls/CTRLPalettes.js"; | ||||
| import CTRLPainter from "/app/js/ctrls/CTRLPainter.js"; | import CTRLPainter from "/app/js/ctrls/CTRLPainter.js"; | ||||
| import CTRLPalettesStore from "/app/js/ctrls/CTRLPalettesStore.js"; | import CTRLPalettesStore from "/app/js/ctrls/CTRLPalettesStore.js"; | ||||
| function initialize(DOC){ | function initialize(DOC){ | ||||
| TitlePainter(NESPalette.SystemColor); | TitlePainter(NESPalette.SystemColor); | ||||
| EmitterElements.initialize(); | EmitterElements.initialize(); | ||||
| Tabs.initialize(); | |||||
| //GlobalEvents.listen("emitted-event", handle_emitted); | //GlobalEvents.listen("emitted-event", handle_emitted); | ||||
| //var nespainter = new NESPainter(DOC.getElementById("painter")); | //var nespainter = new NESPainter(DOC.getElementById("painter")); |
| 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; | |||||
| .tabnav { | |||||
| background-color: $tabnav-bg; | |||||
| .tabnav { | |||||
| color: $tabnav-text; | color: $tabnav-text; | ||||
| padding: 0; | |||||
| ul { | |||||
| margin: 0; | |||||
| padding: 0; | |||||
| } | |||||
| li { | 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 { | div.tab-content { | ||||
| background-color: $tabnav-content-bg; | background-color: $tabnav-content-bg; | ||||
| color: $tabnav-content-text; | color: $tabnav-content-text; | ||||
| padding: 1.25em 0.75em 0.5em 0.75em | |||||
| } | } | ||||
| } | } | ||||
| .tab-selected { | |||||
| background-color: $tabnav-content-bg; | |||||
| color: $tabnav-content-text; | |||||
| } | |||||
| <div class="tabnav"> | <div class="tabnav"> | ||||
| <ul tabname="assetlists"> | |||||
| <ul tabs="assetlists"> | |||||
| <li class="tab-selected" tabid="palettes"><a href="#">Palettes</a></li> | <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> | </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> | ||||
| </div> | </div> |