diff --git a/assets/js/app.js b/assets/js/app.js index b876f92..e245ae5 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -47,20 +47,39 @@ window.liveSocket = liveSocket const reactRoot = document.querySelector('#react-root') if (reactRoot) { - const root = createRoot(reactRoot); - root.render(); + const root = createRoot(reactRoot); + root.render(); } document - .querySelector("#dark-mode-toggle") - .addEventListener("click", (e) => { - e.preventDefault() - const data = document.documentElement.dataset - if (data["mode"] && data["mode"] == "dark") { - delete data["mode"] - window.localStorage.removeItem("theme") - } else { - data["mode"] = "dark" - window.localStorage.setItem("theme", "dark") - } - }) + .querySelector("#dark-mode-toggle") + .addEventListener("click", (e) => { + e.preventDefault() + const data = document.documentElement.dataset + if (data["mode"] && data["mode"] == "dark") { + delete data["mode"] + window.localStorage.removeItem("theme") + } else { + data["mode"] = "dark" + window.localStorage.setItem("theme", "dark") + } + }) + +document + .querySelectorAll('textarea') + .forEach(e => e.addEventListener('keydown', function(e) { + if (e.key == 'Tab') { + e.preventDefault(); + var start = this.selectionStart; + var end = this.selectionEnd; + + // set textarea value to: text before caret + tab + text after caret + this.value = this.value.substring(0, start) + + "\t" + this.value.substring(end); + + // put caret at right position again + this.selectionStart = + this.selectionEnd = start + 1; + } + })) +