Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com>
This commit is contained in:
gpt-engineer-app[bot]
2026-04-19 17:08:09 +00:00
co-authored by renee-png
parent c2fc933bb5
commit c08ec1ff16
4 changed files with 58 additions and 61 deletions
+11 -13
View File
@@ -1148,19 +1148,17 @@ function AddCollectionDialog({
: "All homeowners on this HOA already have a collection on this matter."}
</p>
) : (
<Select value={homeownerId} onValueChange={setHomeownerId}>
<SelectTrigger>
<SelectValue placeholder="Pick a homeowner…" />
</SelectTrigger>
<SelectContent>
{available.map((h) => (
<SelectItem key={h.id} value={h.id}>
{h.last_name}, {h.first_name}
{h.unit_number ? ` — Unit ${h.unit_number}` : ""}
</SelectItem>
))}
</SelectContent>
</Select>
<SearchableSelect
value={homeownerId}
onValueChange={setHomeownerId}
placeholder="Pick a homeowner…"
searchPlaceholder="Search homeowners…"
emptyText="No homeowners found."
options={available.map((h) => {
const label = `${h.last_name}, ${h.first_name}${h.unit_number ? ` — Unit ${h.unit_number}` : ""}`;
return { value: h.id, label, keywords: `${h.first_name} ${h.last_name} ${h.unit_number ?? ""}` };
})}
/>
)}
</div>
<div>
+24 -28
View File
@@ -214,46 +214,42 @@ export function NewTaskDialog({
<div className="grid grid-cols-2 gap-3">
<div>
<Label className="text-xs">Client (optional)</Label>
<Select
<SearchableSelect
value={clientId ?? "_none"}
onValueChange={(v) => {
const next = v === "_none" ? null : v;
setClientId(next);
// Clear case if it doesn't belong to selected client
if (next && caseId) {
const k = cases.find((c) => c.id === caseId);
if (k && k.client_id !== next) setCaseId(null);
}
}}
>
<SelectTrigger>
<SelectValue placeholder="No client" />
</SelectTrigger>
<SelectContent>
<SelectItem value="_none">No client</SelectItem>
{clients.map((c) => (
<SelectItem key={c.id} value={c.id}>
{c.name}
</SelectItem>
))}
</SelectContent>
</Select>
placeholder="No client"
searchPlaceholder="Search clients…"
emptyText="No clients found."
options={[
{ value: "_none", label: "No client" },
...clients.map((c) => ({ value: c.id, label: c.name, keywords: c.name })),
]}
/>
</div>
<div>
<Label className="text-xs">Case (optional)</Label>
<Select value={caseId ?? "_none"} onValueChange={(v) => setCaseId(v === "_none" ? null : v)}>
<SelectTrigger>
<SelectValue placeholder="No case" />
</SelectTrigger>
<SelectContent>
<SelectItem value="_none">No case</SelectItem>
{filteredCases.map((c) => (
<SelectItem key={c.id} value={c.id}>
{c.case_number} — {c.title}
</SelectItem>
))}
</SelectContent>
</Select>
<SearchableSelect
value={caseId ?? "_none"}
onValueChange={(v) => setCaseId(v === "_none" ? null : v)}
placeholder="No case"
searchPlaceholder="Search cases…"
emptyText="No cases found."
options={[
{ value: "_none", label: "No case" },
...filteredCases.map((c) => ({
value: c.id,
label: `${c.case_number} — ${c.title}`,
keywords: `${c.case_number} ${c.title}`,
})),
]}
/>
</div>
</div>
<div>
+11 -7
View File
@@ -112,13 +112,17 @@ function NewCase() {
<div className="grid grid-cols-2 gap-3">
<div className="space-y-2">
<Label>Client <span className="text-muted-foreground font-normal">(optional)</span></Label>
<Select value={form.client_id || "__none"} onValueChange={(v) => setForm({ ...form, client_id: v === "__none" ? "" : v })}>
<SelectTrigger><SelectValue placeholder="No client" /></SelectTrigger>
<SelectContent>
<SelectItem value="__none">No client (attach later)</SelectItem>
{clients.map((c) => <SelectItem key={c.id} value={c.id}>{c.name}</SelectItem>)}
</SelectContent>
</Select>
<SearchableSelect
value={form.client_id || "__none"}
onValueChange={(v) => setForm({ ...form, client_id: v === "__none" ? "" : v })}
placeholder="No client"
searchPlaceholder="Search clients…"
emptyText="No clients found."
options={[
{ value: "__none", label: "No client (attach later)" },
...clients.map((c) => ({ value: c.id, label: c.name, keywords: c.name })),
]}
/>
</div>
<div className="space-y-2">
<Label>Case number</Label>
+12 -13
View File
@@ -110,19 +110,18 @@ function StatusUpdatesPage() {
<form onSubmit={submit} className="space-y-4">
<div className="space-y-1.5">
<Label>Case</Label>
<Select value={caseId} onValueChange={setCaseId}>
<SelectTrigger>
<SelectValue placeholder="Select a case…" />
</SelectTrigger>
<SelectContent>
{cases.map((c) => (
<SelectItem key={c.id} value={c.id}>
{c.case_number} — {c.title}
{c.client?.name ? ` · ${c.client.name}` : ""}
</SelectItem>
))}
</SelectContent>
</Select>
<SearchableSelect
value={caseId}
onValueChange={setCaseId}
placeholder="Select a case…"
searchPlaceholder="Search cases…"
emptyText="No cases found."
options={cases.map((c) => ({
value: c.id,
label: `${c.case_number} — ${c.title}${c.client?.name ? ` · ${c.client.name}` : ""}`,
keywords: `${c.case_number} ${c.title} ${c.client?.name ?? ""}`,
}))}
/>
{selectedCase && (
<Link
to="/cases/$caseId"