search cleanup
This commit is contained in:
@@ -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,
|
||||
});
|
||||
|
||||
@@ -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>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user