Skip to content

Commit aad7130

Browse files
committed
Try using toasts for temporary Django messages
Fixes #163
1 parent 603e4b0 commit aad7130

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed
Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,43 @@
1+
{% load ext_theme_tags %}
2+
13
{% comment %}
24
This template is used by the base template to provide a list of messages on
3-
the top of the page.
5+
the top of the page. If the message has a pk it is a persisent or sticky
6+
message level. Otherwise, Django default level notifications are treated as
7+
temporary messages, using SUI toast messages instead of block elements in the
8+
page content pane.
49
{% endcomment %}
510

611
{% if messages %}
712
{% for message in messages %}
13+
{# Message is sticky/persistent, show these like normal. #}
814
{% if message.pk %}
915
<div class="ui message {{ message.tags }}"
1016
data-bind="message: {dismiss_url: '{% url "message_mark_read" message.pk %}'}">
1117
<i class="fa-duotone fa-circle-xmark close icon"></i>
12-
<span>{{ message }}</span>
18+
{{ message }}
1319
</div>
1420
{% else %}
15-
<div class="ui message {{ message.tags }}"
16-
data-bind="message: {}">
17-
<i class="fa-duotone fa-circle-xmark close icon"></i>
18-
<span>{{ message }}</span>
19-
</div>
21+
{#
22+
This is a little bit of a hack, as toasts are purely JS and don't
23+
require an underlying element. Django messages uses "tags" to specify
24+
info/success/error classes on the messages, which just happen to align
25+
with SUI classes too.
26+
#}
27+
{% spaceless %}
28+
<div style="display: none;"
29+
data-bind="
30+
semanticui: {
31+
toast: {
32+
message: '{{ message|escapejs }}',
33+
showProgress: 'bottom',
34+
classProgress: 'primary',
35+
class: '{{ message.tags }}',
36+
displayTime: 7500,
37+
}
38+
}">
39+
</div>
40+
{% endspaceless %}
2041
{% endif %}
2142
{% endfor %}
2243
{% endif %}

0 commit comments

Comments
 (0)