{ticket.name} {ticket.price}€ {displayCapacity}
{ expandedTicketId = ''; emit('delete'); }} danger>Supprimer { expandedTicketId = expanded ? '' : ticket.id; }} > {#if expanded} {:else} {/if}
{#if expanded} { if (!(e.detail.target instanceof HTMLInputElement)) return; ticket.name = e.detail.target.value.replace(/^\s*(ticket|billet|place)\b\s*(\S)/i, '$2'); if (ticket.name !== e.detail.target.value) showNameHint = true; }} required maxlength={255} label="Nom" value={ticket.name} />
{ ticket.openToPromotions = [1, 2, 3].map((y) => fromYearTier(y)); }}>1+2+3As { ticket.openToPromotions = [fromYearTier(1)]; }}>1As { const range = yearRangeUpTo(schoolYearStart().getFullYear() + 4, 10); return new Fuse( range.map((year) => ({ value: year, label: promoLabel(year), })), { keys: ['label'] }, ) .search(q) .map(({ item }) => item); }} valueKey="value" labelKey="label" bind:values={ticket.openToPromotions} objects={ticket.openToPromotions.map((year) => ({ value: year, label: promoLabel(year), }))} /> { const { majors } = await $zeus.query({ majors: { name: true, shortName: true, id: true, }, }); const searcher = new Fuse(majors, { keys: ['name', 'shortName'] }); return searcher.search(query).map((r) => r.item); }} labelKey="shortName" valueKey="id" values={ticket.openToMajors.map((r) => r.id)} bind:objects={ticket.openToMajors} />
{/if}