ConceptPortal-public/rsconcept/frontend/src/components/Shared/ConstituentaBadge.tsx

47 lines
1.5 KiB
TypeScript
Raw Normal View History

import clsx from 'clsx';
import ConceptTooltip from '@/components/Common/ConceptTooltip';
import ConstituentaTooltip from '@/components/Help/ConstituentaTooltip';
import { IConstituenta } from '@/models/rsform';
import { isMockCst } from '@/models/rsformAPI';
2023-12-28 14:04:44 +03:00
import { colorFgCstStatus, IColorTheme } from '@/utils/color';
import { describeExpressionStatus } from '@/utils/labels';
interface ConstituentaBadgeProps {
2023-12-28 14:04:44 +03:00
prefixID?: string;
shortTooltip?: boolean;
value: IConstituenta;
theme: IColorTheme;
}
function ConstituentaBadge({ value, prefixID, shortTooltip, theme }: ConstituentaBadgeProps) {
return (
2023-12-28 14:04:44 +03:00
<div
id={`${prefixID}${value.alias}`}
className={clsx(
'min-w-[3.1rem] max-w-[3.1rem]',
'px-1',
'border rounded-md',
'text-center font-semibold whitespace-nowrap'
)}
style={{
borderColor: colorFgCstStatus(value.status, theme),
color: colorFgCstStatus(value.status, theme),
backgroundColor: isMockCst(value) ? theme.bgWarning : theme.bgInput
}}
>
2023-12-28 14:04:44 +03:00
{value.alias}
{!shortTooltip ? <ConstituentaTooltip anchor={`#${prefixID}${value.alias}`} data={value} /> : null}
{shortTooltip ? (
<ConceptTooltip anchorSelect={`#${prefixID}${value.alias}`} place='right'>
<p>
<b>Статус</b>: {describeExpressionStatus(value.status)}
</p>
</ConceptTooltip>
) : null}
</div>
);
}
2023-12-28 14:04:44 +03:00
export default ConstituentaBadge;