3.4 KiB
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
ToastServicewith the specific 8-second undo window, countdown timer, andaria-live=politepattern - Undo action infrastructure: i18n keys for
toast.undoandundoCountdownexist 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
ToastServicewith undo support, 8s countdown, andaria-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)