Import
import { Table } from '@contentful/f36-components';// orimport { Table } from '@contentful/f36-table';
Examples
Basic usage
Dynamic creation
One very common use case for a table is that you will have a set of data and you would like to show a table row for each item in that set.
To achieve that result, you can iterate over the data and create Table.Row and Table.Cell for each item:
Props (API reference)
Open in StorybookTable
Name | Type | Default |
|---|---|---|
| className | string CSS class to be appended to the root element | |
| css | string number false true ComponentSelector Keyframes SerializedStyles ArrayInterpolation<undefined> ObjectInterpolation<undefined> (theme: any) => Interpolation<undefined> | |
| layout | "inline" "embedded" | inline |
| testId | string A [data-test-id] attribute used for testing purposes | cf-ui-table |
Table.Head
Name | Type | Default |
|---|---|---|
| children required | ReactNode | |
| className | string CSS class to be appended to the root element | |
| css | string number false true ComponentSelector Keyframes SerializedStyles ArrayInterpolation<undefined> ObjectInterpolation<undefined> (theme: any) => Interpolation<undefined> | |
| isSticky | false true | false |
| offsetTop | string number | |
| testId | string A [data-test-id] attribute used for testing purposes | cf-ui-table-head |
Table.Body
Name | Type | Default |
|---|---|---|
| children required | ReactElement<any, string | JSXElementConstructor<any>> | ReactElement<any, string | JSXElementConstructor<any>>[] | |
| className | string CSS class to be appended to the root element | |
| css | string number false true ComponentSelector Keyframes SerializedStyles ArrayInterpolation<undefined> ObjectInterpolation<undefined> (theme: any) => Interpolation<undefined> | |
| testId | string A [data-test-id] attribute used for testing purposes |
Table.Row
Name | Type | Default |
|---|---|---|
| children required | ReactNode | |
| className | string CSS class to be appended to the root element | |
| css | string number false true ComponentSelector Keyframes SerializedStyles ArrayInterpolation<undefined> ObjectInterpolation<undefined> (theme: any) => Interpolation<undefined> | |
| isSelected | false true | false |
| testId | string A [data-test-id] attribute used for testing purposes | cf-ui-table-row |
Table.Cell
Name | Type | Default |
|---|---|---|
| align | "left" "center" "right" | left |
| children | ReactNode | |
| className | string CSS class to be appended to the root element | |
| css | string number false true ComponentSelector Keyframes SerializedStyles ArrayInterpolation<undefined> ObjectInterpolation<undefined> (theme: any) => Interpolation<undefined> | |
| sorting | false true "asc" "desc" | false as TableCellSorting |
| testId | string A [data-test-id] attribute used for testing purposes | cf-ui-table-cell |
| width | string number |
Content guidelines
- Keep headers short
- Headers should be informative and descriptive
- Content in the table should be concise and scannable
Accessibility
- It will render tabular data using the native HTML element
tablewhich is recommended.