Files
git.stella-ops.org/docs/features/dropped/mi4-error-cancel-undo-patterns.md

3.4 KiB

MI4 - Error/Cancel/Undo Patterns (Snackbar/Toast with Undo)

Module

Web

Status

PARTIALLY_IMPLEMENTED

Description

i18n keys for toast/undo/undoCountdown patterns exist and snackbar usage is present across components. However, a dedicated centralized snackbar/toast service with the specific 8s undo window and aria-live=polite pattern was not found as a standalone component.

What's Implemented

  • Existing components:
    • accordion (src/Web/StellaOps.Web/src/app/shared/components/accordion/accordion.component.ts)
    • ai-assist-panel (src/Web/StellaOps.Web/src/app/shared/components/ai/ai-assist-panel.component.ts)
    • ai-authority-badge (src/Web/StellaOps.Web/src/app/shared/components/ai/ai-authority-badge.component.ts)
    • ai-chip (src/Web/StellaOps.Web/src/app/shared/components/ai/ai-chip.component.ts)
    • ai-explain-chip (src/Web/StellaOps.Web/src/app/shared/components/ai/ai-explain-chip.component.ts)
    • ai-exploitability-chip (src/Web/StellaOps.Web/src/app/shared/components/ai/ai-exploitability-chip.component.ts)
    • ai-fix-chip (src/Web/StellaOps.Web/src/app/shared/components/ai/ai-fix-chip.component.ts)
    • ai-needs-evidence-chip (src/Web/StellaOps.Web/src/app/shared/components/ai/ai-needs-evidence-chip.component.ts)
    • ai-summary (src/Web/StellaOps.Web/src/app/shared/components/ai/ai-summary.component.ts)
    • ai-vex-draft-chip (src/Web/StellaOps.Web/src/app/shared/components/ai/ai-vex-draft-chip.component.ts)
  • Existing services:
    • replay (src/Web/StellaOps.Web/src/app/shared/components/reproduce/replay.service.ts)
    • graph-export (src/Web/StellaOps.Web/src/app/shared/services/graph-export.service.ts)
    • plain-language (src/Web/StellaOps.Web/src/app/shared/services/plain-language.service.ts)

What's Missing

  • Centralized snackbar/toast service: No centralized ToastService with the specific 8-second undo window, countdown timer, and aria-live=polite pattern
  • Undo action infrastructure: i18n keys for toast.undo and undoCountdown exist but no centralized undo action queue that buffers destructive operations for the undo window
  • Cancel pattern standardization: No consistent cancel pattern across all modal/drawer interactions (some modals lack cancel confirmation for dirty forms)
  • Error boundary component: No centralized error boundary component that catches and displays user-friendly errors with retry actions

Implementation Plan

  • Create centralized ToastService with undo support, 8s countdown, and aria-live=polite
  • Implement undo action queue for buffering destructive operations
  • Standardize cancel patterns across modals and drawers
  • Add error boundary component with retry actions

E2E Test Plan

  • Setup:
    • Log in with a user that has appropriate permissions
    • Navigate to the relevant page/section where this feature appears
    • Ensure test data exists (scanned artifacts, SBOM data, or seed data as needed)
  • Core verification:
    • Verify the component renders correctly with sample data
    • Verify interactive elements respond to user input
    • Verify data is fetched and displayed from the correct API endpoints
  • Edge cases:
    • Verify graceful handling when backend API is unavailable (error state)
    • Verify responsive layout at different viewport sizes
    • Verify accessibility (keyboard navigation, screen reader labels, ARIA attributes)