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

49 lines
1.4 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-26 14:23:51 +03:00
import { colorFgCstStatus,IColorTheme } from '@/utils/color';
import { describeExpressionStatus } from '@/utils/labels';
interface ConstituentaBadgeProps {
prefixID?: string
shortTooltip?: boolean
value: IConstituenta
theme: IColorTheme
}
function ConstituentaBadge({ value, prefixID, shortTooltip, theme }: ConstituentaBadgeProps) {
return (
2023-12-18 20:45:33 +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={{
2023-12-26 14:23:51 +03:00
borderColor: colorFgCstStatus(value.status, theme),
color: colorFgCstStatus(value.status, theme),
2023-12-18 20:45:33 +03:00
backgroundColor: isMockCst(value) ? theme.bgWarning : theme.bgInput
}}
>
{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>);
}
export default ConstituentaBadge;