Commit f61a9c6a authored by Eduardo Silva's avatar Eduardo Silva
Browse files

ajustes na tag de link do menu e na tag de busca do header

parent 76cc7295
from django import template from django import template
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.html import format_html from django.utils.html import format_html
from django.template.base import Variable, VariableDoesNotExist from django.urls import reverse, NoReverseMatch
register = template.Library() register = template.Library()
...@@ -443,31 +443,48 @@ class BRFunctionItemNode(template.Node): ...@@ -443,31 +443,48 @@ class BRFunctionItemNode(template.Node):
# ========================= # =========================
@register.simple_tag(takes_context=True) @register.simple_tag(takes_context=True)
def br_header_search(context, placeholder="O que você procura?", icon_style=""): def br_header_search(context, placeholder="O que você procura?", icon_style="", action_url=None):
icon_style_attr = '' """
if icon_style: Renderiza um campo de busca genérico para o header.
resolved_style = resolve_variable(icon_style, context) - placeholder: texto exibido no input
icon_style_attr = format_html(' style="{}"', resolved_style) - icon_style: CSS inline opcional para o ícone
- action_url: para onde enviar a busca (se None, tenta resolver 'search', senão usa '/search/')
"""
# Resolve estilos
icon_style_attr = f' style="{icon_style}"' if icon_style else ""
# Resolve URL de destino da busca
if action_url is None:
try:
action_url = reverse("search")
except NoReverseMatch:
action_url = "/search/"
# Monta o HTML
search_html = format_html( search_html = format_html(
'''<div class="header-search"> '''
<div class="header-search">
<form method="get" action="{}">
<div class="br-input has-icon"> <div class="br-input has-icon">
<label for="searchbox-header">Texto da pesquisa</label> <label for="searchbox-header">Texto da pesquisa</label>
<input id="searchbox-header" type="text" placeholder="{}"/> <input id="searchbox-header" type="text" name="query" placeholder="{}"/>
<button class="br-button circle small" type="button" aria-label="Pesquisar"> <button class="br-button circle small" type="submit" aria-label="Pesquisar">
<i class="fas fa-search" aria-hidden="true"></i> <i class="fas fa-search" aria-hidden="true"></i>
</button> </button>
</div> </div>
</form>
<button class="br-button circle search-close ml-1" type="button" aria-label="Fechar Busca" data-dismiss="search"> <button class="br-button circle search-close ml-1" type="button" aria-label="Fechar Busca" data-dismiss="search">
<i class="fas fa-times" aria-hidden="true"{}></i> <i class="fas fa-times" aria-hidden="true"{}></i>
</button> </button>
</div>''', </div>
resolve_variable(placeholder, context), ''',
icon_style_attr action_url,
placeholder,
icon_style_attr,
) )
# A lógica continua a mesma: popular o contexto.
context['br_header_search_html'] = search_html return search_html
return ''
@register.simple_tag(takes_context=True) @register.simple_tag(takes_context=True)
def br_header_search_trigger(context, icon_style=""): def br_header_search_trigger(context, icon_style=""):
......
...@@ -504,12 +504,14 @@ class BRMenuLinkNode(template.Node): ...@@ -504,12 +504,14 @@ class BRMenuLinkNode(template.Node):
if self.icon_expr: if self.icon_expr:
try: try:
icon_class = self.icon_expr.resolve(context) resolved_icon = self.icon_expr.resolve(context)
if resolved_icon:
icon_class = f"fas fa-{resolved_icon}"
except template.VariableDoesNotExist: except template.VariableDoesNotExist:
pass pass
return format_html( return format_html(
'<a href="{}"><span class="mr-1">{}</span><i class="fas {}" aria-hidden="true"></i></a>', '<a href="{}"><span class="mr-1">{}</span><i class="{}" aria-hidden="true"></i></a>',
href, content, icon_class href, content, icon_class
) )
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment