Version 1
[yaffs-website] / web / core / modules / system / templates / table.html.twig
1 {#
2 /**
3  * @file
4  * Default theme implementation to display a table.
5  *
6  * Available variables:
7  * - attributes: HTML attributes to apply to the <table> tag.
8  * - caption: A localized string for the <caption> tag.
9  * - colgroups: Column groups. Each group contains the following properties:
10  *   - attributes: HTML attributes to apply to the <col> tag.
11  *     Note: Drupal currently supports only one table header row, see
12  *     https://www.drupal.org/node/893530 and
13  *     http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_table/7#comment-5109.
14  * - header: Table header cells. Each cell contains the following properties:
15  *   - tag: The HTML tag name to use; either 'th' or 'td'.
16  *   - attributes: HTML attributes to apply to the tag.
17  *   - content: A localized string for the title of the column.
18  *   - field: Field name (required for column sorting).
19  *   - sort: Default sort order for this column ("asc" or "desc").
20  * - sticky: A flag indicating whether to use a "sticky" table header.
21  * - rows: Table rows. Each row contains the following properties:
22  *   - attributes: HTML attributes to apply to the <tr> tag.
23  *   - data: Table cells.
24  *   - no_striping: A flag indicating that the row should receive no
25  *     'even / odd' styling. Defaults to FALSE.
26  *   - cells: Table cells of the row. Each cell contains the following keys:
27  *     - tag: The HTML tag name to use; either 'th' or 'td'.
28  *     - attributes: Any HTML attributes, such as "colspan", to apply to the
29  *       table cell.
30  *     - content: The string to display in the table cell.
31  *     - active_table_sort: A boolean indicating whether the cell is the active
32          table sort.
33  * - footer: Table footer rows, in the same format as the rows variable.
34  * - empty: The message to display in an extra row if table does not have
35  *   any rows.
36  * - no_striping: A boolean indicating that the row should receive no striping.
37  * - header_columns: The number of columns in the header.
38  *
39  * @see template_preprocess_table()
40  *
41  * @ingroup themeable
42  */
43 #}
44 <table{{ attributes }}>
45   {% if caption %}
46     <caption>{{ caption }}</caption>
47   {% endif %}
48
49   {% for colgroup in colgroups %}
50     {% if colgroup.cols %}
51       <colgroup{{ colgroup.attributes }}>
52         {% for col in colgroup.cols %}
53           <col{{ col.attributes }} />
54         {% endfor %}
55       </colgroup>
56     {% else %}
57       <colgroup{{ colgroup.attributes }} />
58     {% endif %}
59   {% endfor %}
60
61   {% if header %}
62     <thead>
63       <tr>
64         {% for cell in header %}
65           <{{ cell.tag }}{{ cell.attributes }}>
66             {{- cell.content -}}
67           </{{ cell.tag }}>
68         {% endfor %}
69       </tr>
70     </thead>
71   {% endif %}
72
73   {% if rows %}
74     <tbody>
75       {% for row in rows %}
76         <tr{{ row.attributes }}>
77           {% for cell in row.cells %}
78             <{{ cell.tag }}{{ cell.attributes }}>
79               {{- cell.content -}}
80             </{{ cell.tag }}>
81           {% endfor %}
82         </tr>
83       {% endfor %}
84     </tbody>
85   {% elseif empty %}
86     <tbody>
87       <tr>
88         <td colspan="{{ header_columns }}">{{ empty }}</td>
89       </tr>
90     </tbody>
91   {% endif %}
92   {% if footer %}
93     <tfoot>
94       {% for row in footer %}
95         <tr{{ row.attributes }}>
96           {% for cell in row.cells %}
97             <{{ cell.tag }}{{ cell.attributes }}>
98               {{- cell.content -}}
99             </{{ cell.tag }}>
100           {% endfor %}
101         </tr>
102       {% endfor %}
103     </tfoot>
104   {% endif %}
105 </table>