ohif-viewer/platform/ui-next/src/components/SegmentationTable/SegmentationHeader.tsx

65 lines
1.9 KiB
TypeScript
Raw Normal View History

2024-11-06 13:15:27 +01:00
import React from 'react';
import { Button } from '../Button';
import { Icons } from '../Icons/Icons';
import { DropdownMenu, DropdownMenuTrigger } from '../DropdownMenu';
2024-11-06 13:15:27 +01:00
import { Tooltip, TooltipTrigger, TooltipContent } from '../Tooltip/Tooltip';
import { useSegmentationTableContext } from './SegmentationTableContext';
import { useTranslation } from 'react-i18next';
export const SegmentationHeader: React.FC<{
children?: React.ReactNode;
2024-11-06 13:15:27 +01:00
segmentation?: any;
}> = ({ children, segmentation }) => {
2024-11-06 13:15:27 +01:00
const { t } = useTranslation('SegmentationTable');
const { ...contextProps } = useSegmentationTableContext('SegmentationHeader');
2024-11-06 13:15:27 +01:00
if (!segmentation) {
return null;
}
const childrenWithProps = React.Children.map(children, child =>
React.isValidElement(child)
? React.cloneElement(child, {
t,
...contextProps,
})
: child
);
2024-11-06 13:15:27 +01:00
return (
<div className="text-foreground flex h-8 w-full items-center justify-between">
<div className="flex items-center space-x-1">
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button
variant="ghost"
size="icon"
className="ml-1"
onClick={e => e.stopPropagation()}
>
<Icons.More />
</Button>
</DropdownMenuTrigger>
{childrenWithProps}
2024-11-06 13:15:27 +01:00
</DropdownMenu>
<div className="pl-1.5">{segmentation.label}</div>
</div>
<div className="mr-1 flex items-center">
<Tooltip>
<TooltipTrigger asChild>
<Button
variant="ghost"
size="icon"
>
<Icons.Info className="h-6 w-6" />
</Button>
</TooltipTrigger>
<TooltipContent>
<p>{segmentation.cachedStats.info}</p>
</TooltipContent>
</Tooltip>
</div>
</div>
);
};