Files
eventmap/css/layout.css
T
dapelza 10f9170d61 Phase 3: Formular zum Anlegen und Bearbeiten
Neues Modal (js/ui/form.js) mit allen Feldern aus anforderung.md
Abschnitt 6: Name, Kategorie, Kurz-/Volltext-Beschreibung, Adresse, Ort,
Koordinaten, Altersgruppe, Kosten, Oeffnungszeiten, Aufenthaltsdauer,
Ausstattungs-Checkboxen, Indoor/Outdoor, Bild-URL, Website, Tags.

Validierung: Pflichtfelder (Name, Kategorie, Koordinaten), Koordinaten-
Bereichspruefung, Alter min<=max, Bild-/Website-URL nur http/https.
Fehler erscheinen inline je Feld (aria-invalid/aria-describedby), erstes
fehlerhaftes Feld wird fokussiert.

EventMap.ui.openPlaceForm(place) dient als Einstiegspunkt: ohne Argument
zum Neuanlegen, mit Place-Objekt zum Bearbeiten. Speichern aktualisiert
den Store mit neuer Array-Referenz (Karte/Liste reagieren automatisch)
und persistiert nach LocalStorage.

Verdrahtung: neuer "+ Neues Ausflugsziel hinzufuegen"-Button in der
Karten-Toolbar; der bisherige Bearbeiten-Platzhalter in der
Detailansicht (js/ui/detail.js) oeffnet jetzt das Formular vorausgefuellt
mit dem aktuell angezeigten Ausflugsziel.
2026-07-24 11:43:01 +02:00

63 lines
1.0 KiB
CSS

/* Grundlegendes App-Layout: Header + Karte/Liste. Mobile-first;
Desktop-Anpassungen (>=1024px) siehe css/responsive.css. */
.app-header {
height: var(--header-height);
display: flex;
flex-direction: column;
justify-content: center;
padding: 0 var(--space-lg);
background: var(--color-primary);
color: #fff;
}
.app-header__title {
font-size: 1.4rem;
font-weight: 700;
}
.app-header__subtitle {
font-size: 0.85rem;
opacity: 0.9;
}
.app-layout {
display: flex;
flex-direction: column;
}
.map-panel {
position: relative;
height: 50vh;
min-height: 320px;
display: flex;
flex-direction: column;
}
.map-panel__toolbar {
position: absolute;
top: var(--space-sm);
left: var(--space-sm);
z-index: 1000;
display: flex;
flex-wrap: wrap;
gap: var(--space-sm);
}
.map-panel__map {
flex: 1;
width: 100%;
height: 100%;
background: var(--color-border);
}
.list-panel {
padding: var(--space-md);
overflow-y: auto;
}
.list-panel__title {
font-size: 1.1rem;
margin-bottom: var(--space-md);
}