Nandrx ae3692697b Add REST-compliant PUT/DELETE endpoints and invitation validation
- Replace POST /invitation/:id/accept|decline with PUT /invitation/:id
- Add DELETE /invitation/:id (full CRUD: GET, POST, PUT, DELETE)
- Validate invitation recipient exists before creating invitation (404)
- Block self-invitation (400)
- Propagate server error messages to inline card feedback
- Add Loeschen button to invitation cards (demonstrates DELETE in UI)
- Improve empty state with icon and descriptive text
2026-05-31 17:52:25 +02:00

44 lines
1.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* eventList.js Rendert eine Liste von Event-Karten in einen Container.
* Delegiert die Erstellung einzelner Karten an createEventCard().
*/
import { createEventCard } from "./eventCard.js";
/**
* Leert den Container und fügt für jedes Event eine Karte ein.
* Zeigt eine Meldung an, wenn keine Events gefunden wurden.
* @param {Array} events - Array von Event-Objekten
* @param {HTMLElement} container - Ziel-DOM-Element
*/
export function renderEventList(events, container) {
container.innerHTML = "";
if (events.length === 0) {
const state = document.createElement("div");
state.className = "empty-state";
const icon = document.createElement("div");
icon.className = "empty-state__icon";
icon.setAttribute("aria-hidden", "true");
icon.textContent = "🎭";
const title = document.createElement("p");
title.className = "empty-state__text";
title.textContent = "Keine Events gefunden";
const sub = document.createElement("p");
sub.className = "empty-state__sub";
sub.textContent = "Versuche eine andere Stadt oder erweitere den Datumsbereich.";
state.append(icon, title, sub);
container.appendChild(state);
return;
}
events.forEach(event => {
const card = createEventCard(event);
container.appendChild(card);
});
}