[damned-lies/bootstrap-5: 7/7] feat: user menu on small screens
- From: Guillaume Bernard <gbernard src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [damned-lies/bootstrap-5: 7/7] feat: user menu on small screens
- Date: Thu, 6 Oct 2022 08:28:14 +0000 (UTC)
commit 78d22c96363f35cc6ef8dbc308b0ab25619c18be
Author: Guillaume Bernard <associations guillaume-bernard fr>
Date: Thu Oct 6 09:54:33 2022 +0200
feat: user menu on small screens
people/templatetags/people.py | 4 +-
templates/base.html | 79 +++++++++-------------
templates/login/login_user_menu_large_screens.html | 17 +++++
templates/login/login_user_menu_small_screens.html | 18 +++++
templates/login/login_usermenu.html | 35 +++++-----
5 files changed, 89 insertions(+), 64 deletions(-)
---
diff --git a/people/templatetags/people.py b/people/templatetags/people.py
index ec2bcfa9..340f841b 100644
--- a/people/templatetags/people.py
+++ b/people/templatetags/people.py
@@ -31,13 +31,13 @@ def people_image(person):
qs=urlencode([("s", "80"), ("d", "identicon"), ("r", "g")]),
)
tag = format_html(
- '<img class="rounded-circle avatar" src="{url}" alt="{alt}" crossorigin="anonymous">',
+ '<img class="rounded-circle" src="{url}" alt="{alt}" crossorigin="anonymous">',
url=url,
alt=_("avatar icon"),
)
elif person and person.image:
tag = format_html(
- '<img class="rounded-circle avatar" src="{}" alt="{}" onerror="this.onerror = null;
this.src=\'{}\'">',
+ '<img class="rounded-circle" src="{}" alt="{}" onerror="this.onerror = null; this.src=\'{}\'">',
person.image,
person.name,
nobody,
diff --git a/templates/base.html b/templates/base.html
index 072fb0d5..9bcec11a 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -40,36 +40,52 @@
<a class="gnome-navbar-brand" title="{% trans "Back to Damned Lies home page" %}" href="/">
<img height="40" src="{% static 'img/gnome-logo.svg' %}" alt="GNOME − Damned Lies">
</a>
- <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
- data-bs-target="#navbar-wrapper-dl-applications"
aria-controls="navbar-wrapper-dl-applications"
- aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
- <div id="navbar-wrapper-dl-applications" class="collapse navbar-collapse my-1 my-sm-0 my-md-0
my-lg-0 my-xl-0">
+
+ <!--
+ On <= medium screens, collapse applications but display
+ the connected user avatar before the collapse button
+ -->
+ <div class="navbar navbar-right d-flex no-padding d-block d-lg-none d-xl-none">
+ <!-- Only logo visible to open popup -->
+ <ul class="list-unstyled d-none d-sm-block d-md-block my-0">
+ <li class="nav-item">
+ {% include "login/login_user_menu_small_screens.html" %}
+ </li>
+ </ul>
+ <button class="navbar-toggler ms-2" type="button" data-bs-toggle="collapse"
+ data-bs-target="#navbar-wrapper-dl-applications"
aria-controls="navbar-wrapper-dl-applications"
+ aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ </div>
+
+ <!-- Django application names -->
+ <div id="navbar-wrapper-dl-applications"
+ class="collapse navbar-collapse my-1 my-sm-0 my-md-0 my-lg-0 my-xl-0">
<ul class="nav navbar-nav">
<li class="nav-item">
- <a class="nav-link text-white nav-link-dl-app {% if pageSection == "teams" %}
active{% endif %}"
+ <a class="nav-link text-white ps-sm-2 ps-md-2 {% if pageSection == "teams" %}
active{% endif %}"
{% if pageSection == "teams" %}aria-current="page"{% endif %}
href="{% url 'teams' %}">
<span>{% trans "Teams" %}</span>
</a>
</li>
<li class="nav-item">
- <a class="nav-link text-white nav-link-dl-app {% if pageSection == "languages" %}
active{% endif %}"
+ <a class="nav-link text-white ps-sm-2 ps-md-2 {% if pageSection == "languages" %}
active{% endif %}"
{% if pageSection == "languages" %}aria-current="page"{% endif %}
href="{% url 'languages' %}">
<span>{% trans "Languages" %}</span>
</a>
</li>
<li class="nav-item">
- <a class="nav-link text-white nav-link-dl-app {% if pageSection == "releases" %}
active{% endif %}"
+ <a class="nav-link text-white ps-sm-2 ps-md-2 {% if pageSection == "releases" %}
active{% endif %}"
{% if pageSection == "releases" %}aria-current="page"{% endif %}
href="{% url 'releases' %}">
<span>{% trans "Release sets" %}</span>
</a>
</li>
<li class="nav-item">
- <a class="nav-link text-white nav-link-dl-app {% if pageSection == "module" %}
active{% endif %}"
+ <a class="nav-link text-white ps-sm-2 ps-md-2 {% if pageSection == "module" %}
active{% endif %}"
{% if pageSection == "module" %}aria-current="page"{% endif %}
href="{% url 'modules' %}">
<span>{% trans "Modules" %}</span>
@@ -77,43 +93,14 @@
</li>
</ul>
</div>
- <div id="navbar-user-profile-and-login-dropdown" class="navbar navbar-right no-padding">
- <!-- Only logo visible to open popup -->
- <ul class="navbar-nav d-block d-sm-none">
- <li class="nav-item dropdown">
- {% if user.is_authenticated %}
- <a id="navbar-user-menu" href="#" class="nav-link dropdown-toggle"
- role="button" data-bs-toggle="dropdown" aria-expanded="false">
- {{ user.person|people_image }}
- </a>
- {% else %}
- <a id="navbar-user-menu" href="#" class="nav-link dropdown-toggle"
- role="button" data-bs-toggle="dropdown" aria-expanded="false">
- <img class="rounded-circle" src="{% static 'img/avatar-default.svg' %}"
- alt="GNOME - Damned Lies">
- </a>
- {% endif %}
- </li>
- </ul>
+
+ <!-- On >= large screens, shows a ”Log In” button or an avatar of the connected user -->
+ <div id="navbar-user-profile-and-login-dropdown"
+ class="navbar navbar-right no-padding d-none d-lg-block d-xl-block">
<!-- Login visible to open popup -->
- <ul class="navbar-nav d-none d-sm-block">
- <li class="nav-item">
- {% if user.is_authenticated %}
- <a id="navbar-user-menu" href="#"
- class="nav-link px-0 py-0 avatar" role="button" data-bs-toggle="dropdown"
- aria-expanded="false">
- {{ user.person|people_image }}
- </a>
- {% else %}
- <a id="navbar-user-menu" href="#"
- class="nav-link nav-link-dl-app dropdown-toggle text-white"
- role="button" data-bs-toggle="dropdown" aria-expanded="false">
- {% trans "Log in" %}
- </a>
- {% endif %}
- <div id="navbar-user-menu-dropdown" class="dropdown-menu dropdown-menu-end"
aria-labelledby="navbar-user-menu">
- {% include "login/login_usermenu.html" %}
- </div>
+ <ul class="navbar-nav d-none d-sm-block d-md-block">
+ <li class="nav-item">
+ {% include "login/login_user_menu_large_screens.html" %}
</li>
</ul>
</div>
diff --git a/templates/login/login_user_menu_large_screens.html
b/templates/login/login_user_menu_large_screens.html
new file mode 100644
index 00000000..ed485fc9
--- /dev/null
+++ b/templates/login/login_user_menu_large_screens.html
@@ -0,0 +1,17 @@
+{% load people %}
+
+{% if user.is_authenticated %}
+ <a id="navbar-user-menu" href="#"
+ class="nav-link px-0 py-0 avatar" role="button" data-bs-toggle="dropdown"
+ aria-expanded="false">
+ {{ user.person|people_image }}
+ </a>
+{% else %}
+ <a id="navbar-user-menu" href="#"
+ class="nav-link nav-link-dl-app dropdown-toggle text-white"
+ role="button" data-bs-toggle="dropdown" aria-expanded="false">
+ {% trans "Log in" %}
+ </a>
+{% endif %}
+
+{% include "login/login_usermenu.html" %}
diff --git a/templates/login/login_user_menu_small_screens.html
b/templates/login/login_user_menu_small_screens.html
new file mode 100644
index 00000000..89e8348a
--- /dev/null
+++ b/templates/login/login_user_menu_small_screens.html
@@ -0,0 +1,18 @@
+{% load people %}
+
+{% if user.is_authenticated %}
+ <a id="navbar-user-menu" href="#"
+ class="nav-link px-0 py-0 avatar"
+ role="button" data-bs-toggle="dropdown" aria-expanded="false">
+ {{ user.person|people_image }}
+ </a>
+{% else %}
+ <a id="navbar-user-menu" href="#"
+ class="nav-link nav-link-dl-app dropdown-toggle text-white"
+ role="button" data-bs-toggle="dropdown" aria-expanded="false">
+ <img class="rounded-circle" src="{% static 'img/avatar-default.svg' %}"
+ alt="GNOME - Damned Lies">
+ </a>
+{% endif %}
+
+{% include "login/login_usermenu.html" %}
diff --git a/templates/login/login_usermenu.html b/templates/login/login_usermenu.html
index b501c663..c278262e 100644
--- a/templates/login/login_usermenu.html
+++ b/templates/login/login_usermenu.html
@@ -1,18 +1,21 @@
{% load people %}
-{% if user.is_authenticated %}
- <a class="dropdown-item" href="{% url 'person_detail_username' user.username %}">
- {% trans 'User Settings' %}
- </a>
- <div class="dropdown-divider"></div>
- <form class="py-3 px-3" action="{% url 'logout' %}" method="post" class="form">
- {% csrf_token %}
- <input type="hidden" name="logout" value="1">
- <input type="hidden" name="next" value="{{ request.path }}">
- <div class="form-group">
- <button type="submit" class="btn btn-danger w-100">{% trans 'Log out' %}</button>
- </div>
- </form>
-{% else %}
- {% include "login/login_popup_form.html" %}
-{% endif %}
+<div id="navbar-user-menu-dropdown" class="dropdown-menu dropdown-menu-end"
+ aria-labelledby="navbar-user-menu">
+ {% if user.is_authenticated %}
+ <a class="dropdown-item" href="{% url 'person_detail_username' user.username %}">
+ {% trans 'User Settings' %}
+ </a>
+ <div class="dropdown-divider"></div>
+ <form class="py-3 px-3" action="{% url 'logout' %}" method="post" class="form">
+ {% csrf_token %}
+ <input type="hidden" name="logout" value="1">
+ <input type="hidden" name="next" value="{{ request.path }}">
+ <div class="form-group">
+ <button type="submit" class="btn btn-danger w-100">{% trans 'Log out' %}</button>
+ </div>
+ </form>
+ {% else %}
+ {% include "login/login_popup_form.html" %}
+ {% endif %}
+</div>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]