From 9924b89d2bad6127a5d552e24479ad8fef1ccf68 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Mon, 27 Oct 2025 11:42:58 -0500 Subject: [PATCH] refactor image picker --- web/src/components/overlay/ImagePicker.tsx | 93 ++++++++++++++-------- 1 file changed, 58 insertions(+), 35 deletions(-) diff --git a/web/src/components/overlay/ImagePicker.tsx b/web/src/components/overlay/ImagePicker.tsx index 408338d0d..3dde61f65 100644 --- a/web/src/components/overlay/ImagePicker.tsx +++ b/web/src/components/overlay/ImagePicker.tsx @@ -20,12 +20,16 @@ type ImagePickerProps = { selectedImageId?: string; setSelectedImageId?: (id: string) => void; camera: string; + direct?: boolean; + className?: string; }; export default function ImagePicker({ selectedImageId, setSelectedImageId, camera, + direct = false, + className, }: ImagePickerProps) { const { t } = useTranslation(["components/dialog"]); const [open, setOpen] = useState(false); @@ -63,11 +67,60 @@ export default function ImagePicker({ setSelectedImageId(id); } setSearchTerm(""); - setOpen(false); + if (!direct) { + setOpen(false); + } }, - [setSelectedImageId], + [setSelectedImageId, direct], ); + const renderSearchInput = () => ( + setSearchTerm(e.target.value)} + /> + ); + + const renderImageGrid = () => ( +
+ {images.length === 0 ? ( +
+ {t("imagePicker.noImages")} +
+ ) : ( + images.map((image) => ( +
+ {image.label} handleImageSelect(image.id)} + /> +
+ )) + )} +
+ ); + + if (direct) { + return ( +
+ {renderSearchInput()} + {renderImageGrid()} +
+ ); + } + return (
{t("imagePicker.selectImage")}
- setSearchTerm(e.target.value)} - /> + {renderSearchInput()}
-
- {images.length === 0 ? ( -
- {t("imagePicker.noImages")} -
- ) : ( - images.map((image) => ( -
- {image.label} handleImageSelect(image.id)} - /> -
- )) - )} -
+ {renderImageGrid()}