expandable-rows-table.html.twig in JSON:API Extras 8.3
Same filename and directory in other branches
Theme override to display a table. The main difference between this template and the original table template is that here we are printing the last three columns of each row inside a secondary, collapsible row.
Available variables:
- attributes: HTML attributes to apply to the <table> tag.
- caption: A localized string for the <caption> tag.
- colgroups: Column groups. Each group contains the following properties:
- attributes: HTML attributes to apply to the <col> tag. Note: Drupal currently supports only one table header row, see https://www.drupal.org/node/893530 and http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_table....
- header: Table header cells. Each cell contains the following properties:
- tag: The HTML tag name to use; either 'th' or 'td'.
- attributes: HTML attributes to apply to the tag.
- content: A localized string for the title of the column.
- field: Field name (required for column sorting).
- sort: Default sort order for this column ("asc" or "desc").
- sticky: A flag indicating whether to use a "sticky" table header.
- rows: Table rows. Each row contains the following properties:
- attributes: HTML attributes to apply to the <tr> tag.
- data: Table cells.
- no_striping: A flag indicating that the row should receive no 'even / odd' styling. Defaults to FALSE.
- cells: Table cells of the row. Each cell contains the following keys:
- tag: The HTML tag name to use; either 'th' or 'td'.
- attributes: Any HTML attributes, such as "colspan", to apply to the table cell.
- content: The string to display in the table cell.
- active_table_sort: A boolean indicating whether the cell is the active table sort.
- footer: Table footer rows, in the same format as the rows variable.
- empty: The message to display in an extra row if table does not have any rows.
- no_striping: A boolean indicating that the row should receive no striping.
- header_columns: The number of columns in the header.
- toggler_text: Text of the link that shows/hides the colapsible row
See also
1 theme call to expandable-rows-table.html.twig
- JsonapiResourceConfigForm::buildOverridesForm in src/
Form/ JsonapiResourceConfigForm.php - Builds the part of the form that contains the overrides.
File
templates/expandable-rows-table.html.twigView source
- {#
- /**
- * @file
- * Theme override to display a table.
- * The main difference between this template and the original table template is that here
- * we are printing the last three columns of each row inside a secondary, collapsible row.
- *
- * Available variables:
- * - attributes: HTML attributes to apply to the <table> tag.
- * - caption: A localized string for the <caption> tag.
- * - colgroups: Column groups. Each group contains the following properties:
- * - attributes: HTML attributes to apply to the <col> tag.
- * Note: Drupal currently supports only one table header row, see
- * https://www.drupal.org/node/893530 and
- * http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_table/7#comment-5109.
- * - header: Table header cells. Each cell contains the following properties:
- * - tag: The HTML tag name to use; either 'th' or 'td'.
- * - attributes: HTML attributes to apply to the tag.
- * - content: A localized string for the title of the column.
- * - field: Field name (required for column sorting).
- * - sort: Default sort order for this column ("asc" or "desc").
- * - sticky: A flag indicating whether to use a "sticky" table header.
- * - rows: Table rows. Each row contains the following properties:
- * - attributes: HTML attributes to apply to the <tr> tag.
- * - data: Table cells.
- * - no_striping: A flag indicating that the row should receive no
- * 'even / odd' styling. Defaults to FALSE.
- * - cells: Table cells of the row. Each cell contains the following keys:
- * - tag: The HTML tag name to use; either 'th' or 'td'.
- * - attributes: Any HTML attributes, such as "colspan", to apply to the
- * table cell.
- * - content: The string to display in the table cell.
- * - active_table_sort: A boolean indicating whether the cell is the active
- table sort.
- * - footer: Table footer rows, in the same format as the rows variable.
- * - empty: The message to display in an extra row if table does not have
- * any rows.
- * - no_striping: A boolean indicating that the row should receive no striping.
- * - header_columns: The number of columns in the header.
- * - toggler_text: Text of the link that shows/hides the colapsible row
- *
- * @see template_preprocess_table()
- */
- #}
- <table{{ attributes }}>
- {% if caption %}
- <caption>{{ caption }}</caption>
- {% endif %}
-
- {% for colgroup in colgroups %}
- {% if colgroup.cols %}
- <colgroup{{ colgroup.attributes }}>
- {% for col in colgroup.cols %}
- <col{{ col.attributes }} />
- {% endfor %}
- </colgroup>
- {% else %}
- <colgroup{{ colgroup.attributes }} />
- {% endif %}
- {% endfor %}
-
- {% if header %}
- <thead>
- <tr>
- {% for cell in header %}
- {%
- set cell_classes = [
- cell.active_table_sort ? 'is-active',
- ]
- %}
- <{{ cell.tag }}{{ cell.attributes.addClass(cell_classes) }}>
- {{- cell.content -}}
- </{{ cell.tag }}>
- {% endfor %}
- </tr>
- </thead>
- {% endif %}
-
- {% if rows %}
- <tbody>
- {% for row in rows %}
- {%
- set row_classes = [
- not no_striping ? cycle(['odd', 'even'], loop.index0),
- ]
- %}
- <tr{{ row.attributes.addClass(row_classes) }}>
- {% for cell in row.cells %}
- {% if loop.index < row.cells|length - 3 %}
- <{{ cell.tag }}{{ cell.attributes }}>
- {{- cell.content -}}
- </{{ cell.tag }}>
- {% elseif loop.index == row.cells|length - 3 %}
- <{{ cell.tag }}{{ cell.attributes }}>
- <a class="toggle-expanded content-collapsed button button--small" data-open="adv-opt-{{ loop.parent.loop.index }}">
- <span></span>
- {{- cell.content -}}
- </a>
- </{{ cell.tag }}>
- {% endif %}
- {% endfor %}
- </tr>
- <tr {{ row.attributes.addClass(row_classes).addClass(row_classes).addClass('advanced-opts') }} id="adv-opt-{{ loop.index }}">
- {% for cell in row.cells %}
- {% if loop.index >= row.cells|length - 2 %}
- <{{ cell.tag }}{{ cell.attributes }}>
- {{- cell.content -}}
- </{{ cell.tag }}>
- {% endif %}
- {% endfor %}
- </tr>
- {% endfor %}
- </tbody>
- {% elseif empty %}
- <tbody>
- <tr class="odd">
- <td colspan="{{ header_columns }}" class="empty message">{{ empty }}</td>
- </tr>
- </tbody>
- {% endif %}
- {% if footer %}
- <tfoot>
- {% for row in footer %}
- <tr{{ row.attributes }}>
- {% for cell in row.cells %}
- <{{ cell.tag }}{{ cell.attributes }}>
- {{- cell.content -}}
- </{{ cell.tag }}>
- {% endfor %}
- </tr>
- {% endfor %}
- </tfoot>
- {% endif %}
- </table>