import { Component, computed, input, output } from '@angular/core'; import { AlertComponent } from '@shared/ui/alert/alert.component'; import { Diagnostic } from '@brief/domain/placeholders'; /** Molecule: lists all letter diagnostics grouped by severity. Errors block save/send; warnings (deprecated, unresolved-at-send) are surfaced but allowed. Fed by a `computed()` over the letter content — never stored. */ @Component({ selector: 'app-diagnostics-panel', imports: [AlertComponent], styles: [` :host{display:block} ul{margin:0;padding-inline-start:1.1rem;display:grid;gap:0.15rem} button{background:none;border:0;padding:0;color:var(--rhc-color-foreground-link);cursor:pointer;text-align:start;text-decoration:underline} `], template: ` @if (errors().length) { {{ errorsTitle() }} } @if (warnings().length) { {{ warningsTitle() }} } @if (!errors().length && !warnings().length) { {{ cleanText() }} } `, }) export class DiagnosticsPanelComponent { diagnostics = input([]); locate = output(); errorsTitle = input($localize`:@@brief.diag.errors:Op te lossen voor indienen/versturen:`); warningsTitle = input($localize`:@@brief.diag.warnings:Aandachtspunten:`); cleanText = input($localize`:@@brief.diag.clean:Geen problemen gevonden in de velden.`); protected errors = computed(() => this.diagnostics().filter((d) => d.severity === 'error')); protected warnings = computed(() => this.diagnostics().filter((d) => d.severity === 'warning')); }