--- /dev/null
+{#
+/**
+ * @file
+ * Theme override for displaying a view as a table.
+ *
+ * Available variables:
+ * - attributes: Remaining HTML attributes for the element.
+ * - class: HTML classes that can be used to style contextually through CSS.
+ * - title : The title of this group of rows.
+ * - header: The table header columns.
+ * - attributes: Remaining HTML attributes for the element.
+ * - content: HTML classes to apply to each header cell, indexed by
+ * the header's key.
+ * - default_classes: A flag indicating whether default classes should be
+ * used.
+ * - caption_needed: Is the caption tag needed.
+ * - caption: The caption for this table.
+ * - accessibility_description: Extended description for the table details.
+ * - accessibility_summary: Summary for the table details.
+ * - rows: Table row items. Rows are keyed by row number.
+ * - attributes: HTML classes to apply to each row.
+ * - columns: Row column items. Columns are keyed by column number.
+ * - attributes: HTML classes to apply to each column.
+ * - content: The column content.
+ * - default_classes: A flag indicating whether default classes should be
+ * used.
+ * - responsive: A flag indicating whether table is responsive.
+ * - sticky: A flag indicating whether table header is sticky.
+ *
+ * @see template_preprocess_views_view_table()
+ */
+#}
+{%
+ set classes = [
+ 'cols-' ~ header|length,
+ responsive ? 'responsive-enabled',
+ sticky ? 'sticky-enabled',
+ ]
+%}
+<table{{ attributes.addClass(classes) }}>
+ {% if caption_needed %}
+ <caption>
+ {% if caption %}
+ {{ caption }}
+ {% else %}
+ {{ title }}
+ {% endif %}
+ {% if (summary is not empty) or (description is not empty) %}
+ <details>
+ {% if summary is not empty %}
+ <summary>{{ summary }}</summary>
+ {% endif %}
+ {% if description is not empty %}
+ {{ description }}
+ {% endif %}
+ </details>
+ {% endif %}
+ </caption>
+ {% endif %}
+ {% if header %}
+ <thead>
+ <tr>
+ {% for key, column in header %}
+ {% if column.default_classes %}
+ {%
+ set column_classes = [
+ 'views-field',
+ 'views-field-' ~ fields[key],
+ ]
+ %}
+ {% endif %}
+ <th{{ column.attributes.addClass(column_classes).setAttribute('scope', 'col') }}>
+ {%- if column.wrapper_element -%}
+ <{{ column.wrapper_element }}>
+ {%- if column.url -%}
+ <a href="{{ column.url }}" title="{{ column.title }}">{{ column.content }}{{ column.sort_indicator }}</a>
+ {%- else -%}
+ {{ column.content }}{{ column.sort_indicator }}
+ {%- endif -%}
+ </{{ column.wrapper_element }}>
+ {%- else -%}
+ {%- if column.url -%}
+ <a href="{{ column.url }}" title="{{ column.title }}">{{ column.content }}{{ column.sort_indicator }}</a>
+ {%- else -%}
+ {{- column.content }}{{ column.sort_indicator }}
+ {%- endif -%}
+ {%- endif -%}
+ </th>
+ {% endfor %}
+ </tr>
+ </thead>
+ {% endif %}
+ <tbody>
+ {% for row in rows %}
+ <tr{{ row.attributes }}>
+ {% for key, column in row.columns %}
+ {% if column.default_classes %}
+ {%
+ set column_classes = [
+ 'views-field'
+ ]
+ %}
+ {% for field in column.fields %}
+ {% set column_classes = column_classes|merge(['views-field-' ~ field]) %}
+ {% endfor %}
+ {% endif %}
+ <td{{ column.attributes.addClass(column_classes) }}>
+ {%- if column.wrapper_element -%}
+ <{{ column.wrapper_element }}>
+ {% for content in column.content %}
+ {{ content.separator }}{{ content.field_output }}
+ {% endfor %}
+ </{{ column.wrapper_element }}>
+ {%- else -%}
+ {% for content in column.content %}
+ {{- content.separator }}{{ content.field_output -}}
+ {% endfor %}
+ {%- endif %}
+ </td>
+ {% endfor %}
+ </tr>
+ {% endfor %}
+ </tbody>
+</table>