- Introduce ActionPanel, EnvelopeInfoCard, TfaForm, ConfirmDialog, StatusPage, and Toast components for modular, presentational UI - Add ToastService for pub/sub toast notifications; register in DI - Refactor AccessCodeForm for improved UX and parameterization - Enhance MainLayout with Toast integration and better error handling - Standardize and extend app.css for new components and responsive design - All new components are "dumb" (no service/API knowledge), using EventCallbacks for parent interaction - ConfirmDialog supports awaitable user confirmation via TaskCompletionSource
79 lines
2.9 KiB
Plaintext
79 lines
2.9 KiB
Plaintext
@* StatusPage: Wiederverwendbare Status-Seite für alle Endzustände.
|
|
Ersetzt EnvelopeSigned.cshtml, EnvelopeRejected.cshtml, Error-Views und Expired.
|
|
"Dumme" Komponente: Keine Services, keine API-Calls, nur Parameter → Anzeige. *@
|
|
|
|
<div class="page">
|
|
<header class="text-center">
|
|
@switch (Type)
|
|
{
|
|
case "signed":
|
|
<div class="status-icon signed">
|
|
<i class="bi bi-check-circle"></i>
|
|
</div>
|
|
<h1>Dokument erfolgreich unterschrieben</h1>
|
|
<p class="text-muted">
|
|
Sie erhalten eine Bestätigung per E-Mail, sobald alle Empfänger unterschrieben haben.
|
|
</p>
|
|
break;
|
|
|
|
case "rejected":
|
|
<div class="status-icon rejected">
|
|
<i class="bi bi-x-circle"></i>
|
|
</div>
|
|
<h1>Dokument wurde abgelehnt</h1>
|
|
<p class="text-muted">
|
|
@if (!string.IsNullOrEmpty(Title) && !string.IsNullOrEmpty(SenderEmail))
|
|
{
|
|
<span>
|
|
Das Dokument «@Title» wurde abgelehnt.
|
|
Bei Fragen wenden Sie sich an
|
|
<a href="mailto:@SenderEmail">@SenderEmail</a>.
|
|
</span>
|
|
}
|
|
else
|
|
{
|
|
<span>Dieses Dokument wurde von einem Empfänger abgelehnt.</span>
|
|
}
|
|
</p>
|
|
break;
|
|
|
|
case "not_found":
|
|
<div class="status-icon locked">
|
|
<i class="bi bi-question-circle"></i>
|
|
</div>
|
|
<h1>Dokument nicht gefunden</h1>
|
|
<p class="text-muted">
|
|
Dieses Dokument existiert nicht oder ist nicht mehr verfügbar.
|
|
Wenn Sie diese URL per E-Mail erhalten haben, wenden Sie sich bitte an das IT-Team.
|
|
</p>
|
|
break;
|
|
|
|
case "expired":
|
|
<div class="status-icon locked">
|
|
<i class="bi bi-clock-history"></i>
|
|
</div>
|
|
<h1>Link abgelaufen</h1>
|
|
<p class="text-muted">
|
|
Der Zugang zu diesem Dokument ist abgelaufen.
|
|
</p>
|
|
break;
|
|
}
|
|
</header>
|
|
</div>
|
|
|
|
@code {
|
|
/// <summary>
|
|
/// Bestimmt welche Status-Variante angezeigt wird.
|
|
/// Erlaubte Werte: "signed", "rejected", "not_found", "expired"
|
|
/// </summary>
|
|
[Parameter, EditorRequired]
|
|
public string Type { get; set; } = string.Empty;
|
|
|
|
/// <summary>E-Mail des Absenders — nur bei "rejected" relevant.</summary>
|
|
[Parameter]
|
|
public string? SenderEmail { get; set; }
|
|
|
|
/// <summary>Titel des Umschlags — nur bei "rejected" relevant.</summary>
|
|
[Parameter]
|
|
public string? Title { get; set; }
|
|
} |