1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-22 06:49:40 +02:00
portainer/app/react/docker/components/datatables/createOwnershipColumn.tsx
LP B ac5491e864
Some checks failed
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
/ triage (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
feat(app): limit the docker API version supported by the frontend (#12295)
2024-10-08 17:13:14 +02:00

51 lines
1.3 KiB
TypeScript

import { CellContext, ColumnDef } from '@tanstack/react-table';
import { Eye, EyeOff, Users } from 'lucide-react';
import { ResourceControlOwnership } from '@/react/portainer/access-control/types';
import { Icon } from '@@/Icon';
export interface IResource {
ResourceControl?: {
Ownership: ResourceControlOwnership;
};
}
export function createOwnershipColumn<D extends IResource>(
enableHiding = true
): ColumnDef<D, ResourceControlOwnership> {
return {
accessorFn: (row) =>
row.ResourceControl?.Ownership || ResourceControlOwnership.ADMINISTRATORS,
header: 'Ownership',
id: 'ownership',
cell: OwnershipCell,
enableHiding,
};
function OwnershipCell({
getValue,
}: CellContext<D, ResourceControlOwnership>) {
const value = getValue();
return (
<span className="flex items-center gap-2">
<Icon icon={ownershipIcon(value)} className="space-right" />
{value}
</span>
);
}
}
export function ownershipIcon(ownership: ResourceControlOwnership) {
switch (ownership) {
case ResourceControlOwnership.PRIVATE:
return EyeOff;
case ResourceControlOwnership.ADMINISTRATORS:
return EyeOff;
case ResourceControlOwnership.RESTRICTED:
return Users;
default:
return Eye;
}
}