Add HTMX trigger to close review modal after saving

This commit is contained in:
Ross
2025-10-26 21:06:34 +00:00
parent b26d31b216
commit 9c68c4ff1c
2 changed files with 25 additions and 2 deletions
+6 -2
View File
@@ -2998,8 +2998,12 @@ class GenericViewBase:
status=form.cleaned_data["status"], status=form.cleaned_data["status"],
comment=form.cleaned_data.get("comment", ""), comment=form.cleaned_data.get("comment", ""),
) )
# Render the updated review block and include an HX-Trigger so the client
return render(request, "generic/partials/question_review_block.html", {"review": review, "question": question, "app_name": self.app_name}) # can close the modal (HTMX will dispatch the event named below).
resp = render(request, "generic/partials/question_review_block.html", {"review": review, "question": question, "app_name": self.app_name})
# Trigger a client-side event; base template will listen for this and hide the modal
resp["HX-Trigger"] = "reviewSaved"
return resp
# Default: render the block (latest if exists, otherwise form) # Default: render the block (latest if exists, otherwise form)
if latest: if latest:
+19
View File
@@ -194,6 +194,25 @@
<li class="ms-3"><a class="text-muted" href="{% url 'about' %}">About</a></li> <li class="ms-3"><a class="text-muted" href="{% url 'about' %}">About</a></li>
</ul> </ul>
</footer> </footer>
<!-- Close review modal after HTMX reviewSaved trigger -->
<script>
document.body.addEventListener('reviewSaved', function () {
try {
var modalEl = document.getElementById('reviewModal');
if (!modalEl) return;
var modal = bootstrap.Modal.getInstance(modalEl);
if (modal) {
modal.hide();
} else {
// If no instance exists, create one and hide it
var m = new bootstrap.Modal(modalEl);
m.hide();
}
} catch (err) {
console.error('Error hiding review modal', err);
}
});
</script>
</body> </body>
</html> </html>