Incorporate server-side photo chooser data

This commit is contained in:
Sam Becker 2026-02-28 11:22:22 -06:00
parent 6af00c94f6
commit 42015f7d6d
2 changed files with 24 additions and 8 deletions

View File

@ -20,6 +20,9 @@ export default function AdminAboutEditPage({
about, about,
photoAvatar: _photoAvatar, photoAvatar: _photoAvatar,
photoHero: _photoHero, photoHero: _photoHero,
photos,
photosCount,
photosHidden,
}: { }: {
about?: About about?: About
photoAvatar?: Photo photoAvatar?: Photo
@ -68,6 +71,9 @@ export default function AdminAboutEditPage({
onChange={photoIdAvatar => setAboutForm(form => onChange={photoIdAvatar => setAboutForm(form =>
({ ...form, photoIdAvatar: convertUrlToPhotoId(photoIdAvatar) }))} ({ ...form, photoIdAvatar: convertUrlToPhotoId(photoIdAvatar) }))}
photo={photoAvatar} photo={photoAvatar}
photos={photos}
photosCount={photosCount}
photosHidden={photosHidden}
/> />
<PhotoAvatar photo={photoAvatar} /> <PhotoAvatar photo={photoAvatar} />
<FieldsetWithStatus <FieldsetWithStatus

View File

@ -5,17 +5,24 @@ import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
import ImageMedium from '@/components/image/ImageMedium'; import ImageMedium from '@/components/image/ImageMedium';
import PhotoGridInfinite from '../PhotoGridInfinite'; import PhotoGridInfinite from '../PhotoGridInfinite';
import { menuSurfaceStyles } from '@/components/primitives/surface'; import { menuSurfaceStyles } from '@/components/primitives/surface';
import { GRID_SPACE_CLASSNAME } from '@/components';
import PhotoGrid from '../PhotoGrid';
export default function FieldsetPhotoChooser({ export default function FieldsetPhotoChooser({
label, label,
value, value,
onChange, onChange,
photo, photo,
photos = [],
photosCount,
}: { }: {
label: string label: string
value: string value: string
onChange: (value: string) => void onChange: (value: string) => void
photo?: Photo photo?: Photo
photos?: Photo[]
photosCount?: number
photosHidden?: Photo[]
}) { }) {
return ( return (
<> <>
@ -44,17 +51,20 @@ export default function FieldsetPhotoChooser({
onCloseAutoFocus={e => e.preventDefault()} onCloseAutoFocus={e => e.preventDefault()}
align="start" align="start"
sideOffset={10} sideOffset={10}
className={menuSurfaceStyles('z-20 px-1.5 py-1.5')}> className={menuSurfaceStyles('z-20 px-1.5 py-1.5')}
>
<div className={clsx( <div className={clsx(
GRID_SPACE_CLASSNAME,
'w-[14rem] max-h-[20rem] rounded-[3px] overflow-y-auto', 'w-[14rem] max-h-[20rem] rounded-[3px] overflow-y-auto',
'space-y-1',
)}> )}>
<PhotoGridInfinite {photos.length > 0 &&
cacheKey="photo-chooser-menu" <PhotoGrid {...{ photos, animate: false }} />}
initialOffset={0} {(!photosCount || photosCount > photos.length) &&
sortBy="takenAt" <PhotoGridInfinite {...{
animate={false} cacheKey: 'photo-chooser-menu',
/> initialOffset: photos.length,
animate: false,
}} />}
</div> </div>
</DropdownMenu.Content> </DropdownMenu.Content>
</DropdownMenu.Portal> </DropdownMenu.Portal>