Web: Dashboards in der Seitenleiste, Karten mehrfach, Buchen ohne Seitenwechsel
Drei Dinge in einem, weil sie dieselbe Umstellung brauchen. Karten sind jetzt Instanzen: Die Anordnung merkt sich neben der Kennung auch die Art und ein "props" je Karte. Dadurch laesst sich dieselbe Art mehrfach auflegen, und "Verlauf eines Artikels" merkt sich endlich, welcher Artikel gemeint ist - vorher lag diese Wahl nur in useState und war nach jedem Neuladen wieder weg, was die Karte zum Beobachten unbrauchbar machte. Wer mehrere Artikel im Blick haben will, legt jetzt einfach mehrere Karten an. Mehrere Dashboards stehen als eingerueckte Eintraege unter "Übersicht" in der Seitenleiste, anlegen und umbenennen laeuft ueber die Kopfzeile. Ab dem zweiten werden sie aufgezaehlt; bei einem einzigen waere die Liste nur eine Verdopplung. Neu sind die Karten "Einlagern" und "Auslagern": Artikel suchen, Menge eintragen, gebucht. MHD und Lagerort bleiben bewusst weg - wer die braucht, ist auf der vollen Seite besser aufgehoben. Die alte Karte "Schnellzugriff" bleibt als reine Verlinkung bestehen. Der Bestaetigungsdialog kann jetzt auch nach Text fragen (prompt: true). Das war noetig, weil Dashboards benannt werden - und window.prompt sieht aus wie der Browser, nicht wie diese Anwendung; derselbe Grund, aus dem es hier schon kein window.confirm gibt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -779,3 +779,63 @@ select.zeitraum:hover { color: var(--text); }
|
||||
--accent-hover: #34429a; --accent-soft: #eceefb; --danger: #c0392b; --danger-soft: #fbeceb;
|
||||
--warn: #b06f14; --warn-soft: #fbf3e6; --ok: #2e7d55;
|
||||
}
|
||||
|
||||
/* ---- Dashboards: Unterpunkte in der Seitenleiste ---- */
|
||||
/* Eingerückt und kleiner, damit die Dashboards sichtbar zu "Übersicht"
|
||||
gehören und nicht wie eigene Hauptbereiche wirken. */
|
||||
.nav-link.sub {
|
||||
padding-left: 34px;
|
||||
font-size: 13px;
|
||||
color: var(--muted);
|
||||
}
|
||||
.nav-link.sub.active { font-weight: 600; }
|
||||
|
||||
/* ---- Aktionskarten: Ein- und Auslagern ohne Seitenwechsel ---- */
|
||||
.aktion-karte { gap: 10px; }
|
||||
|
||||
.aktion-suche { position: relative; }
|
||||
.aktion-suche input { width: 100%; }
|
||||
|
||||
/* Trefferliste schwebt über der Karte - im Raster ist darunter kein Platz. */
|
||||
.aktion-treffer {
|
||||
position: absolute;
|
||||
z-index: 5;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin: 2px 0 0;
|
||||
padding: 4px;
|
||||
list-style: none;
|
||||
background: var(--surface);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 8px 20px rgb(0 0 0 / 12%);
|
||||
max-height: 180px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.aktion-treffer li button {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 6px 8px;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
background: none;
|
||||
color: var(--text);
|
||||
text-align: left;
|
||||
cursor: pointer;
|
||||
font-size: 13px;
|
||||
}
|
||||
.aktion-treffer li button:hover { background: var(--surface-2); }
|
||||
|
||||
.aktion-gewaehlt {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 6px 8px;
|
||||
background: var(--surface-2);
|
||||
border-radius: 8px;
|
||||
}
|
||||
.aktion-gewaehlt .name { flex: 1; font-weight: 600; font-size: 14px; }
|
||||
|
||||
.aktion-zeile { display: flex; gap: 8px; align-items: center; }
|
||||
.aktion-zeile .btn { flex: 1; justify-content: center; }
|
||||
.aktion-menge { width: 72px; text-align: right; }
|
||||
|
||||
Reference in New Issue
Block a user