diff --git a/platform/app/src/components/ViewportGrid.tsx b/platform/app/src/components/ViewportGrid.tsx index 9d95eb691..53f8b2242 100644 --- a/platform/app/src/components/ViewportGrid.tsx +++ b/platform/app/src/components/ViewportGrid.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useCallback, useRef } from 'react'; import { useResizeDetector } from 'react-resize-detector'; import { Types, MeasurementService } from '@ohif/core'; -import { ViewportGrid, ViewportPane } from '@ohif/ui'; +import { ViewportGrid, ViewportPane } from '@ohif/ui-next'; import { useViewportGrid } from '@ohif/ui-next'; import EmptyViewport from './EmptyViewport'; import classNames from 'classnames'; @@ -284,6 +284,29 @@ function ViewerViewportGrid(props: withAppTypes) { viewportGridService.setActiveViewportId(viewportId); }; + const getBorderStyle = viewportIndex => { + const style = {} as any; + const layoutOptions = viewportGridService.getLayoutOptionsFromState( + viewportGridService.getState() + ); + const vp = layoutOptions[viewportIndex]; + if (!vp) { + return style; + } + const { x, y, width, height } = vp; + const tolerance = 0.01; + + if (x + width < 1 - tolerance) { + style.borderRight = '1px solid #3a3f99'; + } + + if (y + height < 1 - tolerance) { + style.borderBottom = '1px solid #3a3f99'; + } + + return style; + }; + viewportPanes[i] = ( @@ -343,7 +367,7 @@ function ViewerViewportGrid(props: withAppTypes) { return (
+
{children}
+ + {/* Border overlay */}
- {children} -
+ className={classNames('pointer-events-none absolute inset-0', { + 'border-primary-light border': isActive, + 'group-hover:border-primary-light/70 border border-transparent': !isActive, + })} + />
); } diff --git a/platform/ui-next/src/contextProviders/ViewportGridProvider.tsx b/platform/ui-next/src/contextProviders/ViewportGridProvider.tsx index 3a63c9684..1b03b1ebb 100644 --- a/platform/ui-next/src/contextProviders/ViewportGridProvider.tsx +++ b/platform/ui-next/src/contextProviders/ViewportGridProvider.tsx @@ -503,6 +503,7 @@ export function ViewportGridProvider({ children, service }: ViewportGridProvider getActiveViewportOptionByKey, setViewportGridSizeChanged: props => service.setViewportGridSizeChanged(props), publishViewportsReady: () => service.publishViewportsReady(), + getLayoutOptionsFromState: state => service.getLayoutOptionsFromState(state), }; return (