From 3f0b9e7b2701d9f394da83f795a9a57943ae0e8b Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Sun, 7 Jul 2024 23:27:36 -0500 Subject: [PATCH] Allow admins to select photos from /grid --- src/admin/AdminBatchEditPanel.tsx | 35 ++++++++++++++++++++ src/app/layout.tsx | 2 ++ src/components/Note.tsx | 8 ++++- src/photo/PhotoGrid.tsx | 55 +++++++++++++++++++++++++++---- src/photo/PhotoGridContainer.tsx | 16 +++------ src/photo/PhotoGridInfinite.tsx | 13 +++----- src/photo/PhotoGridPage.tsx | 9 +++++ src/state/AppState.ts | 2 ++ src/state/AppStateProvider.tsx | 4 +++ 9 files changed, 117 insertions(+), 27 deletions(-) create mode 100644 src/admin/AdminBatchEditPanel.tsx diff --git a/src/admin/AdminBatchEditPanel.tsx b/src/admin/AdminBatchEditPanel.tsx new file mode 100644 index 00000000..37d9dbf8 --- /dev/null +++ b/src/admin/AdminBatchEditPanel.tsx @@ -0,0 +1,35 @@ +'use client'; + +import Note from '@/components/Note'; +import LoaderButton from '@/components/primitives/LoaderButton'; +import SiteGrid from '@/components/SiteGrid'; +import { useAppState } from '@/state/AppState'; +import clsx from 'clsx'; + +export default function AdminBatchEditPanel() { + const { + isUserSignedIn, + selectedPhotoIds = [], + setSelectedPhotoIds, + } = useAppState(); + + return isUserSignedIn && selectedPhotoIds.length > 0 + ? setSelectedPhotoIds?.([])} + primary + > + Clear + } + > + {selectedPhotoIds.length} photos selected + } /> + : null; +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index a0bf6663..3cc2f42b 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -17,6 +17,7 @@ import Nav from '@/site/Nav'; import Footer from '@/site/Footer'; import CommandK from '@/site/CommandK'; import SwrConfigClient from '../state/SwrConfigClient'; +import AdminBatchEditPanel from '@/admin/AdminBatchEditPanel'; import '../site/globals.css'; import '../site/sonner.css'; @@ -84,6 +85,7 @@ export default function RootLayout({ 'lg:mx-6 lg:mb-6', )}>