{% extends "base.html" %} {% load common_extras %} {% block title %}Notifications · DemandTrail Messaging{% endblock %} {% block page_header %}

Notifications

{% endblock %} {% block content %}

{% if unread_notification_count %}{{ unread_notification_count }} unread{% else %}All caught up{% endif %}

{% comment %} The single preference issue #7 allows. It lives here rather than under /accounts/preferences/, which is another issue's stub ("#31 follow-up") — and when that page is built, adopting this control is a one-line {% include %}. {% endcomment %}
{% if unread_notification_count %} {% endif %}
{% comment %} Read state is a view — all, unread, read — so it is the page's underline tabs; the type is a list, so it is the Filter popover, several at once (HANDOFF §2.2). One form, so the two always travel together. {% endcomment %}
{% for value, label in read_states %} {% endfor %}
{% filter_popover groups=filter_groups onchange="reload()" noun="notification" %} {% filter_chips groups=filter_groups onchange="reload()" %}
{% comment %} The container re-fetches itself when anything is marked read, anywhere — including from the bell dropdown, since notificationsChanged bubbles to body. hx-include carries the two filter selects and the hidden page input from _history_list.html, so the refresh returns the list the reader was actually looking at rather than an unfiltered first page. That state lives here, which is why the write view does not try to rebuild it. {% endcomment %}
{% include "notifications/partials/_history_list.html" %}
{% endblock %}