1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-19 05:19:39 +02:00
portainer/app/react/components/datatables/buildNameColumn.tsx
LP B 1900fb695d
Some checks failed
/ triage (push) Has been cancelled
ci / build_images (map[arch:amd64 platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:amd64 platform:windows version:1809]) (push) Has been cancelled
ci / build_images (map[arch:amd64 platform:windows version:ltsc2022]) (push) Has been cancelled
ci / build_images (map[arch:arm platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:arm64 platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:ppc64le platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:s390x platform:linux version:]) (push) Has been cancelled
Lint / Run linters (push) Has been cancelled
Test / test-client (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:linux]) (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:windows version:1809]) (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:windows version:ltsc2022]) (push) Has been cancelled
Test / test-server (map[arch:arm64 platform:linux]) (push) Has been cancelled
ci / build_manifests (push) Has been cancelled
fix(docker/container): use nodeName to build links to networks used by containers (#12002)
2024-07-17 14:40:05 +02:00

78 lines
1.7 KiB
TypeScript

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<T extends DefaultType>(
nameKey: keyof T,
path: string,
dataCy: string,
idParam = 'id',
idGetter: (row: T) => string = defaultGetRowId<T>
): ColumnDef<T> {
return buildNameColumnFromObject({
nameKey,
path,
dataCy,
idParam,
idGetter,
});
}
export function buildNameColumnFromObject<T extends DefaultType>({
nameKey,
path,
dataCy,
idParam = 'id',
idGetter = defaultGetRowId<T>,
linkParamsBuilder = () => ({}),
}: {
nameKey: keyof T;
path: string;
dataCy: string;
idParam?: string;
idGetter?: (row: T) => string;
linkParamsBuilder?: (row: T) => UISrefProps['params'];
}): ColumnDef<T> {
const cell = createCell();
return {
header: 'Name',
accessorKey: nameKey,
id: 'name',
cell,
enableSorting: true,
enableHiding: false,
};
function createCell() {
return function NameCell({ renderValue, row }: CellContext<T, unknown>) {
const name = renderValue() || '';
if (typeof name !== 'string') {
return null;
}
return (
<Link
to={path}
params={{
...linkParamsBuilder(row.original),
[idParam]: idGetter(row.original),
}}
title={name}
data-cy={`${dataCy}_${name}`}
>
{name}
</Link>
);
};
}
}