feat(calendar): image/attachment per event, direct links, copy link, ImageModal component
- calendar_item schema: flyer → image (type: image), attachment (assetUrl)
- CalendarItemData: image + attachment fields
- event anchor IDs (#event-{slug}) with onMount hash scroll + auto-open
- share button uses direct calendar anchor URL
- copy link button (mdi:link-variant) copies anchor URL to clipboard
- ImageModal extracted as reusable component
- action buttons always show text (no expand-on-hover)
- onDestroy window guard (SSR fix)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+19
-4
@@ -383,15 +383,30 @@ export interface LiveStrommixBlockData {
|
||||
}
|
||||
|
||||
/** Kalender-Item (calendar_item) – aus OpenAPI; terminZeit = ISO date-time.
|
||||
* Lokale Erweiterungen (terminEnde, location, tags) sind im RustyCMS-Schema
|
||||
* ergänzt und werden bis zur OpenAPI-Regen hier inline mitgeführt. */
|
||||
* Lokale Erweiterungen sind im RustyCMS-Schema ergänzt und werden bis zur
|
||||
* OpenAPI-Regen hier inline mitgeführt. */
|
||||
export type CalendarItemData = components["schemas"]["calendar_item"] & {
|
||||
/** Optionales Endedatum für Mehrtagesveranstaltungen (ISO date-time). */
|
||||
terminEnde?: string;
|
||||
/** Optionale Veranstaltungsort-Beschreibung (Adresse oder Name). */
|
||||
location?: string;
|
||||
/** Optionaler Veranstaltungsort (string oder {text, lat, lng}). */
|
||||
location?: string | { text?: string; lat?: number; lng?: number };
|
||||
/** Optionale Tags zur Filterung. */
|
||||
tags?: string[];
|
||||
/** Optionales Veranstaltungsbild (aufgelöstes image-Feld oder Slug). */
|
||||
image?:
|
||||
| string
|
||||
| {
|
||||
_type?: "img";
|
||||
_slug?: string;
|
||||
src?: string;
|
||||
description?: string;
|
||||
file?: { url?: string };
|
||||
};
|
||||
/** Optionaler Dateianhang (z.B. PDF-Flyer). */
|
||||
attachment?: {
|
||||
src?: string;
|
||||
label?: string;
|
||||
};
|
||||
};
|
||||
|
||||
/** Kalender-Block (_type: "calendar"). items nach Resolve: CalendarItemData[]. Basis aus OpenAPI (calendar). */
|
||||
|
||||
Reference in New Issue
Block a user