{% import "macros.html" as macros %} {% block title %}ePortal{% endblock %} {% block head_meta %} {% endblock %} {% block head_css %} {% endblock %} {% block head %} {% endblock %} {% block head_tail %} {% endblock %} {% block page_body %} {% block chrome %} {# position-relative makes this wrapper the skip link's containing block, so `top: 100%` lands it just under the navbar whatever the navbar's height is -- below the medium breakpoint an expanded menu is five times taller than a collapsed one. #}
{% endblock %} {#
wraps the content container rather than sitting inside it: the wide-table layout in crud/list.html closes the container mid-body to break a table out full width, which would close the landmark with it and leave the table outside. Flash messages are inside it too -- the skip link must not jump past an action's only feedback. #} {# tabindex="-1" so the skip link actually moves focus. Without it the fragment scrolls the page but leaves the caret in the navbar, and the next Tab walks back into the menu -- the bypass fails for exactly the user it exists for. #}
{% block messages %}{{ macros.flashed_messages() }}{% endblock %} {% block body %}{% endblock %}
{% endblock %} {% block page_modals %}{% endblock %} {% block tail_js %} {% endblock %} {% block tail %} {% endblock %}