6e3fc9721a
Merge RSVP + slot claim into a single form. Add plus_one field to RSVPs. Add clickable RSVP names that open a modal to edit name/note/plus_one. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
60 lines
2.0 KiB
HTML
60 lines
2.0 KiB
HTML
{{define "slots-inner"}}
|
|
<div class="section-label">What's needed</div>
|
|
<div class="slots-grid">
|
|
{{range .Slots}}
|
|
<div class="slot-card{{if .IsFull}} full{{end}}">
|
|
<div class="slot-info">
|
|
<div class="slot-name">{{.Slot.Emoji}} {{.Slot.Name}}</div>
|
|
<div class="slot-claims">
|
|
{{if .Claims}}
|
|
{{range .Claims}}
|
|
<span class="claim-chip">
|
|
{{.Name}}{{if .Note}} <small style="color:#888">({{.Note}})</small>{{end}}
|
|
<button hx-delete="/e/{{$.Event.Slug}}/claim/{{.ID}}"
|
|
hx-target="#slots-container"
|
|
hx-swap="innerHTML settle:0.1s"
|
|
hx-confirm="Remove {{.Name}}?"
|
|
title="Remove">×</button>
|
|
</span>
|
|
{{end}}
|
|
{{else}}
|
|
<span class="nobody">nobody yet</span>
|
|
{{end}}
|
|
</div>
|
|
<div class="progress-bar">
|
|
<div class="progress-fill{{if .IsFull}} full{{end}}" style="width:{{.Pct}}%"></div>
|
|
</div>
|
|
</div>
|
|
<div class="slot-right">
|
|
<span class="slot-count{{if .IsFull}} warn{{end}}">{{.ClaimCount}} / {{.Slot.MaxClaims}}{{if .IsFull}} ✓{{end}}</span>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
|
|
<div class="section-label">Going ({{.TotalGoing}})</div>
|
|
<div class="rsvp-list">
|
|
{{if .GoingList}}
|
|
{{range .GoingList}}
|
|
<span class="claim-chip">
|
|
{{if gt .RsvpID 0}}<span class="rsvp-name-link"
|
|
hx-get="/e/{{$.Event.Slug}}/rsvp/{{.RsvpID}}/edit"
|
|
hx-target="#edit-modal"
|
|
hx-swap="innerHTML">{{.Name}}</span>{{else}}{{.Name}}{{end}}{{if gt .PlusOne 0}} +{{.PlusOne}}{{end}}{{if .Note}} <small style="color:#888">({{.Note}})</small>{{end}}
|
|
{{if gt .RsvpID 0}}
|
|
<button hx-delete="/e/{{$.Event.Slug}}/rsvp/{{.RsvpID}}"
|
|
hx-target="#slots-container"
|
|
hx-swap="innerHTML settle:0.1s"
|
|
hx-confirm="Remove {{.Name}}?"
|
|
title="Remove">×</button>
|
|
{{end}}
|
|
</span>
|
|
{{end}}
|
|
{{else}}
|
|
<span class="nobody">no one yet</span>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{define "slots.html"}}{{template "slots-inner" .}}{{end}}
|