diff --git a/src/components/admin/admin-cards-section.tsx b/src/components/admin/admin-cards-section.tsx index 616a414..0414e15 100644 --- a/src/components/admin/admin-cards-section.tsx +++ b/src/components/admin/admin-cards-section.tsx @@ -305,10 +305,10 @@ export function AdminCardsSection({ } const updated = data as Card; onCardsChange(cards.map((c) => (c.id === updated.id ? updated : c))); - await refreshCards(); setEditingCard(null); setFormOpen(false); setSuccess(t("admin.cards.updated")); + void refreshCards().catch(() => undefined); return true; } @@ -339,10 +339,10 @@ export function AdminCardsSection({ setVariationColumnFilter(""); setTagsColumnFilter(""); setPage(Math.max(0, Math.ceil(nextCards.length / pageSize) - 1)); - await refreshCards(); setEditingCard(null); setFormOpen(false); setSuccess(t("admin.cards.created")); + void refreshCards().catch(() => undefined); return true; } catch { setSaveError(t("admin.cards.saveFailed")); diff --git a/src/components/card-form.tsx b/src/components/card-form.tsx index b5d287b..8729905 100644 --- a/src/components/card-form.tsx +++ b/src/components/card-form.tsx @@ -36,10 +36,12 @@ interface CardFormProps { } interface CardFormComboboxProps { + id?: string; value: string; onChange: (value: string) => void; suggestions: string[]; disabled?: boolean; + required?: boolean; } function uniqueSorted(values: string[]): string[] { @@ -83,22 +85,27 @@ function variationsLinkedToSet(references: References, setName: string): string[ } function CardFormCombobox({ + id, value, onChange, suggestions, disabled, + required, }: CardFormComboboxProps) { const inputId = useId(); - const listboxId = `${inputId}-listbox`; + const resolvedInputId = id ?? inputId; + const listboxId = `${resolvedInputId}-listbox`; const [open, setOpen] = useState(false); const [activeIndex, setActiveIndex] = useState(0); const query = value.trim().toLowerCase(); const visibleSuggestions = useMemo( - () => - suggestions.filter((suggestion) => + () => { + if (!open) return []; + return suggestions.filter((suggestion) => suggestion.toLowerCase().includes(query) - ), - [query, suggestions] + ); + }, + [open, query, suggestions] ); function selectSuggestion(nextValue: string): void { @@ -110,7 +117,7 @@ function CardFormCombobox({ return (