chore: migrate many of our interactive scripts to defer

This commit is contained in:
Corbin Crutchley
2022-09-25 05:50:52 -07:00
parent 51a4ad0fda
commit b5058b458a
9 changed files with 227 additions and 199 deletions

View File

@@ -0,0 +1,28 @@
/* AFTER CHANGING THIS FILE, PLEASE MANUALLY MINIFY IT AND PUT INTO tabs.min.js */
const COLOR_MODE_STORAGE_KEY = "currentTheme";
const themeToggleBtn = document.querySelector('#theme-toggle-button');
const darkIconEl = document.querySelector('#dark-icon');
const lightIconEl = document.querySelector('#light-icon');
function toggleButton(theme) {
themeToggleBtn.ariaPressed = `${theme === 'dark'}`;
if (theme === 'light') {
lightIconEl.style.display = null;
darkIconEl.style.display = 'none';
} else {
lightIconEl.style.display = 'none';
darkIconEl.style.display = null;
}
}
// TODO: Migrate to `classList`
const initialTheme = document.documentElement.className;
toggleButton(initialTheme);
themeToggleBtn.addEventListener('click', () => {
const currentTheme = document.documentElement.className;
document.documentElement.className = currentTheme === 'light' ? 'dark' : 'light';
// TODO: Persist new setting
const newTheme = document.documentElement.className;
toggleButton(newTheme);
localStorage.setItem(COLOR_MODE_STORAGE_KEY, newTheme)
})