From c4588098ca6ad0edd8262aa98bf2a0229350ceaf Mon Sep 17 00:00:00 2001 From: neodk2004 Date: Sat, 6 Jun 2026 10:35:31 +0200 Subject: [PATCH] =?UTF-8?q?fix(01-03):=20defer=20species/breed=20Select=20?= =?UTF-8?q?render=20until=20data=20loads=20=E2=80=94=20fixes=20CUID=20show?= =?UTF-8?q?ing=20in=20trigger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/pet/PetForm.tsx | 147 +++++++++++++++++---------------- 1 file changed, 76 insertions(+), 71 deletions(-) diff --git a/src/components/pet/PetForm.tsx b/src/components/pet/PetForm.tsx index 5afef81..e86d1e5 100644 --- a/src/components/pet/PetForm.tsx +++ b/src/components/pet/PetForm.tsx @@ -19,6 +19,7 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { Skeleton } from "@/components/ui/skeleton"; /** * PetForm — reusable create/edit form for pet profiles. @@ -98,12 +99,12 @@ export function PetForm({ initialValues?.speciesId ?? "" ); - const { data: speciesList = [] } = useQuery({ + const { data: speciesList = [], isLoading: speciesLoading } = useQuery({ ...trpc.pets.listSpecies.queryOptions(), staleTime: Infinity, }); - const { data: breedList = [] } = useQuery({ + const { data: breedList = [], isLoading: breedsLoading } = useQuery({ ...trpc.pets.listBreeds.queryOptions( { speciesId: selectedSpeciesId || "__none__" }, ), @@ -201,40 +202,42 @@ export function PetForm({ )} - {/* Species selector */} + {/* Species selector — defer render until list loaded so SelectValue resolves names */}
- ( - { + field.onChange(val); + setSelectedSpeciesId(val); + setValue("breedId", null); + }} > - - - - {speciesList.map((species) => ( - - {species.name} - - ))} - - - )} - /> + + + + + {speciesList.map((species) => ( + + {species.name} + + ))} + + + )} + /> + )} {errors.speciesId && (

{errors.speciesId.message} @@ -242,49 +245,51 @@ export function PetForm({ )}

- {/* Breed selector */} + {/* Breed selector — defer render until list loaded so SelectValue resolves names */}
- ( - field.onChange(val ?? null)} disabled={!selectedSpeciesId} > - - - - {breedList.length === 0 ? ( - - No breeds found for this species. - - ) : ( - breedList.map((breed) => ( - - {breed.name} + + + + + {breedList.length === 0 ? ( + + No breeds found for this species. - )) - )} - - - )} - /> + ) : ( + breedList.map((breed) => ( + + {breed.name} + + )) + )} + + + )} + /> + )} {errors.breedId && (

{errors.breedId.message}

)}