{% load static components %} {# ─── USX Table ───────────────────────────────────────────────────────────────── #} {# #} {# Primary props (same contract as React Table): #} {# columns, data, primaryKey, caption, striped, borderless, compact, #} {# scrollable, height, responsive, stickyHeader, stickyFirstColumn, #} {# selectionMode, selectionPosition, select, disabled, onClickRow, #} {# rowDetails, showFooter, paginate, placeholder, loading, className #} {# #} {# Django-only props (pre-computed by view via table_helper): #} {# header_rows — output of build_header_rows(columns) #} {# leaf_columns — output of get_leaf_cols(columns) #} {# total_cols — output of total_col_count(...) #} {# total_depth — len(header_rows) #} {# sort — {'key': ..., 'direction': 'asc'|'desc'|None} #} {# groups — output of group_data() when groupBy is set #} {# footerValues — output of compute_footer() when showFooter is True #} {# expandedRows — list of primary-key values with detail open #} {# rowDetailTemplate — path to a partial template for detail content #} {# rowDetailField — row dict key whose value is used as detail content #} {# rowUrlField — row dict key whose value is the navigation URL #} {# paginateUrlPrefix — URL prefix for pagination links (default '?page=') #} {# pagination — {'current_page', 'total_pages', 'total', 'page_size'} #} {# ─────────────────────────────────────────────────────────────────────────── #} {# ── Scrollable wrapper ──────────────────────────────────────────────────── #} {% if scrollable|default:False or height %}