@navikt/ds-react
Version:
React components from the Norwegian Labour and Welfare Administration.
78 lines (77 loc) • 2.2 kB
TypeScript
import React from "react";
import Body from "./Body";
import ColumnHeader from "./ColumnHeader";
import DataCell from "./DataCell";
import ExpandableRow from "./ExpandableRow";
import Header from "./Header";
import HeaderCell from "./HeaderCell";
import Row from "./Row";
import { SortState } from "./types";
export interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {
/**
* Changes padding around Cells
* @default "medium"
*/
size?: "large" | "medium" | "small";
/**
* Zebra striped table
* @default false
*/
zebraStripes?: boolean;
/**
* Makes the header sticky
* @default false
*/
stickyHeader?: boolean;
/**
* Sort state
*/
sort?: SortState;
/**
* Callback whens sort state changes
*/
onSortChange?: (sortKey: string) => void;
}
export interface TableType extends React.ForwardRefExoticComponent<TableProps & React.RefAttributes<HTMLTableElement>> {
Header: typeof Header;
Body: typeof Body;
Row: typeof Row;
DataCell: typeof DataCell;
HeaderCell: typeof HeaderCell;
ColumnHeader: typeof ColumnHeader;
ExpandableRow: typeof ExpandableRow;
}
/**
* A component that displays a table with headers and rows.
*
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/table)
* @see 🏷️ {@link TableProps}
*
* @example
* ```jsx
* <Table>
* <Table.Header>
* <Table.Row>
* <Table.HeaderCell scope="col">Navn</Table.HeaderCell>
* <Table.HeaderCell scope="col">Fødselsnr.</Table.HeaderCell>
* <Table.HeaderCell scope="col">Start</Table.HeaderCell>
* </Table.Row>
* </Table.Header>
* <Table.Body>
* {data.map(({ name, fnr, start }, i) => {
* return (
* <Table.Row key={i + fnr}>
* <Table.HeaderCell scope="row">{name}</Table.HeaderCell>
* <Table.DataCell>{fnr}</Table.DataCell>
* <Table.DataCell>
* {format(new Date(start), "dd.MM.yyyy")}
* </Table.DataCell>
* </Table.Row>
* );
* })}
* </Table.Body>
* </Table>
* ```
*/
export declare const Table: TableType;
export default Table;