From ed9a0c6f20cc3cefa7e0310543f9d34a2cd13a33 Mon Sep 17 00:00:00 2001 From: Huang Xin Date: Thu, 13 Feb 2025 21:34:56 +0100 Subject: [PATCH] ux: hide action bar when modal is shown (#369) --- .../src/app/library/components/Bookshelf.tsx | 27 ++++++++++----- .../app/library/components/GroupingModal.tsx | 33 ++++++++++++------- apps/readest-app/src/app/library/page.tsx | 3 +- apps/readest-app/src/styles/globals.css | 5 --- 4 files changed, 40 insertions(+), 28 deletions(-) diff --git a/apps/readest-app/src/app/library/components/Bookshelf.tsx b/apps/readest-app/src/app/library/components/Bookshelf.tsx index c70c8cbb..73b89fff 100644 --- a/apps/readest-app/src/app/library/components/Bookshelf.tsx +++ b/apps/readest-app/src/app/library/components/Bookshelf.tsx @@ -2,7 +2,8 @@ import clsx from 'clsx'; import * as React from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import { useEffect, useRef, useState } from 'react'; -import { MdDelete, MdOpenInNew, MdOutlineCreateNewFolder, MdOutlineCancel } from 'react-icons/md'; +import { MdDelete, MdOpenInNew, MdOutlineCancel } from 'react-icons/md'; +import { LuFolderPlus } from 'react-icons/lu'; import { PiPlus } from 'react-icons/pi'; import { Book, BooksGroup } from '@/types/book'; import { useEnv } from '@/context/EnvContext'; @@ -25,7 +26,6 @@ interface BookshelfProps { handleBookDelete: (book: Book) => void; handleSetSelectMode: (selectMode: boolean) => void; handleShowDetailsBook: (book: Book) => void; - handleToggleSelectMode: () => void; booksTransferProgress: { [key: string]: number | null }; } @@ -38,7 +38,6 @@ const Bookshelf: React.FC = ({ handleBookDelete, handleSetSelectMode, handleShowDetailsBook, - handleToggleSelectMode, booksTransferProgress, }) => { const _ = useTranslation(); @@ -47,6 +46,7 @@ const Bookshelf: React.FC = ({ const { appService } = useEnv(); const [loading, setLoading] = useState(false); const [selectedBooks, setSelectedBooks] = useState([]); + const [showSelectModeActions, setShowSelectModeActions] = useState(false); const [showDeleteAlert, setShowDeleteAlert] = useState(false); const [showGroupingModal, setShowGroupingModal] = useState(false); const [navBooksGroup, setNavBooksGroup] = useState(null); @@ -57,7 +57,12 @@ const Bookshelf: React.FC = ({ const allBookshelfItems = generateBookshelfItems(libraryBooks); useEffect(() => { - setSelectedBooks([]); + if (isSelectMode) { + setShowSelectModeActions(true); + } else { + setSelectedBooks([]); + setShowSelectModeActions(false); + } }, [isSelectMode]); useEffect(() => { @@ -124,6 +129,7 @@ const Bookshelf: React.FC = ({ }; const groupSelectedBooks = () => { + setShowSelectModeActions(false); setShowGroupingModal(true); }; @@ -166,7 +172,7 @@ const Bookshelf: React.FC = ({ )}
- {isSelectMode && ( + {isSelectMode && showSelectModeActions && (
= ({ !selectedBooks.length && 'btn-disabled opacity-50', )} > - +
{_('Add to Group')}
)} diff --git a/apps/readest-app/src/app/library/components/GroupingModal.tsx b/apps/readest-app/src/app/library/components/GroupingModal.tsx index 25d9b3c2..c4788166 100644 --- a/apps/readest-app/src/app/library/components/GroupingModal.tsx +++ b/apps/readest-app/src/app/library/components/GroupingModal.tsx @@ -133,7 +133,7 @@ const GroupingModal: React.FC = ({ const groupIds = selectedBooks .map((id) => libraryBooks.find((book) => book.hash === id || book.groupId === id)?.groupId) .filter((groupId) => groupId); - if (groupIds.length === 1) { + if (Array.from(new Set(groupIds)).length === 1) { setSelectedGroup(groupsList.find((group) => group.id === groupIds[0]) || null); } // eslint-disable-next-line react-hooks/exhaustive-deps @@ -141,25 +141,32 @@ const GroupingModal: React.FC = ({ return (
-
+

{_('Group Books')}

-
+
{isSelectedBooksHasGroup && ( - +
)} - +
{showInput && (
@@ -183,7 +190,9 @@ const GroupingModal: React.FC = ({ )} onClick={() => handleConfirmCreateGroup()} > -
{_('Save')}
+
+ {_('Save')} +
)} @@ -208,7 +217,7 @@ const GroupingModal: React.FC = ({ {group.name}
- + {selectedGroup && selectedGroup.id == group.id && ( )} @@ -216,7 +225,7 @@ const GroupingModal: React.FC = ({ ))} -
+