Frontend Sprint 3+4: Dog-Switcher, Health-Seite, Multi-Dog Tagebuch
- app.js: vollständiger Dog-Switcher (Avatar im Header/Sidebar, Quickpicker bei 3+ Hunden, setActiveDog, localStorage-Persistenz), iOS Ghost-Click Fix, Loading-Guard, Logout State Reset - index.html: Dog-Switcher HTML, Favicon-Links, Sidebar "+ Neu erstellen", Navigation Tab Karte → Gesundheit - health.js (neu): vollständiges Health-Frontend mit Tabs (Impfung, Entwurmung, Tierarzt, Medikament, Gewicht-Kurve, Allergie, Dokument), Ampel-System, KI-Zusammenfassung - dog-profile.js: "+ Weiteren Hund anlegen" Button + _openCreateModal(), Event-Delegation statt direkter Listener (kein Doppelaufruf) - diary.js: Dog-Picker im Formular, Avatar-Reihe auf Karten, Dog-Chips im Detail-Modal, dog_ids im API-Payload - poison.js: Erledigt-Dialog mit Grundauswahl (beseitigt/fehlerhaft/anderes) - api.js: health-Endpoints (list, create, update, delete, upload, ki) - ui.js: confirm() Fix (resolve vor close) - layout.css: Dog-Switcher Styles, scrollbare Sidebar-Nav, User-Item fix - components.css: Health-Styles, Diary Dog-Picker, Ampel-Punkte, Gewicht-SVG - icons/: Favicon-Set (ico, 16px, 32px, 180px, 192px, 512px)
This commit is contained in:
parent
6f48ec581d
commit
d8b9561fff
16 changed files with 1597 additions and 91 deletions
|
|
@ -58,6 +58,16 @@
|
|||
flex: 1;
|
||||
}
|
||||
|
||||
/* Dog Switcher Container im Header */
|
||||
#header-dog-switcher {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-2);
|
||||
min-width: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.header-back {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -201,7 +211,7 @@
|
|||
background: var(--c-surface);
|
||||
border-right: 1px solid var(--c-border-light);
|
||||
flex-direction: column;
|
||||
overflow-y: auto;
|
||||
overflow: hidden; /* Sidebar selbst scrollt nicht */
|
||||
box-shadow: var(--shadow-sm);
|
||||
}
|
||||
|
||||
|
|
@ -229,14 +239,31 @@
|
|||
color: var(--c-text);
|
||||
}
|
||||
|
||||
.sidebar-nav {
|
||||
flex: 1;
|
||||
padding: var(--space-4) var(--space-2);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--space-1);
|
||||
.sidebar-add {
|
||||
padding: var(--space-4) var(--space-4) var(--space-2);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.sidebar-nav {
|
||||
flex: 1;
|
||||
padding: var(--space-2) var(--space-2) var(--space-4);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--space-1);
|
||||
overflow-y: auto;
|
||||
min-height: 0; /* wichtig: flex-child darf kleiner werden als Inhalt */
|
||||
/* Firefox */
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: var(--c-primary) var(--c-surface);
|
||||
}
|
||||
.sidebar-nav::-webkit-scrollbar { width: 6px; }
|
||||
.sidebar-nav::-webkit-scrollbar-track { background: var(--c-surface); }
|
||||
.sidebar-nav::-webkit-scrollbar-thumb {
|
||||
background: var(--c-primary);
|
||||
border-radius: 3px;
|
||||
}
|
||||
.sidebar-nav::-webkit-scrollbar-thumb:hover { background: var(--c-primary-dark); }
|
||||
|
||||
.sidebar-section-label {
|
||||
font-size: var(--text-xs);
|
||||
font-weight: var(--weight-semibold);
|
||||
|
|
@ -270,6 +297,12 @@
|
|||
color: var(--c-primary-dark);
|
||||
font-weight: var(--weight-semibold);
|
||||
}
|
||||
/* User-Eintrag bekommt nie den Active-Stil */
|
||||
.sidebar-item--user.active {
|
||||
background: transparent;
|
||||
color: var(--c-text-secondary);
|
||||
font-weight: var(--weight-medium);
|
||||
}
|
||||
.sidebar-item-icon {
|
||||
font-size: 18px;
|
||||
width: 24px;
|
||||
|
|
@ -291,11 +324,7 @@
|
|||
padding: 0 var(--space-1);
|
||||
}
|
||||
|
||||
.sidebar-footer {
|
||||
padding: var(--space-4) var(--space-2);
|
||||
border-top: 1px solid var(--c-border-light);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
/* sidebar-footer entfernt — Einstellungen/Konto sind jetzt Teil der scrollbaren Nav */
|
||||
|
||||
/* ------------------------------------------------------------
|
||||
5. PAGE WRAPPER (inneres Layout der Seiten)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue