openchurch_theme-3.0.0-alpha3/templates/misc/status-messages--toasts.html.twig
templates/misc/status-messages--toasts.html.twig
{#
/**
* @file
* Default theme implementation for status messages.
*
* Displays status, error, and warning messages, grouped by type.
*
* An invisible heading identifies the messages for assistive technology.
* Sighted users see a colored box. See http://www.w3.org/TR/WCAG-TECHS/H69.html
* for info.
*
* Add an ARIA label to the contentinfo area so that assistive technology
* user agents will better describe this landmark.
*
* Available variables:
* - message_list: List of messages to be displayed, grouped by type.
* - status_headings: List of all status types.
* - display: (optional) May have a value of 'status' or 'error' when only
* displaying messages of that specific type.
* - attributes: HTML attributes for the element, including:
* - class: HTML classes.
*
* @see template_preprocess_status_messages()
*
* @ingroup themeable
*/
#}
<div class="toast-wrapper" aria-live="polite" aria-atomic="true" data-drupal-messages>
{% for type, messages in message_list %}
{%
set classes = [
'toast',
'fade',
]
%}
{%
set heading = {
'status': 'Status message'|t,
'error': 'Error message'|t,
'warning': 'Warning message'|t,
'info': 'Informative message'|t,
}
%}
{%
set color = {
'status': '#28a745',
'warning': '#dc3545',
'error': '#ffc107',
'info': '#17a2b8',
}
%}
{%
set role = {
'status': 'status',
'warning': 'alert',
'error': 'alert',
'info': 'info',
}
%}
{%
set autohide = {
'status': 'true',
'warning': 'false',
'error': 'true',
'info': 'false',
}
%}
{% for message in messages %}
<!-- Then put toasts within -->
<div {{ attributes|without('role', 'aria-label').addClass(classes).setAttribute('role', role[type]).setAttribute('data-bs-autohide', autohide[type]) }} aria-live="assertive" aria-atomic="true" data-delay="10000">
<div class="toast-header">
<svg class="bd-placeholder-img rounded mr-2" width="20" height="20" xmlns="http://www.w3.org/2000/svg" preserveaspectratio="xMidYMid slice" focusable="false" role="img">
<rect {{ attributes.setAttribute('fill', color[type]) }} width="100%" height="100%"></rect>
</svg>
<strong class="mr-auto">{{ status_headings[type] }}</strong>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
{{ message }}
</div>
</div>
{% endfor %}
{% endfor %}
</div>
