summaryrefslogtreecommitdiff
path: root/views/pages/blog-catalogue.html
diff options
from:
to:
context:
space:
mode:
authorGravatar SayaAndy <saya.andy@posteo.com> 2025-08-31 18:12:51 +0700
committerGravatar SayaAndy <saya.andy@posteo.com> 2025-08-31 18:12:51 +0700
commit145e7e05f3aa6adbc71a0db5e7da160e626bacd3 (patch)
tree6864bf01bbeeeadbf06122b9ab5d993cffaf4062 /views/pages/blog-catalogue.html
parent5eb7b64b3da54e769cc6e52fd6918e4b465b8c0a (diff)
downloadweb-145e7e05f3aa6adbc71a0db5e7da160e626bacd3.tar.gz
web-145e7e05f3aa6adbc71a0db5e7da160e626bacd3.zip
feat: seamless single page application
Diffstat (limited to 'views/pages/blog-catalogue.html')
-rw-r--r--views/pages/blog-catalogue.html36
1 files changed, 21 insertions, 15 deletions
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);
-</script>
+ 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();
-<script>
- const tagsContainers = document.querySelectorAll('form.tags-list');
- tagsContainers.forEach(tagsContainer => {
- const checkboxes = tagsContainer.querySelectorAll('input[type="checkbox"]');
- anyChecked = false;
- checkboxes.forEach(checkbox => {
- anyChecked = checkbox.checked ? true : anyChecked;
- });
- if (!anyChecked) {
- const selectAllCheckbox = tagsContainer.querySelector('#tagsAllCheckbox');
- selectAllCheckbox.checked = true;
- selectAll();
+ const tagsContainers = document.querySelectorAll('form.tags-list');
+ tagsContainers.forEach(tagsContainer => {
+ const checkboxes = tagsContainer.querySelectorAll('input[type="checkbox"]');
+ anyChecked = false;
+ checkboxes.forEach(checkbox => {
+ anyChecked = checkbox.checked ? true : anyChecked;
+ });
+ if (!anyChecked) {
+ const selectAllCheckbox = tagsContainer.querySelector('#tagsAllCheckbox');
+ selectAllCheckbox.checked = true;
+ selectAll();
+ }
+ });
}
- });
+ }, {once: true});
</script>
{{ end }}