From 496a07cfe3769a63cefe05cf3fcbe1569cd8b2c1 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sat, 16 Jan 2021 15:20:13 +0100 Subject: [PATCH] Add support for (dynamic) menu item badges --- aleksis/core/static/style.scss | 5 ++--- aleksis/core/templates/core/partials/sidenav.html | 14 +++++++++++++- aleksis/core/templatetags/data_helpers.py | 11 +++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/aleksis/core/static/style.scss b/aleksis/core/static/style.scss index a7b292996..6455b554f 100644 --- a/aleksis/core/static/style.scss +++ b/aleksis/core/static/style.scss @@ -136,9 +136,8 @@ ul.sidenav li.logo > a:hover { background-color: lighten($primary-color, 5%); } -li.active > a > .sidenav-badge { - background-color: whitesmoke !important; - color: $primary-color !important; +.sidenav-badge { + min-width: 2rem!important; } .sidenav li.search { diff --git a/aleksis/core/templates/core/partials/sidenav.html b/aleksis/core/templates/core/partials/sidenav.html index 4c782285f..54df4fe73 100644 --- a/aleksis/core/templates/core/partials/sidenav.html +++ b/aleksis/core/templates/core/partials/sidenav.html @@ -1,6 +1,6 @@ {# -*- engine:django -*- #} -{% load menu_generator %} +{% load menu_generator data_helpers %} {% get_menu "NAV_MENU_CORE" as core_menu %} @@ -16,6 +16,10 @@ <i class="material-icons">{{ item.icon }}</i> {% endif %} {{ item.name }} + {% build_badge item as badge %} + {% if badge %} + <span class="new badge sidenav-badge"> {{ badge }}</span> + {% endif %} </a> </li> {% endif %} @@ -28,6 +32,10 @@ <i class="material-icons">{{ item.icon }}</i> {% endif %} {{ item.name }} + {% build_badge item as badge %} + {% if badge %} + <span class="new badge sidenav-badge"> {{ badge }}</span> + {% endif %} </a> <div class="collapsible-body"> <ul> @@ -40,6 +48,10 @@ <i class="material-icons">{{ menu.icon }}</i> {% endif %} {{ menu.name }} + {% build_badge item as badge %} + {% if badge %} + <span class="new badge sidenav-badge"> {{ badge }}</span> + {% endif %} </a> </li> {% endfor %} diff --git a/aleksis/core/templatetags/data_helpers.py b/aleksis/core/templatetags/data_helpers.py index ab2309f26..5e263ba37 100644 --- a/aleksis/core/templatetags/data_helpers.py +++ b/aleksis/core/templatetags/data_helpers.py @@ -51,3 +51,14 @@ def parse_json(value: Optional[str] = None) -> Union[dict, None]: if not value: return None return json.loads(value) + + +@register.simple_tag(takes_context=True) +def build_badge(context: dict, item: dict) -> Any: + """Get menu badge content from django-menu-generator dict.""" + request = context["request"] + badge = item.get("badge") + if callable(badge): + return badge(request) + else: + return badge -- GitLab