ui(ContextMenuViewport): move to ui-next with theme support (#6008)

This commit is contained in:
Dan Rukas 2026-07-13 12:56:03 -04:00 committed by GitHub
parent 110b293aa0
commit 3d70db2d3b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 52 additions and 2 deletions

View File

@ -1,5 +1,5 @@
import { ContextMenu } from '@ohif/ui';
import { ContextMenuViewport } from '@ohif/ui-next';
export default {
'ui.contextMenu': ContextMenu,
'ui.contextMenu': ContextMenuViewport,
};

View File

@ -0,0 +1,47 @@
import React from 'react';
import { Icons } from '../Icons';
interface ContextMenuViewportProps {
items?: Array<{
label: string;
action: (item: any, props: any) => void;
iconRight?: string;
[key: string]: unknown;
}>;
[key: string]: unknown;
}
const ContextMenuViewport = ({ items, ...props }: ContextMenuViewportProps) => {
if (!items?.length) {
return null;
}
return (
<div
data-cy="context-menu"
className="bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 relative z-50 w-48 overflow-hidden rounded-md border border-input p-1 shadow-md"
onContextMenu={e => e.preventDefault()}
>
{items.map((item, index) => (
<button
type="button"
key={index}
data-cy="context-menu-item"
onClick={() => item.action(item, props)}
onMouseEnter={e => e.currentTarget.focus({ preventScroll: true })}
className="hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground flex w-full cursor-default select-none items-center justify-between rounded-sm px-2 py-1.5 text-base outline-none"
>
<span>{item.label}</span>
{item.iconRight && (
<Icons.ByName
name={item.iconRight}
className="inline"
/>
)}
</button>
))}
</div>
);
};
export default ContextMenuViewport;

View File

@ -0,0 +1 @@
export { default as ContextMenuViewport } from './ContextMenuViewport';

View File

@ -142,6 +142,7 @@ import {
} from './ToolButton';
import { LayoutSelector } from './LayoutSelector';
import { ToolSettings } from './OHIFToolSettings';
import { ContextMenuViewport } from './ContextMenuViewport';
export * from './StudyList';
export { DataRow } from './DataRow';
export { MeasurementTable } from './MeasurementTable';
@ -309,6 +310,7 @@ export {
ViewportDialog,
CinePlayer,
LayoutSelector,
ContextMenuViewport,
SmartScrollbar,
useSmartScrollbarLayoutContext,
useSmartScrollbarScrollContext,