From 0de89e6bc6a467b2cc4261ae65464f40119cc0ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Fri, 3 Oct 2025 18:40:45 +0200 Subject: feat(frontend): use htmx to dynamically navigate between pages --- frontend/index.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 frontend/index.ts (limited to 'frontend') diff --git a/frontend/index.ts b/frontend/index.ts new file mode 100644 index 0000000..cd3c455 --- /dev/null +++ b/frontend/index.ts @@ -0,0 +1,26 @@ +import htmx from "htmx.org"; + +function setupAnchors() { + document.querySelectorAll("a").forEach(e => { + if (!e.href.startsWith(window.location.origin)) { + e.target = "_blank"; + return + } + if (e.hasAttribute("hx-trigger")) return; + e.setAttribute("hx-get", e.href) + e.setAttribute("hx-trigger", "click") + e.setAttribute("hx-target", "#content") + e.setAttribute("hx-swap", "outerHTML show:top") + htmx.process(e) + }); +} + +// updating history and window title +document.addEventListener("htmx:afterSettle", e => { + const title = e.detail.xhr.getResponseHeader("Updated-Title") + if (title?.length != 0) document.title = title + window.history.pushState({}, "", e.detail.pathInfo.finalRequestPath) + setupAnchors() +}) + +setupAnchors() -- cgit v1.2.3