feat: ExportEngagementButton + exports API client
Add split-button dropdown [Export ▼] on EngagementDetailPage that downloads engagement as Markdown, CSV, or PDF via GET /api/engagements/<id>/export?format=md|csv|pdf. Both halves open the dropdown (no default left-click action). RBAC-gated with canEditEngagements (admin + redteam only). Loading state per item, toast on error, click-outside + Escape close. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import { LoadingState } from '@/components/LoadingState';
|
||||
import { ErrorState } from '@/components/ErrorState';
|
||||
import { StatusBadge } from '@/components/StatusBadge';
|
||||
import { SimulationList } from '@/components/SimulationList';
|
||||
import { ExportEngagementButton } from '@/components/ExportEngagementButton';
|
||||
|
||||
export function EngagementDetailPage(): JSX.Element {
|
||||
const { id } = useParams<{ id: string }>();
|
||||
@@ -43,9 +44,12 @@ export function EngagementDetailPage(): JSX.Element {
|
||||
</div>
|
||||
</div>
|
||||
{canEditEngagements ? (
|
||||
<Link to={`/engagements/${eng.id}/edit`} className="btn-outline">
|
||||
Edit
|
||||
</Link>
|
||||
<div className="flex items-center gap-sm">
|
||||
<ExportEngagementButton engagementId={eng.id} />
|
||||
<Link to={`/engagements/${eng.id}/edit`} className="btn-outline">
|
||||
Edit
|
||||
</Link>
|
||||
</div>
|
||||
) : null}
|
||||
</header>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user