import React from 'react' import { TableColumnItem, useTableContext } from './table-context' interface Props { columns: Array row: any rowIndex: number emptyText: string onCellClick: (cell: any, rowIndex: number, colunmIndex: number) => void } export type cellActions = { remove: () => void } export type cellData = { row: number column: number rowValue: any } const TableCell: React.FC = ({ columns, row, rowIndex, emptyText, onCellClick }) => { const { removeRow } = useTableContext() const actions: cellActions = { remove: () => { removeRow && removeRow(rowIndex) } } /* eslint-disable react/jsx-no-useless-fragment */ return ( <> {columns.map((column, index) => { const data: cellData = { row: rowIndex, column: index, rowValue: row } const rowLabel = row[column.value] const cellValue = !rowLabel ? emptyText : typeof rowLabel === 'function' ? rowLabel(actions, data) : rowLabel return ( onCellClick(cellValue, rowIndex, index)} >
{cellValue}
) })} ) /* eslint-enable */ } export default React.memo(TableCell)