import React from 'react'; import {ClipboardButton, Flex, Text, Tooltip} from '@gravity-ui/uikit'; import {isNil} from 'lodash'; import {cn} from '../../utils/cn'; import {EMPTY_DATA_PLACEHOLDER} from '../../utils/constants'; import type {DiskDetailItem} from '../../utils/disks/diskInfo/getDiskLocationItems'; import {DiskTypeLabel} from '../DiskStatus/DiskStatus'; import {YDBDefinitionList} from '../YDBDefinitionList/YDBDefinitionList'; import i18n from './i18n'; import './DiskPopup.scss'; const b = cn('ydb-disk-popup'); export function DiskPopup({ children, combined = false, className, }: { children: React.ReactNode; combined?: boolean; className?: string; }) { return
{children}
; } export function DiskPopupPanel({ children, footer, }: { children: React.ReactNode; footer?: React.ReactNode; }) { return (
{children}
{footer &&
{footer}
}
); } export function DiskPopupHeader({ title, id, type, statuses, }: { title: string; id?: string; type?: string; statuses: React.ReactNode; }) { return ( {title} • {id || EMPTY_DATA_PLACEHOLDER} {id && ( )} {statuses} ); } export function DiskPopupText({ value, withLeftTrim = false, }: { value?: string | number; withLeftTrim?: boolean; }) { const hasValue = !isNil(value) && value !== ''; const text = hasValue ? value : EMPTY_DATA_PLACEHOLDER; return ( {withLeftTrim ? {text} : text} ); } export function DiskPopupLocation({items}: {items: DiskDetailItem[]}) { if (!items.length) { return null; } const locationItems = items.map((item) => { if (['fqdn', 'rack', 'datacenter'].includes(item.id)) { return {...item, content: }; } if (item.id === 'pdisk-path' && typeof item.copyText === 'string') { return { ...item, content: , }; } return item; }); return (
); }