fix(ui): center action icons and improve headers and progress messages
This commit is contained in:
@@ -121,3 +121,11 @@ Validierung: 60/60 Tests in Debug und Release; Desktop Debug/Release ohne Warnun
|
|||||||
Das vorhandene Kassen-Icon bleibt in der Windows-EXE eingebettet und wird als natives Fenstersymbol gesetzt. Die ungenutzte Photino-Registrierung für Windows-Systembenachrichtigungen ist deaktiviert: Sie kann die explizite AppUserModelID überschreiben und Verknüpfungen zum generischen dotnet-Host anlegen. Damit bleibt die eigene Windows-Zuordnung für die Taskleiste erhalten; die in der Anwendung angezeigten Toasts funktionieren unabhängig davon. Bestehende Windows-Verknüpfungen werden nicht verändert.
|
Das vorhandene Kassen-Icon bleibt in der Windows-EXE eingebettet und wird als natives Fenstersymbol gesetzt. Die ungenutzte Photino-Registrierung für Windows-Systembenachrichtigungen ist deaktiviert: Sie kann die explizite AppUserModelID überschreiben und Verknüpfungen zum generischen dotnet-Host anlegen. Damit bleibt die eigene Windows-Zuordnung für die Taskleiste erhalten; die in der Anwendung angezeigten Toasts funktionieren unabhängig davon. Bestehende Windows-Verknüpfungen werden nicht verändert.
|
||||||
|
|
||||||
Release als eigenständige Windows-Einzeldatei veröffentlicht. Das aus der veröffentlichten EXE extrahierte Anwendungssymbol entspricht dem vorhandenen Kassen-Icon; auch das native Testfenster zeigt es in der Titelleiste. Die Taskleistendarstellung wurde nicht separat visuell erfasst. Build und Veröffentlichung ohne Warnungen oder Fehler.
|
Release als eigenständige Windows-Einzeldatei veröffentlicht. Das aus der veröffentlichten EXE extrahierte Anwendungssymbol entspricht dem vorhandenen Kassen-Icon; auch das native Testfenster zeigt es in der Titelleiste. Die Taskleistendarstellung wurde nicht separat visuell erfasst. Build und Veröffentlichung ohne Warnungen oder Fehler.
|
||||||
|
|
||||||
|
## Zentrierte Symbole, Tabellenkontrast und konkrete Laufmeldungen
|
||||||
|
|
||||||
|
Stift und Papierkorb sind in beiden Achsen zentriert; die Symbolschrift verwendet im Button eine Blockbox ohne Baseline-Versatz. Tabellenköpfe verwenden die Text- und Oberflächenfarbe des aktuellen Designs statt der festen Bootstrap-Klasse für helle Tabellen. Die sechs generischen Laufmeldungen benennen nun Sicherung erstellen, Sicherung wiederherstellen, Kontenübersicht als PDF erstellen/speichern, Kontoauszug als PDF erstellen/speichern oder gespeicherte PDF öffnen.
|
||||||
|
|
||||||
|
Debug-Tests: 60/60 bestanden. Zusätzliche Browserprüfung mit lokalem Produktions-CSS: Symbole bei 100 und 200 % in beiden Designs innerhalb von 0,6 Pixeln zentriert, Buttons mindestens 44 × 44 Pixel. Kontrast der sichtbaren Tabellenköpfe 17,85:1 (hell) und 12,89:1 (dunkel). Alle 16 bisherigen Offline-Layoutkombinationen bestehen weiterhin; dunkler Tabellenkopf und Symbole zusätzlich visuell geprüft.
|
||||||
|
|
||||||
|
Auch die Release-Suite besteht mit 60/60 Tests. Desktop Debug und Release bauen ohne Warnungen oder Fehler; `git diff --check` ist sauber.
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
}
|
}
|
||||||
<div class="table-responsive entry-list">
|
<div class="table-responsive entry-list">
|
||||||
<table class="table table-hover table-sm align-middle">
|
<table class="table table-hover table-sm align-middle">
|
||||||
<thead class="table-light">
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width: 100px;">LfdNr</th>
|
<th style="width: 100px;">LfdNr</th>
|
||||||
<th style="width: 120px;">Datum</th>
|
<th style="width: 120px;">Datum</th>
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ public partial class AccountDetail
|
|||||||
private async Task HandleExport()
|
private async Task HandleExport()
|
||||||
{
|
{
|
||||||
if (fileBusy) return;
|
if (fileBusy) return;
|
||||||
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
|
var busyToast = Toasts.Show("Kontoauszug wird als PDF erstellt und gespeichert … Bitte warten.", persistent: true);
|
||||||
fileBusy = true;
|
fileBusy = true;
|
||||||
fileResult = null;
|
fileResult = null;
|
||||||
try
|
try
|
||||||
@@ -277,7 +277,7 @@ public partial class AccountDetail
|
|||||||
private async Task HandleOpenSavedPdf()
|
private async Task HandleOpenSavedPdf()
|
||||||
{
|
{
|
||||||
if (fileBusy) return;
|
if (fileBusy) return;
|
||||||
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
|
var busyToast = Toasts.Show("Gespeicherte PDF-Datei wird geöffnet … Bitte warten.", persistent: true);
|
||||||
fileBusy = true;
|
fileBusy = true;
|
||||||
fileResult = null;
|
fileResult = null;
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public partial class Dashboard
|
|||||||
private async Task HandleBackupAsync()
|
private async Task HandleBackupAsync()
|
||||||
{
|
{
|
||||||
if (fileBusy) return;
|
if (fileBusy) return;
|
||||||
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
|
var busyToast = Toasts.Show("Sicherung wird erstellt … Bitte warten.", persistent: true);
|
||||||
fileBusy = true;
|
fileBusy = true;
|
||||||
fileResult = null;
|
fileResult = null;
|
||||||
try
|
try
|
||||||
@@ -127,7 +127,7 @@ public partial class Dashboard
|
|||||||
private async Task HandleConfirmRestore()
|
private async Task HandleConfirmRestore()
|
||||||
{
|
{
|
||||||
if (fileBusy) return;
|
if (fileBusy) return;
|
||||||
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
|
var busyToast = Toasts.Show("Sicherung wird wiederhergestellt … Bitte warten.", persistent: true);
|
||||||
fileBusy = true;
|
fileBusy = true;
|
||||||
fileResult = null;
|
fileResult = null;
|
||||||
try
|
try
|
||||||
@@ -144,7 +144,7 @@ public partial class Dashboard
|
|||||||
private async Task HandleDashboardExportAsync()
|
private async Task HandleDashboardExportAsync()
|
||||||
{
|
{
|
||||||
if (fileBusy) return;
|
if (fileBusy) return;
|
||||||
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
|
var busyToast = Toasts.Show("Kontenübersicht wird als PDF erstellt und gespeichert … Bitte warten.", persistent: true);
|
||||||
fileBusy = true;
|
fileBusy = true;
|
||||||
fileResult = null;
|
fileResult = null;
|
||||||
try
|
try
|
||||||
@@ -180,7 +180,7 @@ public partial class Dashboard
|
|||||||
private async Task HandleOpenSavedPdf()
|
private async Task HandleOpenSavedPdf()
|
||||||
{
|
{
|
||||||
if (fileBusy) return;
|
if (fileBusy) return;
|
||||||
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
|
var busyToast = Toasts.Show("Gespeicherte PDF-Datei wird geöffnet … Bitte warten.", persistent: true);
|
||||||
fileBusy = true;
|
fileBusy = true;
|
||||||
fileResult = null;
|
fileResult = null;
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -350,8 +350,9 @@ html[data-ui-theme="light"] .btn-dark {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.table thead th {
|
.table thead th {
|
||||||
|
background-color: var(--color-surface);
|
||||||
border-bottom-color: var(--color-border);
|
border-bottom-color: var(--color-border);
|
||||||
color: var(--color-text-muted);
|
color: var(--color-text);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
@@ -643,6 +644,9 @@ body:has(dialog[open]) .toast-stack:not(.modal-toasts) { display: none; }
|
|||||||
|
|
||||||
.entry-actions button { min-height: 44px; min-width: 44px; padding: .6rem; }
|
.entry-actions button { min-height: 44px; min-width: 44px; padding: .6rem; }
|
||||||
.entry-action-buttons { display: flex; gap: .5rem; }
|
.entry-action-buttons { display: flex; gap: .5rem; }
|
||||||
|
.entry-action-buttons .btn { display: inline-flex; align-items: center; justify-content: center; }
|
||||||
|
.entry-action-buttons .btn i { margin: 0; line-height: 1; }
|
||||||
|
.entry-action-buttons .btn i::before { display: block; }
|
||||||
.entry-description { overflow-wrap: anywhere; }
|
.entry-description { overflow-wrap: anywhere; }
|
||||||
@media (max-width: 900px) {
|
@media (max-width: 900px) {
|
||||||
.entry-list thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
|
.entry-list thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
|
||||||
|
|||||||
Reference in New Issue
Block a user