{% import "_macros.html" as m with context %} {% macro select_all(which, root, scope) -%} {%- endmacro %} {% set params = result.params %} {% set hx = 'hx-target="closest .hx-list"' ~ (' hx-push-url="true"' if push_url else '') %} {% set selectable = push_url and (view.permitted_actions(request, bulk=True) or view.export_formats) %} {% set row_actions = view.permitted_actions(request, bulk=False) if push_url else () %} {% set actions = view.can_edit or view.can_delete or row_actions %} {% if filters is defined and htmx %} {% for filter in filters %}{{ m.filter_summary_span(filter, params.filter_value(filter.name), filter_options.get(filter.name, []), oob=True) }}{% endfor %} {{ m.filter_reset(params.filters, oob=True) }} {{ m.list_count(result.total, oob=True) }} {{ m.export_menu_items(view, base_url, params, oob=True) }} {% endif %} {% if push_url %}
{% endif %} {% if result.total == 0 %} {% set filtered = params.q or params.filters %} {% if filtered %} {{ m.empty_state('inbox', 'No ' ~ view.name_plural|lower ~ ' match these filters', action=m.button('Reset filters', 'secondary', href=base_url, attrs={'@click': '$event.preventDefault(); hxadminResetList()'}) if push_url else none, class='bg-surface') }} {% else %} {{ m.empty_state('inbox', 'No ' ~ view.name_plural|lower ~ ' yet', action=m.button('New ' ~ view.name|lower, 'primary', icon='plus', href=admin.url(request, '/' ~ view.identity ~ '/new')) if push_url and view.can_create else none, class='bg-surface') }} {% endif %} {% else %}
{% if selectable %} {% endif %} {% for obj in result.rows %}
{% if selectable %} {% endif %}
{% set primary = view.list_fields|selectattr('name', 'equalto', view.link_name)|first %} {% if view.can_view %} {{ m.cell(view, primary, view.cell(obj, primary.name), link=False) }} {% else %} {{ m.cell(view, primary, view.cell(obj, primary.name), link=False) }} {% endif %} {% if actions %}{{ m.row_menu(view, obj, row_actions, id_prefix='card-') }}{% endif %}
{% set details = view.list_fields|rejectattr('name', 'equalto', view.link_name)|list %} {% if details %}
{% for field in details[:3] %}
{{ field.label }}:
{{ m.cell(view, field, view.cell(obj, field.name), link=False) }}
{% endfor %}
{% endif %}
{% endfor %}
{% call m.card(padded=False, class='hidden max-h-[calc(100dvh-16rem)] overflow-auto sm:block') %} {% if selectable %}{% endif %} {% for field in view.list_fields %} {% endfor %} {% if view.stretch_name is none %}{% endif %} {% if actions %}{% endif %} {% for obj in result.rows %} {% if selectable %}{% endif %} {% for field in view.list_fields %} {% endfor %} {% if view.stretch_name is none %}{% endif %} {% if actions %} {% endif %} {% endfor %}
{{ select_all('desktop', 'table', 'input[name=pks]:not(:disabled)') }} {% if field.name in view.sort_names %} {% set active = params.sort == field.name %} {% set next_dir = 'desc' if active and params.dir == 'asc' else 'asc' %} {{ field.label }} {% if active %}{{ m.icon('arrow-up' if params.dir == 'asc' else 'arrow-down', 'size-3') }}{% endif %} {% else %} {{ field.label }} {% endif %}
{% if field.name == view.link_name and view.can_view %}{{ m.cell(view, field, view.cell(obj, field.name), link=False) }}{% else %}{{ m.cell(view, field, view.cell(obj, field.name), link=False) }}{% endif %}{{ m.row_menu(view, obj, row_actions) }}
{% endcall %} {% include "list/_pagination.html" %} {% if selectable %}{{ m.bulk_bar(view) }}{% endif %} {% endif %}