chiya/assets/js/app.js

47 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2023-03-05 16:07:40 +01:00
// Include phoenix_html to handle method=PUT/DELETE in forms and buttons.
import "phoenix_html"
// Establish Phoenix Socket and LiveView configuration.
2023-03-21 07:19:45 +01:00
import { Socket } from "phoenix"
import { LiveSocket } from "phoenix_live_view"
2023-03-05 16:07:40 +01:00
import topbar from "../vendor/topbar"
2023-09-10 10:58:08 +02:00
import darkmode from "./darkmode"
2023-03-13 02:04:07 +01:00
2023-03-05 16:07:40 +01:00
let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content")
2023-03-21 07:19:45 +01:00
let liveSocket = new LiveSocket("/live", Socket, { params: { _csrf_token: csrfToken } })
2023-03-05 16:07:40 +01:00
// Show progress bar on live navigation and form submits
2023-03-21 07:19:45 +01:00
topbar.config({ barColors: { 0: "#29d" }, shadowColor: "rgba(0, 0, 0, .3)" })
2023-03-05 16:07:40 +01:00
window.addEventListener("phx:page-loading-start", _info => topbar.show(300))
window.addEventListener("phx:page-loading-stop", _info => topbar.hide())
// connect if there are any LiveViews on the page
liveSocket.connect()
// expose liveSocket on window for web console debug logs and latency simulation:
// >> liveSocket.enableDebug()
// >> liveSocket.enableLatencySim(1000) // enabled for duration of browser session
// >> liveSocket.disableLatencySim()
window.liveSocket = liveSocket
2023-09-10 10:58:08 +02:00
document.addEventListener("DOMContentLoaded", function() {
darkmode()
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;
}
}))
})