Add menu highlighting logic via HX-Trigger, update templates for dynamic menu state management, and extend mixins to support menu highlighting.
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import json
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.template.loader import render_to_string
|
||||
from django_htmx.http import HttpResponseClientRedirect, HttpResponseClientRefresh
|
||||
@@ -33,6 +35,9 @@ class HTMXViewMixin:
|
||||
# Optional: automatically push URL on GET
|
||||
htmx_push_url = None
|
||||
|
||||
# Optional: name of the menu item to highlight
|
||||
menu_highlight = None
|
||||
|
||||
# Optional: trigger events after rendering
|
||||
htmx_trigger = None
|
||||
htmx_trigger_after_settle = None
|
||||
@@ -62,9 +67,21 @@ class HTMXViewMixin:
|
||||
response.headers["HX-Push-Url"] = self.htmx_push_url or request.get_full_path()
|
||||
|
||||
print(response.headers)
|
||||
|
||||
# Build HX-Trigger payload
|
||||
trigger_payload = {}
|
||||
|
||||
# 1. User-defined triggers
|
||||
if self.htmx_trigger:
|
||||
response.headers["HX-Trigger"] = self.htmx_trigger
|
||||
trigger_payload.update(json.loads(self.htmx_trigger))
|
||||
|
||||
# 2. Auto menu highlight trigger
|
||||
if self.menu_highlight:
|
||||
trigger_payload["menuHighlight"] = self.menu_highlight
|
||||
|
||||
# Emit HX-Trigger if anything is present
|
||||
if trigger_payload:
|
||||
response.headers["HX-Trigger"] = json.dumps(trigger_payload)
|
||||
|
||||
if self.htmx_trigger_after_settle:
|
||||
response.headers["HX-Trigger-After-Settle"] = self.htmx_trigger_after_settle
|
||||
|
||||
Reference in New Issue
Block a user