From 68d59fd377aeb5dd23aceb57ce6321147c7eed98 Mon Sep 17 00:00:00 2001
From: Reece Browne <74901996+reecebrowne@users.noreply.github.com>
Date: Tue, 26 Aug 2025 17:26:30 +0100
Subject: [PATCH] Feature/v2/page editor selection persistance (#4306)
Fixed page editor selection persistance
Fixed delete sleected
Fixed display issue on some tools on reset settings call
---------
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
---
frontend/src/components/layout/Workbench.tsx | 3 +-
.../pageEditor/BulkSelectionPanel.tsx | 13 +-
.../components/pageEditor/DragDropGrid.tsx | 4 +-
.../src/components/pageEditor/PageEditor.tsx | 188 ++++++++++--------
.../pageEditor/PageEditorControls.tsx | 28 ++-
.../components/pageEditor/PageThumbnail.tsx | 20 +-
.../pageEditor/commands/pageCommands.ts | 17 +-
.../pageEditor/hooks/usePageEditorState.ts | 33 ++-
frontend/src/components/shared/RightRail.tsx | 18 +-
frontend/src/hooks/useRainbowTheme.ts | 22 +-
frontend/src/tools/Compress.tsx | 6 +-
frontend/src/tools/Split.tsx | 6 +-
frontend/src/types/pageEditor.ts | 5 +-
13 files changed, 192 insertions(+), 171 deletions(-)
diff --git a/frontend/src/components/layout/Workbench.tsx b/frontend/src/components/layout/Workbench.tsx
index 44a4f0271..3884fdaf5 100644
--- a/frontend/src/components/layout/Workbench.tsx
+++ b/frontend/src/components/layout/Workbench.tsx
@@ -117,7 +117,8 @@ export default function Workbench() {
onExportAll={pageEditorFunctions.onExportAll}
exportLoading={pageEditorFunctions.exportLoading}
selectionMode={pageEditorFunctions.selectionMode}
- selectedPages={pageEditorFunctions.selectedPages}
+ selectedPageIds={pageEditorFunctions.selectedPageIds}
+ displayDocument={pageEditorFunctions.displayDocument}
splitPositions={pageEditorFunctions.splitPositions}
totalPages={pageEditorFunctions.totalPages}
/>
diff --git a/frontend/src/components/pageEditor/BulkSelectionPanel.tsx b/frontend/src/components/pageEditor/BulkSelectionPanel.tsx
index b9ebb8d2c..cc9b8d5f5 100644
--- a/frontend/src/components/pageEditor/BulkSelectionPanel.tsx
+++ b/frontend/src/components/pageEditor/BulkSelectionPanel.tsx
@@ -4,14 +4,16 @@ import { Group, TextInput, Button, Text } from '@mantine/core';
interface BulkSelectionPanelProps {
csvInput: string;
setCsvInput: (value: string) => void;
- selectedPages: number[];
+ selectedPageIds: string[];
+ displayDocument?: { pages: { id: string; pageNumber: number }[] };
onUpdatePagesFromCSV: () => void;
}
const BulkSelectionPanel = ({
csvInput,
setCsvInput,
- selectedPages,
+ selectedPageIds,
+ displayDocument,
onUpdatePagesFromCSV,
}: BulkSelectionPanelProps) => {
return (
@@ -30,9 +32,12 @@ const BulkSelectionPanel = ({
Apply
- {selectedPages.length > 0 && (
+ {selectedPageIds.length > 0 && (
- Selected: {selectedPages.length} pages
+ Selected: {selectedPageIds.length} pages ({displayDocument ? selectedPageIds.map(id => {
+ const page = displayDocument.pages.find(p => p.id === id);
+ return page?.pageNumber || 0;
+ }).filter(n => n > 0).join(', ') : ''})
)}
>
diff --git a/frontend/src/components/pageEditor/DragDropGrid.tsx b/frontend/src/components/pageEditor/DragDropGrid.tsx
index 8928e1a34..da1b1658f 100644
--- a/frontend/src/components/pageEditor/DragDropGrid.tsx
+++ b/frontend/src/components/pageEditor/DragDropGrid.tsx
@@ -12,10 +12,10 @@ interface DragDropItem {
interface DragDropGridProps {
items: T[];
- selectedItems: number[];
+ selectedItems: string[];
selectionMode: boolean;
isAnimating: boolean;
- onReorderPages: (sourcePageNumber: number, targetIndex: number, selectedPages?: number[]) => void;
+ onReorderPages: (sourcePageNumber: number, targetIndex: number, selectedPageIds?: string[]) => void;
renderItem: (item: T, index: number, refs: React.MutableRefObject