{#
/* cspell:ignore syncscroll */
/**
 * @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.
 * - summary_element: A render array with table summary information (if any).
 *
 * @see template_preprocess_views_view_table()
 */
#}
{%
  set classes = [
    'views-table',
    'views-view-table',
    'cols-' ~ header|length,
    responsive ? 'responsive-enabled',
    sticky ? 'sticky-enabled position-sticky',
  ]
%}

{% import _self as macros %}

{% macro table_header(header, fields, gin_is_sticky) %}
  <thead>
    <tr>
      {% for key, column in header %}
        {% if column.default_classes %}
          {%
            set column_classes = [
              'views-field',
              'views-field-' ~ fields[key],
              'bulk-form' in fields[key] ? 'gin--sticky-bulk-select',
            ]
          %}
        {% endif %}
        <th{{ column.attributes.addClass(column_classes).setAttribute('scope', 'col') }}>
          {% if gin_is_sticky and fields[key] is defined and 'bulk-form' in fields[key] %}
            <input
              type="checkbox"
              class="form-checkbox form-boolean form-boolean--type-checkbox"
              title="{{ 'Select all rows in this table'|t }}"
            />
          {% endif %}
          {%- if column.wrapper_element -%}
            <{{ column.wrapper_element }}>
              {%- if column.url -%}
                <a href="{{ column.url }}" title="{{ column.title }}" rel="nofollow">{{ 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 }}" rel="nofollow">{{ column.content }}{{ column.sort_indicator }}</a>
            {%- else -%}
              {{- column.content }}{{ column.sort_indicator }}
            {%- endif -%}
          {%- endif -%}
        </th>
      {% endfor %}
    </tr>
  </thead>
{% endmacro %}

{% if header and sticky %}
  <table class="gin--sticky-table-header syncscroll" name="gin-sticky-header" hidden>
    {{ macros.table_header(header, fields, sticky) }}
  </table>
{% endif %}
<div class="gin-table-scroll-wrapper gin-horizontal-scroll-shadow syncscroll" name="gin-sticky-header">
  <table{{ attributes.addClass(classes) }}>
    {% if caption_needed %}
      <caption>
      {% if caption %}
        {{ caption }}
      {% else %}
        {{ title }}
      {% endif %}
      {% if (summary_element is not empty) %}
        {{ summary_element }}
      {% endif %}
      </caption>
    {% endif %}
    {% if header %}
      {{ macros.table_header(header, fields) }}
    {% 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>
</div>
