@crave/farmblocks-table
Version:
A component for rendering data tables.
25 lines • 905 B
JavaScript
import React, { useCallback } from "react";
import { TR, TD } from "../components.styled";
const defaultCellComponents = {};
const defaultPlaceholders = {};
export default (({
columns,
keyProp,
rowComponent: Row = TR,
cellComponents = defaultCellComponents,
placeholders = defaultPlaceholders
} = {}) => useCallback((row, index) => /*#__PURE__*/React.createElement(Row, {
key: row[keyProp] || index,
$rowData: row,
$rowIndex: index
}, columns.map((columnName, columnIndex) => {
const Cell = cellComponents[columnName] || cellComponents.$default || TD;
const content = row[columnName] || placeholders[columnName] || placeholders.$default;
return /*#__PURE__*/React.createElement(Cell, {
key: columnName,
$rowData: row,
$rowIndex: index,
$columnName: columnName,
$columnIndex: columnIndex
}, content);
})), [columns, keyProp, Row, cellComponents, placeholders]));