search cleanup

This commit is contained in:
2025-11-19 01:25:56 +01:00
parent 6923a68837
commit e1b47ed153
9 changed files with 175 additions and 156 deletions
-1
View File
@@ -28,7 +28,6 @@ const AppLayout: React.FC = () => {
onDocumentsSortFieldChange: documentsPreferences.handleDocumentsSortFieldChange,
onDocumentsSortDirectionToggle: documentsPreferences.handleDocumentsSortDirectionToggle,
searchIncludeDescendants: documentsPreferences.searchIncludeDescendants,
onToggleSearchIncludeDescendants: documentsPreferences.toggleSearchIncludeDescendants,
onSetSearchIncludeDescendants: documentsPreferences.setSearchIncludeDescendants,
sortRefreshReadyRef: documentsPreferences.sortRefreshReadyRef,
});
+27 -12
View File
@@ -2,6 +2,10 @@ import React, { useCallback, useEffect, useMemo } from 'react';
import type { ReactNode } from 'react';
import { useNavigate } from 'react-router-dom';
import { useAppShell } from '../appShellContext';
import {
DocumentsFilterProvider,
} from '../documents/context/DocumentsFilterContext';
import type { DocumentsFilterValue } from '../documents/context/DocumentsFilterContext';
import { useWorkspaceSurface } from './useWorkspaceSurface';
import { DocumentsHeaderBreadcrumb } from '../documents/panel/DocumentsPanelHeader';
import { SidebarProvider, useSidebarContext } from '../sidebar/SidebarContext';
@@ -43,6 +47,7 @@ interface DocumentsRouteAppShell {
ensureAssetUrl?: EnsureAssetUrl;
getDocumentAsset?: GetDocumentAsset;
notifyApiError?: NotifyApiError;
documentsFilter: DocumentsFilterValue;
}
const DocumentsRouteContent: React.FC = () => {
@@ -62,7 +67,8 @@ const DocumentsRouteContent: React.FC = () => {
ensureAssetUrl,
getDocumentAsset,
notifyApiError,
} = useAppShell() as DocumentsRouteAppShell;
documentsFilter,
} = useAppShell() as unknown as DocumentsRouteAppShell;
const navigate = useNavigate();
const { collapsed: sidebarCollapsed } = useSidebarContext();
const {
@@ -124,26 +130,35 @@ const DocumentsRouteContent: React.FC = () => {
};
}, []);
if (!surface) {
const renderSurface = () => {
if (!surface) {
return (
<main className={`documents-main${sidebarHidden ? ' documents-main--sidebar-hidden' : ''}`}>
{!sidebarHidden ? <Sidebar {...sidebarPropsWithActions} /> : null}
<div className="main-content">
<div className="main-content__body" />
</div>
</main>
);
}
const surfaceDetail = (surface as { detail?: ReactNode }).detail || null;
return (
<main className={`documents-main${sidebarHidden ? ' documents-main--sidebar-hidden' : ''}`}>
{!sidebarHidden ? <Sidebar {...sidebarPropsWithActions} /> : null}
<div className="main-content">
<div className="main-content__body" />
<div className="main-content__body">{surface.content}</div>
{surfaceDetail}
</div>
</main>
);
}
};
const surfaceDetail = (surface as { detail?: ReactNode }).detail || null;
const content = renderSurface();
return (
<main className={`documents-main${sidebarHidden ? ' documents-main--sidebar-hidden' : ''}`}>
{!sidebarHidden ? <Sidebar {...sidebarPropsWithActions} /> : null}
<div className="main-content">
<div className="main-content__body">{surface.content}</div>
{surfaceDetail}
</div>
</main>
<DocumentsFilterProvider value={documentsFilter}>
{content}
</DocumentsFilterProvider>
);
};
+49
View File
@@ -47,6 +47,21 @@ interface UseDocumentsSearchResult {
clearFilters: () => void;
handleSearchChange: (value: string) => void;
handleSearchSubmit: () => void;
documentsFilterValue: {
query: string;
searchResults: DocumentLike[] | null;
searchLoading: boolean;
includeDescendants: boolean;
activeTagIds: Identifier[];
activeCorrespondentIds: Identifier[];
isActive: boolean;
setQuery: (value: string) => void;
submit: () => void;
clear: () => void;
toggleTag: (tagId: Identifier) => void;
toggleCorrespondent: (correspondentId?: Identifier | null) => void;
toggleIncludeDescendants: () => void;
};
}
const useDocumentsSearch = ({
@@ -124,6 +139,39 @@ const useDocumentsSearch = ({
}
}, [navigate, selectedFolder, isDocumentsRoute, locationPathname]);
const documentsFilterValue = useMemo(
() => ({
query: searchQuery,
searchResults,
searchLoading,
includeDescendants: Boolean(searchIncludeDescendants),
activeTagIds: activeTagFilters,
activeCorrespondentIds: activeCorrespondentFilters,
isActive: isFilterActive,
setQuery: handleSearchChange,
submit: handleSearchSubmit,
clear: clearFilters,
toggleTag: toggleTagFilter,
toggleCorrespondent: toggleCorrespondentFilter,
toggleIncludeDescendants: () => setSearchIncludeDescendants(!searchIncludeDescendants),
}),
[
searchQuery,
searchResults,
searchLoading,
searchIncludeDescendants,
activeTagFilters,
activeCorrespondentFilters,
isFilterActive,
handleSearchChange,
handleSearchSubmit,
clearFilters,
toggleTagFilter,
toggleCorrespondentFilter,
setSearchIncludeDescendants,
],
);
useEffect(() => {
if (!token) return undefined;
@@ -237,6 +285,7 @@ const useDocumentsSearch = ({
clearFilters,
handleSearchChange,
handleSearchSubmit,
documentsFilterValue,
};
};