import { UISref } from '@uirouter/react'; import type { ReactNode } from 'react'; import React from 'react'; import type { Application } from '../../application'; import type { IManagedResourceSummary } from '../../domain'; import { viewConfigurationByStatus } from './managedResourceStatusConfig'; import type { IHoverablePopoverContentsProps } from '../../presentation'; import { HoverablePopover } from '../../presentation'; import { showManagedResourceHistoryModal } from '../resourceHistory/ManagedResourceHistoryModal'; import { toggleResourcePause } from './toggleResourceManagement'; const PopoverActions = ({ resourceSummary, application, hidePopover, }: { resourceSummary: IManagedResourceSummary; application: Application; hidePopover?: () => void; }) => { const historyButton = ( ); return (

{historyButton} {!resourceSummary.isPaused && ( )} {resourceSummary.isPaused && !application.isManagementPaused && ( )} {application.isManagementPaused && ( Resume application management )}

); }; export interface IManagedResourceStatusPopover { application: Application; children: ReactNode; placement: 'left' | 'top' | 'bottom' | 'right'; resourceSummary: IManagedResourceSummary; } export const ManagedResourceStatusPopover = ({ application, children, placement, resourceSummary, }: IManagedResourceStatusPopover) => { const { status } = resourceSummary; const PopoverContents = ({ hidePopover }: IHoverablePopoverContentsProps) => ( <> {viewConfigurationByStatus[status].popoverContents(resourceSummary, application)} ); return ( {children} ); };