From: Amazingca Date: Mon, 4 May 2026 00:34:58 +0000 (-0600) Subject: Add custom CSS X-Git-Url: http://git.amazingca.dev/?a=commitdiff_plain;h=546286286d1790bad01541c2309bd26cb7424797;p=autumn%2Ftodo Add custom CSS --- diff --git a/settings.js b/settings.js index 43e958d..f250084 100644 --- a/settings.js +++ b/settings.js @@ -35,7 +35,7 @@ document.getElementById("exportData").addEventListener("click", async (event) => const exportURL = window.location.href.replace("settings.html", "") + "index.html#" + btoa(JSON.stringify(dataExport)); - if (!window.navigator.userAgent.includes("Mozilla")) { + if (!window.navigator.userAgent.includes("Firefox")) { try { @@ -63,8 +63,47 @@ document.getElementById("exportData").addEventListener("click", async (event) => } }); +const backupData = () => { + + localStorage.setItem("theme", JSON.stringify(theme)); +} + const override_css = document.getElementById("override_css"); -const update = () => { +override_css.onkeydown = (event) => { + if (event.keyCode == 9) { + + // Hacky workaround here that doesn't work right, will just prevent default for now. + // event.target.setRangeText("\t", this.selectionStart, this.selectionEnd, "end"); + return false; + } +} + +override_css.addEventListener("input", (event) => { + + theme.css = event.target.value; + backupData(); + update(true); +}); + +const update = (force = false) => { + + if (theme.colorScheme != "default") { + + document.getElementByTagName("body")[0].classList.add(theme.colorScheme); + } + + if (theme.css != "" || force) { + + const cssOverride = document.createElement("style"); + cssOverride.setAttribute("id", "styleOverride"); + cssOverride.innerHTML = theme.css.replaceAll("<", "<").replaceAll(">", ">"); + if (document.getElementById("styleOverride")) document.getElementById("styleOverride").remove(); + document.getElementsByTagName("head")[0].appendChild(cssOverride); + + if (!force) override_css.value = theme.css; + } } + +update();