diff --git a/web/src/components/doc/DocGovActionBar.tsx b/web/src/components/doc/DocGovActionBar.tsx index 008ecca2..87b3000e 100644 --- a/web/src/components/doc/DocGovActionBar.tsx +++ b/web/src/components/doc/DocGovActionBar.tsx @@ -1,4 +1,5 @@ import React, { useRef, useState } from 'react'; +import { createPortal } from 'react-dom'; import { DocumentAST } from '../../types/block'; import { UserRole } from '../../types/docgov'; import { canShowDocGovApprovalAction, isUnmanagedDocDuties } from '../../lib/docGovActionVisibility'; @@ -102,6 +103,118 @@ export const DocGovActionBar: React.FC = ({ const showReview = canShowDocGovApprovalAction('review', currentUserId, duties); const showApprove = canShowDocGovApprovalAction('approve', currentUserId, duties); + // Portal to document.body so sticky ActionBar stacking context cannot trap the overlay + // below chat floating chrome (zIndex must match DocVisibilityModal ≥ 1000). + const rejectModal = + rejectModalOpen && typeof document !== 'undefined' + ? createPortal( +
+
+
+ 请填写法定驳回原因 (必填) +
+