diff --git a/apps/console/src/pages/organizations/vendors/VendorView.tsx b/apps/console/src/pages/organizations/vendors/VendorView.tsx index a4f7f4db9..6650ffa2e 100644 --- a/apps/console/src/pages/organizations/vendors/VendorView.tsx +++ b/apps/console/src/pages/organizations/vendors/VendorView.tsx @@ -795,6 +795,8 @@ function RiskAssessmentsTable({ }) { const [showDropdown, setShowDropdown] = useState(null); const dropdownRef = useRef(null); + const [selectedAssessment, setSelectedAssessment] = useState(null); + const [showDetailsModal, setShowDetailsModal] = useState(false); // Close dropdown when clicking outside useEffect(() => { @@ -826,6 +828,13 @@ function RiskAssessmentsTable({ const isExpired = (expiresAt: string) => isPast(new Date(expiresAt)); + // Handle click on view details + const handleViewDetails = (assessment: any) => { + setSelectedAssessment(assessment); + setShowDetailsModal(true); + setShowDropdown(null); + }; + return (
@@ -978,10 +987,7 @@ function RiskAssessmentsTable({ > @@ -1017,6 +1023,132 @@ function RiskAssessmentsTable({ Create a new risk assessment for this vendor

+ + {/* Risk Assessment Details Modal */} + {showDetailsModal && selectedAssessment && ( + setShowDetailsModal(false)} + /> + )} +
+ ); +} + +function RiskAssessmentDetailsModal({ + assessment, + onClose, +}: { + assessment: any; + onClose: () => void; +}) { + // Format date for display + const formatDate = (dateString: string) => { + const date = new Date(dateString); + return format(date, "MMMM d, yyyy"); + }; + + // Data sensitivity descriptions + const dataSensitivityDescriptions: Record = { + NONE: "No sensitive data", + LOW: "Public or non-sensitive data", + MEDIUM: "Internal/restricted data", + HIGH: "Confidential data", + CRITICAL: "Regulated/PII/financial data", + }; + + // Business impact descriptions + const businessImpactDescriptions: Record = { + LOW: "Minimal impact on business", + MEDIUM: "Moderate impact on business", + HIGH: "Significant business impact", + CRITICAL: "Critical to business operations", + }; + + return ( +
+
+
+

Risk Assessment Details

+ +
+ +
+
+
+

Assessed By

+
+ +

{assessment.assessedBy?.fullName || "N/A"}

+
+

+ {formatDate(assessment.assessedAt || "")} +

+
+ +
+

Valid Until

+

+ {formatDate(assessment.expiresAt || "")} +

+ {isPast(new Date(assessment.expiresAt || "")) && ( +

+ Assessment has expired +

+ )} +
+
+ +
+

Data Sensitivity

+
+

+ {assessment.dataSensitivity.charAt(0) + assessment.dataSensitivity.slice(1).toLowerCase()} +

+

+ {dataSensitivityDescriptions[assessment.dataSensitivity] || ""} +

+
+
+ +
+

Business Impact

+
+

+ {assessment.businessImpact.charAt(0) + assessment.businessImpact.slice(1).toLowerCase()} +

+

+ {businessImpactDescriptions[assessment.businessImpact] || ""} +

+
+
+ + {assessment.notes && ( +
+

Notes

+
+

{assessment.notes}

+
+
+ )} + +
+ +
+
+
); }