From 145e7e05f3aa6adbc71a0db5e7da160e626bacd3 Mon Sep 17 00:00:00 2001 From: SayaAndy Date: Sun, 31 Aug 2025 18:12:51 +0700 Subject: feat: seamless single page application --- views/layouts/general-page.html | 94 ++++++++------------------ views/pages/blog-catalogue.html | 36 ++++++---- views/pages/blog-page.html | 79 ++++++++++++++++++++++ views/partials/catalogue-blog-cards.html | 5 +- views/partials/general-page-bottom-embeds.html | 1 + views/partials/general-page-header.html | 2 +- views/partials/general-page-top-embeds.html | 1 + 7 files changed, 133 insertions(+), 85 deletions(-) create mode 100644 views/partials/general-page-bottom-embeds.html create mode 100644 views/partials/general-page-top-embeds.html (limited to 'views') diff --git a/views/layouts/general-page.html b/views/layouts/general-page.html index 4e352f4..e9a6c0f 100644 --- a/views/layouts/general-page.html +++ b/views/layouts/general-page.html @@ -8,7 +8,6 @@ - {{ block "top-embeds" . }}{{ end }} @@ -18,6 +17,16 @@ + + - +
+
+
+
+
+
+ - - diff --git a/views/pages/blog-catalogue.html b/views/pages/blog-catalogue.html index ac2fb7d..a5f5256 100644 --- a/views/pages/blog-catalogue.html +++ b/views/pages/blog-catalogue.html @@ -98,6 +98,7 @@ function cleanHrefParams() { const url = new URL(window.location.href); url.search = ''; + window.history.pushState({}, '', url.toString()); } @@ -137,22 +138,27 @@ window.history.pushState({}, '', url.toString()); } - document.addEventListener('DOMContentLoaded', contextAll); - + document.addEventListener('htmx:afterRequest', (e) => { + if (e.detail.xhr.status == 404 || e.detail.successful != true) { + return console.error(e); + } + if (e.detail.target.id == 'general-page-body') { + contextAll(); - {{ end }} diff --git a/views/pages/blog-page.html b/views/pages/blog-page.html index d8fb118..e68fcab 100644 --- a/views/pages/blog-page.html +++ b/views/pages/blog-page.html @@ -1,3 +1,18 @@ +{{ define "top-embeds" }} + +{{ end }} + {{ define "body" }}
{{ .ParsedMarkdown }} @@ -5,6 +20,43 @@

+ + {{- end }}
{{ end }} @@ -12,3 +64,30 @@ {{ define "footer" }}
{{ end }} + +{{ define "bottom-embeds" }} + +{{ end }} \ No newline at end of file diff --git a/views/partials/catalogue-blog-cards.html b/views/partials/catalogue-blog-cards.html index 35c7ad7..06d99d5 100644 --- a/views/partials/catalogue-blog-cards.html +++ b/views/partials/catalogue-blog-cards.html @@ -1,10 +1,10 @@ {{- range .BlogPages }}
- +

{{ .ShortDescription }}

diff --git a/views/partials/general-page-bottom-embeds.html b/views/partials/general-page-bottom-embeds.html new file mode 100644 index 0000000..4c36b26 --- /dev/null +++ b/views/partials/general-page-bottom-embeds.html @@ -0,0 +1 @@ +{{ block "bottom-embeds" . }}{{ end }} \ No newline at end of file diff --git a/views/partials/general-page-header.html b/views/partials/general-page-header.html index 66cfecf..63803bd 100644 --- a/views/partials/general-page-header.html +++ b/views/partials/general-page-header.html @@ -1,6 +1,6 @@
- +

//

{{ .Title }}

{{ .PublishedDate }}

diff --git a/views/partials/general-page-top-embeds.html b/views/partials/general-page-top-embeds.html new file mode 100644 index 0000000..1407b50 --- /dev/null +++ b/views/partials/general-page-top-embeds.html @@ -0,0 +1 @@ +{{ block "top-embeds" . }}{{ end }} \ No newline at end of file -- cgit v1.3.1+13