{% set header %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a header cell in table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a header cell in table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a header cell in table header',
header: true,
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row1 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row2 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row3 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set footer %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell in table footer.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell in table footer.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell in table footer.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% include '@bolt-components-table/table.twig' with {
header: {
content: header,
},
body: {
content: [
row1,
row2,
row3,
],
},
footer: {
content: footer,
},
caption: {
content: 'This is the table caption.',
},
} only %}
Prop Name | Description | Type | Default Value | Option(s) |
---|---|---|---|---|
attributes
|
A Drupal attributes object. Applies extra HTML attributes to the parent element. |
object
| — |
|
borderless
|
Removes all borders from the table. |
boolean
|
false
|
|
sticky_headers
|
Enables/disables sticky table headers. |
string
|
none
|
|
header
|
Generates a table head <thead> element. |
object
| — |
|
body
|
Generates a main table content <tbody> element. |
object
| — |
|
footer
|
Generates a table footer <tfoot> element. |
object
| — |
|
caption
|
Generates a table caption <caption> element. |
any
| — |
|
Prop Name | Description | Type | Default Value | Option(s) |
---|---|---|---|---|
attributes
|
A Drupal attributes object. Applies extra HTML attributes to the parent element. |
object
| — |
|
content
|
Generates a single table row <tr> element. Use table-cell.twig to render table cells inside the table row. |
object
| — |
|
Prop Name | Description | Type | Default Value | Option(s) |
---|---|---|---|---|
attributes
|
A Drupal attributes object. Applies extra HTML attributes to the parent element. |
object
| — |
|
content
|
Generates a table cell <td> element. To render a button which triggers expanding hidden rows, pass table-expand-button.twig as the content. To render a button which triggers sorting, pass table-sorting-button.twig as the content. |
any
| — |
|
header
|
Generates a table cell as a table header <th> element if set to true. <th> elements can be used in table head, table body, or table footer. |
boolean
|
false
|
|
filters
|
Generates space for a popover filter button. It is recommended to pass the Button element and Popover component here. |
object
| — |
|
npm install @bolt/components-table
This is a header cell in table header | This is a header cell in table header | This is a header cell in table header |
---|---|---|
This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell in table footer. | This is a regular cell in table footer. | This is a regular cell in table footer. |
This is a header cell in table header | This is a header cell in table header | This is a header cell in table header |
---|---|---|
This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell in table footer. | This is a regular cell in table footer. | This is a regular cell in table footer. |
{% set header %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a header cell in table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a header cell in table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a header cell in table header',
header: true,
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row1 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row2 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row3 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set footer %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell in table footer.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell in table footer.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell in table footer.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% include '@bolt-components-table/table.twig' with {
header: {
content: header,
},
body: {
content: [
row1,
row2,
row3,
],
},
footer: {
content: footer,
},
caption: {
content: 'This is the table caption.',
},
} only %}
header
prop to true
to create a table header cell.sticky_headers
prop on the table to make either top or side headers sticky. Sticky top headers are sticky when there is vertical scrolling within the table. Sticky side headers are sticky when there is horizontal scrolling within the table.Top table header | Top table header | Top table header |
---|---|---|
Side table header | This is a regular cell. | This is a regular cell. |
Side table header | This is a regular cell. | This is a regular cell. |
Side table header | This is a regular cell. | This is a regular cell. |
Side table header | This is a regular cell in table footer. | This is a regular cell in table footer. |
{% set header %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'Top table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'Top table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'Top table header',
header: true,
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row1 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'Side table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row2 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'Side table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row3 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'Side table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set footer %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'Side table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell in table footer.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell in table footer.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% include '@bolt-components-table/table.twig' with {
sticky_headers: 'side',
header: {
content: header,
},
body: {
content: [
row1,
row2,
row3,
],
},
footer: {
content: footer,
},
caption: {
content: 'This is the table caption.',
},
} only %}
borderless
prop to remove all borders.
This is a header cell in table header | This is a header cell in table header | This is a header cell in table header |
---|---|---|
This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. |
{% set header %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a header cell in table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a header cell in table header',
header: true,
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a header cell in table header',
header: true,
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row1 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row2 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% set row3 %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{% include '@bolt-components-table/table.twig' with {
borderless: true,
header: {
content: header,
},
body: {
content: [
row1,
row2,
row3,
],
},
} only %}
width
and min-width
have different effects on table column widths, experiment and pick one that works for a particular use case.u-bolt-block
utility class or inline style.250px wide column | 250px wide column | 250px wide column | 250px wide column |
---|---|---|---|
This is a regular cell. | This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. | This is a regular cell. |
15% wide column | 25% wide column | 45% wide column | 15% wide column |
---|---|---|---|
This is a regular cell. | This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. | This is a regular cell. |
15% wide column | 25% wide column | 45% wide column | 15% wide column |
---|---|---|---|
This is a regular cell. | This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. | This is a regular cell. |
This is a regular cell. | This is a regular cell. | This is a regular cell. | This is a regular cell. |
{# Use inline style to set a width on a table header cell #}
{% set header_250px %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: '250px wide column',
header: true,
attributes: {
style: 'width: 250px;',
},
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: '250px wide column',
header: true,
attributes: {
style: 'width: 250px;',
},
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: '250px wide column',
header: true,
attributes: {
style: 'width: 250px;',
},
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: '250px wide column',
header: true,
attributes: {
style: 'width: 250px;',
},
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{# Do not set widths for body row cells #}
{% set row %}
{% set cells %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% include '@bolt-components-table/table-cell.twig' with {
content: 'This is a regular cell.',
} only %}
{% endset %}
{% include '@bolt-components-table/table-row.twig' with {
content: cells,
} only %}
{% endset %}
{# Change the table component's container to block display to render a full width table #}
{% include '@bolt-components-table/table.twig' with {
header: {
content: header_percent,
},
body: {
content: [
row,
],
},
attributes: {
class: 'u-bolt-block',
},
} only %}