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: Function } export type cellData = { row: number, column: number, rowValue: any, } const TableCell: React.FC = React.memo(({ columns, row, rowIndex, emptyText, onCellClick, }) => { const { removeRow } = useTableContext() const actions: cellActions = { remove: () => { removeRow && removeRow(rowIndex) }, } 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}
) })} ) }) export default TableCell