import { ColumnDef, CellContext } from '@tanstack/react-table'; import { UISrefProps } from '@uirouter/react'; import { Link } from '@@/Link'; import { DefaultType } from './types'; import { defaultGetRowId } from './defaultGetRowId'; /** * @deprecated Use `buildNameColumnFromObject` instead * @todo Replace `buildNameColumnFromObject` and rename to `buildNameColumn` */ export function buildNameColumn( nameKey: keyof T, path: string, dataCy: string, idParam = 'id', idGetter: (row: T) => string = defaultGetRowId ): ColumnDef { return buildNameColumnFromObject({ nameKey, path, dataCy, idParam, idGetter, }); } export function buildNameColumnFromObject({ nameKey, path, dataCy, idParam = 'id', idGetter = defaultGetRowId, linkParamsBuilder = () => ({}), }: { nameKey: keyof T; path: string; dataCy: string; idParam?: string; idGetter?: (row: T) => string; linkParamsBuilder?: (row: T) => UISrefProps['params']; }): ColumnDef { const cell = createCell(); return { header: 'Name', accessorKey: nameKey, id: 'name', cell, enableSorting: true, enableHiding: false, }; function createCell() { return function NameCell({ renderValue, row }: CellContext) { const name = renderValue() || ''; if (typeof name !== 'string') { return null; } return ( {name} ); }; } }