{% if records %}
| {% for col in resource.table_columns %} | {% if col.is_sortable() %} {% set next_dir = 'desc' if (sort_by == col.get_key() and sort_dir == 'asc') else 'asc' %} {{ col.get_label() }} {% if sort_by == col.get_key() %} {% else %} {% endif %} {% else %} {{ col.get_label() }} {% endif %} | {% endfor %}Actions |
|---|---|---|
| {% for col in resource.table_columns %} |
{% set value = record | field_value(col.get_key()) %}
{% if col.__class__.__name__ == 'Image' %}
{% set _img_url = col.get_url(value) %}
{% if _img_url %}
|
{% endfor %}
{% set _all = resource.all_row_actions %}
{% set _show_inline = _all | selectattr('is_builtin') | list %}
{% set _overflow = _all | rejectattr('is_builtin') | list %}
{# ── shared style maps ──────────────────────────────── #}
{% set _icon_cls = {
'success': 'text-secondary-400 hover:text-green-600 hover:bg-green-50 dark:hover:bg-green-900/30 dark:hover:text-green-400',
'warning': 'text-secondary-400 hover:text-amber-600 hover:bg-amber-50 dark:hover:bg-amber-900/30 dark:hover:text-amber-400',
'danger': 'text-secondary-400 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-900/30 dark:hover:text-red-400',
'default': 'text-secondary-400 hover:text-primary-600 hover:bg-primary-50 dark:hover:bg-primary-900/30 dark:hover:text-primary-400',
} %}
{% set _menu_cls = {
'success': 'text-green-600 dark:text-green-400 hover:bg-green-50 dark:hover:bg-green-900/30',
'warning': 'text-amber-600 dark:text-amber-400 hover:bg-amber-50 dark:hover:bg-amber-900/30',
'danger': 'text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/30',
'default': 'text-secondary-700 dark:text-secondary-200 hover:bg-secondary-50 dark:hover:bg-secondary-700',
} %}
{# ── Inline actions ─────────────────────────────────── #}
{% for action in _show_inline %}
{% set _cls = _icon_cls.get(action.get_style(), _icon_cls['default']) %}
{% if action.is_builtin %}
{# Built-in: view → , edit → , delete → hx-delete #}
{% if action.key == '__view__' and has_perm(resource.slug + ':view') %}
{{ render_icon(action.get_icon()) }}
{% elif action.key == '__edit__' and has_perm(resource.slug + ':edit') %}
{{ render_icon(action.get_icon()) }}
{% elif action.key == '__delete__' and has_perm(resource.slug + ':delete') %}
{% endif %}
{% else %}
{# Custom action: data-action-trigger modal #}
{% if has_perm(resource.slug + ':action') %}
{% endif %}
{% endif %}
{% endfor %}
{# ── Overflow menu (⋮) ──────────────────────────────── #}
{# Build a list of overflow items the current user is allowed to see #}
{% set _visible_overflow = [] %}
{% for action in _overflow %}
{% if action.is_builtin %}
{% if (action.key == '__view__' and has_perm(resource.slug + ':view'))
or (action.key == '__edit__' and has_perm(resource.slug + ':edit'))
or (action.key == '__delete__' and has_perm(resource.slug + ':delete')) %}
{% set _ = _visible_overflow.append(action) %}
{% endif %}
{% elif has_perm(resource.slug + ':action') %}
{% set _ = _visible_overflow.append(action) %}
{% endif %}
{% endfor %}
{% if _visible_overflow %}
|
No results for "{{ search }}"
Try a different search term.
{% else %}No {{ resource.label_plural | lower }} yet
Create the first {{ resource.label | lower }} {% endif %}