import { ComponentType } from 'react'; import { FieldState } from 'formstate'; import { TableCell } from '@servicetitan/design-system'; import { TableCellProps } from '../table'; import { PossibleFormState } from '../table-state'; export interface EditorProps extends TableCellProps { fieldState: FieldState; formState: PossibleFormState; } interface GetEditableCellParams { viewer?: ComponentType>; editor: ComponentType>; } export function getEditableCell({ viewer: Viewer = TableCell, editor: Editor, }: GetEditableCellParams) { return (props: TableCellProps) => { const { tableState, field, dataItem, rowType } = props; if (rowType !== 'data') { return ; } const editingForm = tableState?.dataSource?.idSelector && tableState.inEdit.get(tableState.dataSource.idSelector(dataItem)); if (field && editingForm && (!editingForm.field || editingForm.field === field)) { return ( ); } return ; }; }