Spaces:
Paused
Paused
| // Rewrite this is a plugin.. is all this JS really 'worth it?' | |
| window.addEventListener('hashchange', function () { | |
| var tabs = document.getElementsByClassName('active'); | |
| while (tabs[0]) { | |
| tabs[0].classList.remove('active'); | |
| document.body.classList.remove('full-width'); | |
| } | |
| set_active_tab(); | |
| }, false); | |
| var has_errors = document.querySelectorAll(".messages .error"); | |
| if (!has_errors.length) { | |
| if (document.location.hash == "") { | |
| location.replace(document.querySelector(".tabs ul li:first-child a").hash); | |
| } else { | |
| set_active_tab(); | |
| } | |
| } else { | |
| focus_error_tab(); | |
| } | |
| function set_active_tab() { | |
| document.body.classList.remove('full-width'); | |
| var tab = document.querySelectorAll("a[href='" + location.hash + "']"); | |
| if (tab.length) { | |
| tab[0].parentElement.className = "active"; | |
| } | |
| } | |
| function focus_error_tab() { | |
| // time to use jquery or vuejs really, | |
| // activate the tab with the error | |
| var tabs = document.querySelectorAll('.tabs li a'), i; | |
| for (i = 0; i < tabs.length; ++i) { | |
| var tab_name = tabs[i].hash.replace('#', ''); | |
| var pane_errors = document.querySelectorAll('#' + tab_name + ' .error') | |
| if (pane_errors.length) { | |
| document.location.hash = '#' + tab_name; | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |