import * as React from 'react'; import { StyleSheet, StyleProp, View, ViewStyle } from 'react-native'; import DataTableCell from './DataTableCell'; import DataTableHeader, { // eslint-disable-next-line @typescript-eslint/no-unused-vars DataTableHeader as _DataTableHeader, } from './DataTableHeader'; import DataTablePagination, { // eslint-disable-next-line @typescript-eslint/no-unused-vars DataTablePagination as _DataTablePagination, } from './DataTablePagination'; // eslint-disable-next-line @typescript-eslint/no-unused-vars import DataTableRow, { DataTableRow as _DataTableRow } from './DataTableRow'; import DataTableTitle, { // eslint-disable-next-line @typescript-eslint/no-unused-vars DataTableTitle as _DataTableTitle, } from './DataTableTitle'; export type Props = React.ComponentPropsWithRef & { /** * Content of the `DataTable`. */ children: React.ReactNode; style?: StyleProp; }; /** * Data tables allow displaying sets of data. * * ## Usage * ```js * import * as React from 'react'; * import { DataTable } from 'react-native-paper'; * * const MyComponent = () => { * const [page, setPage] = React.useState(0); * const [numberOfItemsPerPageList] = React.useState([2, 3, 4]); * const [itemsPerPage, onItemsPerPageChange] = React.useState( * numberOfItemsPerPageList[0] * ); * * const [items] = React.useState([ * { * key: 1, * name: 'Cupcake', * calories: 356, * fat: 16, * }, * { * key: 2, * name: 'Eclair', * calories: 262, * fat: 16, * }, * { * key: 3, * name: 'Frozen yogurt', * calories: 159, * fat: 6, * }, * { * key: 4, * name: 'Gingerbread', * calories: 305, * fat: 3.7, * }, * ]); * * const from = page * itemsPerPage; * const to = Math.min((page + 1) * itemsPerPage, items.length); * * React.useEffect(() => { * setPage(0); * }, [itemsPerPage]); * * return ( * * * Dessert * Calories * Fat * * * {items.slice(from, to).map((item) => ( * * {item.name} * {item.calories} * {item.fat} * * ))} * * setPage(page)} * label={`${from + 1}-${to} of ${items.length}`} * numberOfItemsPerPageList={numberOfItemsPerPageList} * numberOfItemsPerPage={itemsPerPage} * onItemsPerPageChange={onItemsPerPageChange} * showFastPaginationControls * selectPageDropdownLabel={'Rows per page'} * /> * * ); * }; * * export default MyComponent; * ``` */ const DataTable = ({ children, style, ...rest }: Props) => ( {children} ); // @component ./DataTableHeader.tsx DataTable.Header = DataTableHeader; // @component ./DataTableTitle.tsx DataTable.Title = DataTableTitle; // @component ./DataTableRow.tsx DataTable.Row = DataTableRow; // @component ./DataTableCell.tsx DataTable.Cell = DataTableCell; // @component ./DataTablePagination.tsx DataTable.Pagination = DataTablePagination; const styles = StyleSheet.create({ container: { width: '100%', }, }); export default DataTable;