import React from "react"; import { DEFAULT_EMPTY_CELL_VALUE } from "utilities/constants"; import { formatFloatAsPercentage } from "utilities/helpers"; import Icon from "components/Icon"; import TooltipWrapper from "components/TooltipWrapper"; const baseClass = "probability-of-exploit"; interface IProbabilityOfExploit { probabilityOfExploit?: number | null; cisaKnownExploit?: boolean | null; tooltipPosition?: "top" | "bottom" | "left" | "right"; } const ProbabilityOfExploit = ({ probabilityOfExploit, cisaKnownExploit, tooltipPosition = "top", }: IProbabilityOfExploit): JSX.Element => { // Grey out if API returns null or undefined (but not 0) if (typeof probabilityOfExploit !== "number") { return ( {DEFAULT_EMPTY_CELL_VALUE} ); } const renderExploitedIcon = () => { return ( The vulnerability has been actively exploited in the
wild. This data is reported by the Cybersecurity
and Infrastructure Security Agency (CISA). } position={tooltipPosition} underline={false} showArrow tipOffset={8} >
); }; return ( {formatFloatAsPercentage(probabilityOfExploit)} {cisaKnownExploit && renderExploitedIcon()} ); }; export default ProbabilityOfExploit;