import { classNames } from '@standardnotes/snjs' import { useState } from 'react' import Icon from '../Icon/Icon' import { Table, TableRow } from './CommonTypes' function TableRow({ row, index: rowIndex, canSelectRows, handleRowClick, handleRowContextMenu, handleRowDoubleClick, }: { row: TableRow index: number canSelectRows: Table['canSelectRows'] handleRowClick: Table['handleRowClick'] handleRowContextMenu: Table['handleRowContextMenu'] handleRowDoubleClick: Table['handleRowDoubleClick'] }) { const [isHovered, setIsHovered] = useState(false) const visibleCells = row.cells.filter((cell) => !cell.hidden) return (
{ setIsHovered(true) }} onMouseLeave={() => { setIsHovered(false) }} onClick={handleRowClick(row.id)} onDoubleClick={handleRowDoubleClick(row.id)} onContextMenu={handleRowContextMenu(row.id)} > {visibleCells.map((cell, index, array) => { return (
{cell.render} {row.rowActions && index === array.length - 1 && (
{row.rowActions}
)}
) })}
) } function Table({ table }: { table: Table }) { const { headers, rows, colCount, rowCount, handleRowClick, handleRowContextMenu, handleRowDoubleClick, selectedRows, selectionActions, canSelectRows, showSelectionActions, } = table return (
{showSelectionActions && selectedRows.length >= 2 && (
{selectedRows.length} selected {selectedRows.length > 0 && selectionActions}
)}
{headers .filter((header) => !header.hidden) .map((header, index) => { return (
{header.name} {header.isSorting && ( )}
) })}
{rows.map((row, index) => ( ))}
) } export default Table