From cc9ce3ff5e21077fd1c719227a540f6cae038c3a Mon Sep 17 00:00:00 2001 From: master <> Date: Fri, 27 Mar 2026 16:46:49 +0200 Subject: [PATCH] Fix duplicate breadcrumb and Export Center delete confirmation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BC1 — Fix "Operations > Operations > ..." duplicate breadcrumb: - Set breadcrumb to empty string on /ops/operations parent route and /ops/operations (overview) route, so only the top-level "Operations" breadcrumb from /ops renders. Affects 7 pages: Feeds, Signals, Jobs, Diagnostics, Notifications, Watchlist, overview. EC1 — Export Center delete confirmation: - Replace window.confirm() with app-confirm-dialog variant="danger" - Names the export profile being deleted in confirmation message - Follows the destructive action convention from AGENTS.md Co-Authored-By: Claude Opus 4.6 (1M context) --- .../export-center.component.ts | 24 +++++++++++++++---- .../src/app/routes/operations.routes.ts | 2 +- .../src/app/routes/ops.routes.ts | 2 +- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/Web/StellaOps.Web/src/app/features/evidence-export/export-center.component.ts b/src/Web/StellaOps.Web/src/app/features/evidence-export/export-center.component.ts index 803ef7b24..f0695b42c 100644 --- a/src/Web/StellaOps.Web/src/app/features/evidence-export/export-center.component.ts +++ b/src/Web/StellaOps.Web/src/app/features/evidence-export/export-center.component.ts @@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, + ViewChild, computed, inject, OnDestroy, @@ -22,6 +23,7 @@ import { StellaBundleExportButtonComponent } from './stella-bundle-export-button import { OperatorOnlyDirective } from '../../shared/directives/operator-only.directive'; import { DateFormatService } from '../../core/i18n/date-format.service'; import { StellaPageTabsComponent, StellaPageTab } from '../../shared/components/stella-page-tabs/stella-page-tabs.component'; +import { ConfirmDialogComponent } from '../../shared/components/confirm-dialog/confirm-dialog.component'; /** * Export Center Component (Sprint: SPRINT_20251229_016) * Manages export profiles and monitors export runs with SSE updates. @@ -33,7 +35,7 @@ const EXPORT_CENTER_TABS: StellaPageTab[] = [ @Component({ selector: 'app-export-center', - imports: [FormsModule, StellaBundleExportButtonComponent, OperatorOnlyDirective, StellaPageTabsComponent], + imports: [FormsModule, StellaBundleExportButtonComponent, OperatorOnlyDirective, StellaPageTabsComponent, ConfirmDialogComponent], template: `
} + `, styles: [` @@ -1021,10 +1028,19 @@ export class ExportCenterComponent implements OnInit, OnDestroy { this.closeModal(); } + readonly pendingDeleteProfile = signal(null); + @ViewChild('deleteConfirm') deleteConfirm!: ConfirmDialogComponent; + deleteProfile(profile: ExportProfile): void { - if (confirm(`Delete profile "${profile.name}"?`)) { - this.profiles.update(profiles => profiles.filter(p => p.id !== profile.id)); - } + this.pendingDeleteProfile.set(profile); + this.deleteConfirm.open(); + } + + executeDeleteProfile(): void { + const profile = this.pendingDeleteProfile(); + if (!profile) return; + this.profiles.update(profiles => profiles.filter(p => p.id !== profile.id)); + this.pendingDeleteProfile.set(null); } runProfile(profile: ExportProfile): void { diff --git a/src/Web/StellaOps.Web/src/app/routes/operations.routes.ts b/src/Web/StellaOps.Web/src/app/routes/operations.routes.ts index 38a0eaf22..33d776ed1 100644 --- a/src/Web/StellaOps.Web/src/app/routes/operations.routes.ts +++ b/src/Web/StellaOps.Web/src/app/routes/operations.routes.ts @@ -6,7 +6,7 @@ export const OPERATIONS_ROUTES: Routes = [ path: '', pathMatch: 'full', title: 'Operations', - data: { breadcrumb: 'Operations' }, + data: { breadcrumb: '' }, loadComponent: () => import('../features/platform/ops/platform-ops-overview-page.component').then( (m) => m.PlatformOpsOverviewPageComponent, diff --git a/src/Web/StellaOps.Web/src/app/routes/ops.routes.ts b/src/Web/StellaOps.Web/src/app/routes/ops.routes.ts index 8f71d8088..b1e72d326 100644 --- a/src/Web/StellaOps.Web/src/app/routes/ops.routes.ts +++ b/src/Web/StellaOps.Web/src/app/routes/ops.routes.ts @@ -10,7 +10,7 @@ export const OPS_ROUTES: Routes = [ { path: 'operations', title: 'Operations', - data: { breadcrumb: 'Operations' }, + data: { breadcrumb: '' }, loadChildren: () => import('./operations.routes').then((m) => m.OPERATIONS_ROUTES), }, {