diff --git a/frontend/libs/components/gallery-modal/src/lib/gallery-modal.tsx b/frontend/libs/components/gallery-modal/src/lib/gallery-modal.tsx index 936b9803de..2bdffe88e0 100644 --- a/frontend/libs/components/gallery-modal/src/lib/gallery-modal.tsx +++ b/frontend/libs/components/gallery-modal/src/lib/gallery-modal.tsx @@ -106,6 +106,38 @@ interface GalleryModalProps { ) => Promise | void; } +/** Small thumbnail used in the bulk-selection footer bar. */ +const BulkThumb = ({ + thumbnail, + placeholderIcon, +}: { + thumbnail: string | null; + placeholderIcon: any; +}) => { + const [failed, setFailed] = useState(false); + const showImage = !!thumbnail && !failed; + + return ( +
+ {showImage ? ( + setFailed(true)} + /> + ) : ( +
+ +
+ )} +
+ ); +}; + export const GalleryModal = React.memo( ({ onClose, @@ -792,27 +824,33 @@ export const GalleryModal = React.memo( {mode === "view" && bulkSelectionMode && (
-
+
{/* Thumbnail previews of selected items */} -
- {bulkSelectedItems.slice(0, 4).map((si) => ( -
- {si.thumbnail ? ( - - ) : ( -
- )} -
- ))} +
+ {bulkSelectedItems.slice(0, 4).map((si) => { + const placeholderIcon = + si.mediaClass === "video" + ? faVideo + : si.mediaClass === "dimensional" + ? faCube + : faImage; + return ( + + ); + })}
- + {bulkSelectedItems.length > 4 && ( +
+ + +{bulkSelectedItems.length - 4} + +
+ )} + {bulkSelectedIds.size} selected