This commit is contained in:
2025-11-02 15:03:23 +01:00
parent 8f86a71c39
commit d6a6d1233c
10 changed files with 630 additions and 19 deletions
+45
View File
@@ -198,6 +198,7 @@ const AppLayout = () => {
const stored = window.localStorage.getItem('papercrate_view_mode');
return stored === 'grid' || stored === 'desk' ? stored : 'list';
});
const [deskHelpOpen, setDeskHelpOpen] = useState(false);
const lastNonDeskViewRef = useRef(documentsViewMode === 'desk' ? 'list' : documentsViewMode);
useEffect(() => {
@@ -205,6 +206,12 @@ const AppLayout = () => {
lastNonDeskViewRef.current = documentsViewMode;
}
}, [documentsViewMode]);
useEffect(() => {
if (documentsViewMode !== 'desk' && deskHelpOpen) {
setDeskHelpOpen(false);
}
}, [documentsViewMode, deskHelpOpen]);
const initialRowSelection = [];
const tokenRef = useRef(token);
const refreshPromiseRef = useRef(null);
@@ -4819,6 +4826,36 @@ const AppLayout = () => {
[handleRowSelection],
);
const handleDeskDocumentStackSelect = useCallback(
(docIds) => {
if (!Array.isArray(docIds) || docIds.length === 0) {
return;
}
const rowKeys = docIds
.map((id) => resolveDocumentRowKey(id))
.filter(Boolean);
if (!rowKeys.length) {
return;
}
applySelection(rowKeys, {
anchor: rowKeys[0],
interactedKeys: rowKeys,
});
},
[applySelection],
);
const handleDeskHelpOpen = useCallback(() => {
setDeskHelpOpen(true);
}, []);
const handleDeskHelpClose = useCallback(() => {
setDeskHelpOpen(false);
}, []);
const deskWorkspaceProps = useMemo(
() => ({
documents,
@@ -4832,6 +4869,10 @@ const AppLayout = () => {
onDocumentOpen: openDocumentPreview,
onInspectDocument: handleDeskInspectDocument,
onDocumentPointerSelect: handleDeskDocumentPointerSelect,
onDocumentStackSelect: handleDeskDocumentStackSelect,
onOpenHelp: handleDeskHelpOpen,
helpOpen: deskHelpOpen,
onHelpClose: handleDeskHelpClose,
selectedDocumentIds,
onClearSelection: clearDocumentSelection,
resolveThumbnailUrl: resolveThumbnailUrlForDoc,
@@ -4853,6 +4894,10 @@ const AppLayout = () => {
openDocumentPreview,
handleDeskInspectDocument,
handleDeskDocumentPointerSelect,
handleDeskDocumentStackSelect,
handleDeskHelpOpen,
handleDeskHelpClose,
deskHelpOpen,
selectedDocumentIds,
clearDocumentSelection,
resolveThumbnailUrlForDoc,