"Antworten" im Gästeliste-Dropdown öffnet GuestFormModal + Refactoring #158

Closed
opened 2026-06-30 23:50:52 +02:00 by niboer · 2 comments
Owner

Problem

Im Gästeliste-Dropdown (?tab=guests) gibt es das Submenü "Status". Der Eintrag "Antworten" setzt aktuell direkt status=confirmed via ?/updateStatus — ohne das Formular zu öffnen. Das Formular muss aber vor der Zusage ausgefüllt werden.

Zusätzlich: Die actionStatusOptions-Konstante wird nur noch im Status-Submenü verwendet und kann nach dem Umbau entfallen (Labels direkt in die Buttons).

Änderungen

Datei: frontend/src/routes/app/events/[eventId]/+page.svelte

Status-Submenü (ca. Zeile 966):

Aktuell (vereinfacht):

{#if hoveredSubmenu === 'status'}
  <form method="POST" action="?/updateStatus" use:enhance>
    <input type="hidden" name="personId" value={personId} />
    {#each actionStatusOptions as opt (opt.value)}
      <button type="submit" name="status" value={opt.value}>{opt.label}</button>
    {/each}
  </form>
{/if}

Neu:

{#if hoveredSubmenu === 'status'}
  <form method="POST" action="?/updateStatus" use:enhance>
    <input type="hidden" name="personId" value={personId} />
    <button type="submit" name="status" value="invited">Eingeladen</button>
  </form>
  <button onclick={() => { closeDropdown(); openGuestForm(row as Guest); }}
    class="flex w-full px-2 py-1.5 text-xs hover:bg-muted">
    Antworten
  </button>
  <form method="POST" action="?/updateStatus" use:enhance>
    <input type="hidden" name="personId" value={personId} />
    <button type="submit" name="status" value="declined">Abgesagt</button>
  </form>
{/if}

actionStatusOptions entfernen (ca. Zeile 215):

- const actionStatusOptions = [
-   { value: 'invited', label: 'Eingeladen' },
-   { value: 'confirmed', label: 'Antworten' },
-   { value: 'declined', label: 'Abgesagt' },
- ];

Bonus: Prüfen ob openGuestForm auch im Antworten-Tab (?tab=antworten) die "Beantworten"/"Ändern"-Buttons ersetzen sollte, damit der gesamte confirmed-Flow nur noch über das Modal läuft.

Betroffene Dateien

Datei Änderung
frontend/src/routes/app/events/[eventId]/+page.svelte Status-Submenü aufteilen, actionStatusOptions entfernen

Tests

  • events.test.ts: Test hat Dropdown-Menue in Aktionen-Spalte prüft auf closeDropdown und hoveredSubmenu — bleibt gültig
  • Prüfen ob Tests auf actionStatusOptions referenzieren (aktuell nein)

Commit-Konvention

feat(frontend): "Antworten" im Gaesteliste-Dropdown oeffnet Modal

- Status-Submenue: 'Antworten' als eigener Button mit openGuestForm
- Eingeladen/Abgesagt bleiben als direkte Status-Setzer
- actionStatusOptions entfernt (Labels jetzt hardcoded)
### Problem Im Gästeliste-Dropdown (`?tab=guests`) gibt es das Submenü "Status". Der Eintrag "Antworten" setzt aktuell direkt `status=confirmed` via `?/updateStatus` — ohne das Formular zu öffnen. Das Formular muss aber vor der Zusage ausgefüllt werden. Zusätzlich: Die `actionStatusOptions`-Konstante wird nur noch im Status-Submenü verwendet und kann nach dem Umbau entfallen (Labels direkt in die Buttons). ### Änderungen **Datei:** `frontend/src/routes/app/events/[eventId]/+page.svelte` **Status-Submenü (ca. Zeile 966):** Aktuell (vereinfacht): ```svelte {#if hoveredSubmenu === 'status'} <form method="POST" action="?/updateStatus" use:enhance> <input type="hidden" name="personId" value={personId} /> {#each actionStatusOptions as opt (opt.value)} <button type="submit" name="status" value={opt.value}>{opt.label}</button> {/each} </form> {/if} ``` Neu: ```svelte {#if hoveredSubmenu === 'status'} <form method="POST" action="?/updateStatus" use:enhance> <input type="hidden" name="personId" value={personId} /> <button type="submit" name="status" value="invited">Eingeladen</button> </form> <button onclick={() => { closeDropdown(); openGuestForm(row as Guest); }} class="flex w-full px-2 py-1.5 text-xs hover:bg-muted"> Antworten </button> <form method="POST" action="?/updateStatus" use:enhance> <input type="hidden" name="personId" value={personId} /> <button type="submit" name="status" value="declined">Abgesagt</button> </form> {/if} ``` **`actionStatusOptions` entfernen** (ca. Zeile 215): ```diff - const actionStatusOptions = [ - { value: 'invited', label: 'Eingeladen' }, - { value: 'confirmed', label: 'Antworten' }, - { value: 'declined', label: 'Abgesagt' }, - ]; ``` **Bonus:** Prüfen ob `openGuestForm` auch im Antworten-Tab (`?tab=antworten`) die "Beantworten"/"Ändern"-Buttons ersetzen sollte, damit der gesamte confirmed-Flow nur noch über das Modal läuft. ### Betroffene Dateien | Datei | Änderung | |-------|----------| | `frontend/src/routes/app/events/[eventId]/+page.svelte` | Status-Submenü aufteilen, `actionStatusOptions` entfernen | ### Tests - `events.test.ts`: Test `hat Dropdown-Menue in Aktionen-Spalte` prüft auf `closeDropdown` und `hoveredSubmenu` — bleibt gültig - Prüfen ob Tests auf `actionStatusOptions` referenzieren (aktuell nein) ### Commit-Konvention ``` feat(frontend): "Antworten" im Gaesteliste-Dropdown oeffnet Modal - Status-Submenue: 'Antworten' als eigener Button mit openGuestForm - Eingeladen/Abgesagt bleiben als direkte Status-Setzer - actionStatusOptions entfernt (Labels jetzt hardcoded) ```
Author
Owner

Implemented in c7de9e5

  • Status-Submenue aufgeteilt: Antworten oeffnet GuestFormModal, Eingeladen/Abgesagt bleiben direkte Status-Setzer
  • actionStatusOptions entfernt
Implemented in c7de9e5 - Status-Submenue aufgeteilt: Antworten oeffnet GuestFormModal, Eingeladen/Abgesagt bleiben direkte Status-Setzer - actionStatusOptions entfernt
Author
Owner

Follow-up in fa9d8f3: Unused confirm-Action auf Personenseite entfernt (direkter PUT status=confirmed ohne formFinal war nie im Template verdrahtet).

Follow-up in fa9d8f3: Unused confirm-Action auf Personenseite entfernt (direkter PUT status=confirmed ohne formFinal war nie im Template verdrahtet).
Sign in to join this conversation.
No description provided.