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
@@ -0,0 +1,40 @@
import React, { createContext, useContext } from 'react';
type Identifier = string | number;
export interface DocumentsFilterValue {
query: string;
searchResults: Array<Record<string, unknown>> | 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 DocumentsFilterContext = createContext<DocumentsFilterValue | null>(null);
interface DocumentsFilterProviderProps {
value: DocumentsFilterValue;
children: React.ReactNode;
}
export const DocumentsFilterProvider: React.FC<DocumentsFilterProviderProps> = ({ value, children }) => (
<DocumentsFilterContext.Provider value={value}>{children}</DocumentsFilterContext.Provider>
);
export const useDocumentsFilter = (): DocumentsFilterValue => {
const context = useContext(DocumentsFilterContext);
if (!context) {
throw new Error('useDocumentsFilter must be used within a DocumentsFilterProvider');
}
return context;
};
export default DocumentsFilterContext;
@@ -28,7 +28,6 @@ export interface UseDocumentsPanelPropsArgs {
currentSubfolders?: unknown[];
documents?: unknown[];
searchResults?: unknown[] | null;
isFilterActive?: boolean;
folderClickHandlers: FolderClickHandlers;
selectFolder?: (...args: unknown[]) => void;
handleFolderDragStart?: (...args: unknown[]) => void;
@@ -46,16 +45,12 @@ export interface UseDocumentsPanelPropsArgs {
activeCorrespondentFilters?: Identifier[];
ensureAssetUrl?: (...args: unknown[]) => void;
getDocumentAsset?: (...args: unknown[]) => unknown;
toggleTagFilter?: (...args: unknown[]) => void;
toggleCorrespondentFilter?: (...args: unknown[]) => void;
handleDocumentTagDrop?: (...args: unknown[]) => void;
documentsViewMode?: string;
documentsSortField?: string;
documentsSortDirection?: string;
handleDocumentsSortFieldChange?: (field: string) => void;
handleDocumentsSortDirectionToggle?: () => void;
searchIncludeDescendants?: boolean;
toggleSearchIncludeDescendants?: () => void;
handleDocumentsViewModeChange?: (mode: string) => void;
clearDocumentSelection?: () => void;
handleDeleteSelection?: () => void;
@@ -86,7 +81,6 @@ const useDocumentsPanelProps = (props: UseDocumentsPanelPropsArgs) => {
currentSubfolders,
documents,
searchResults,
isFilterActive,
folderClickHandlers,
selectFolder,
handleFolderDragStart,
@@ -104,16 +98,12 @@ const useDocumentsPanelProps = (props: UseDocumentsPanelPropsArgs) => {
activeCorrespondentFilters,
ensureAssetUrl,
getDocumentAsset,
toggleTagFilter,
toggleCorrespondentFilter,
handleDocumentTagDrop,
documentsViewMode,
documentsSortField,
documentsSortDirection,
handleDocumentsSortFieldChange,
handleDocumentsSortDirectionToggle,
searchIncludeDescendants,
toggleSearchIncludeDescendants,
handleDocumentsViewModeChange,
handleDeleteSelection,
handleEntryPointerCore,
@@ -141,7 +131,6 @@ const useDocumentsPanelProps = (props: UseDocumentsPanelPropsArgs) => {
subfolders: currentSubfolders,
documents,
searchResults,
isFilterActive,
onFolderSelect: selectFolder,
onFolderDrop: folderClickHandlers.onDrop,
onFolderDragOver: folderClickHandlers.onDragOver,
@@ -161,16 +150,12 @@ const useDocumentsPanelProps = (props: UseDocumentsPanelPropsArgs) => {
activeCorrespondentIds: activeCorrespondentFilters,
ensureAssetUrl,
getDocumentAsset,
onTagClick: toggleTagFilter,
onCorrespondentClick: toggleCorrespondentFilter,
onDocumentTagDrop: handleDocumentTagDrop,
viewMode: documentsViewMode,
sortField: documentsSortField,
sortDirection: documentsSortDirection,
onSortFieldChange: handleDocumentsSortFieldChange,
onSortDirectionToggle: handleDocumentsSortDirectionToggle,
searchIncludeDescendants,
onToggleSearchIncludeDescendants: toggleSearchIncludeDescendants,
onViewModeChange: handleDocumentsViewModeChange,
onDeleteSelection: handleDeleteSelection,
onEntryPointer: handleEntryPointerCore,
@@ -222,19 +207,14 @@ const useDocumentsPanelProps = (props: UseDocumentsPanelPropsArgs) => {
handleFolderDragStart,
handleFolderRename,
inspectDocument,
isFilterActive,
moveDocumentsToFolder,
openDocumentPreview,
refreshCurrentFolder,
searchIncludeDescendants,
searchLoading,
searchResults,
selectFolder,
tagLookupById,
tags,
toggleCorrespondentFilter,
toggleSearchIncludeDescendants,
toggleTagFilter,
ensureAssetUrl,
getDocumentAsset,
folderOptions,
+16 -13
View File
@@ -17,6 +17,7 @@ import DocumentsPanelHeader, {
} from './DocumentsPanelHeader';
import { SelectionFloatingPanel } from '../SelectionFloatingActions';
import { createDocumentsTableHeaderActions } from './DocumentsToolbar';
import { useDocumentsFilter } from '../context/DocumentsFilterContext';
const DEFAULT_GRID_ICON_SIZE = 144;
@@ -47,7 +48,6 @@ const DocumentsPanelInner: React.FC<DocumentsPanelInnerProps> = ({
subfolders,
documents,
searchResults,
isFilterActive = false,
onFolderSelect,
onFolderDrop,
onFolderDragOver,
@@ -66,8 +66,6 @@ const DocumentsPanelInner: React.FC<DocumentsPanelInnerProps> = ({
activeCorrespondentIds = [],
ensureAssetUrl = null,
getDocumentAsset = defaultGetDocumentAsset,
onTagClick,
onCorrespondentClick,
isSearchLoading = false,
onDocumentTagDrop,
viewMode = 'list',
@@ -80,8 +78,6 @@ const DocumentsPanelInner: React.FC<DocumentsPanelInnerProps> = ({
sortDirection,
onSortFieldChange,
onSortDirectionToggle,
searchIncludeDescendants,
onToggleSearchIncludeDescendants,
onDeleteSelection,
documentLookup,
tags,
@@ -101,6 +97,13 @@ const DocumentsPanelInner: React.FC<DocumentsPanelInnerProps> = ({
handleEntrySelection,
clearSelection,
} = useWorkspaceSelectionContext();
const {
isActive: isFilterActive,
includeDescendants,
toggleIncludeDescendants,
toggleTag: toggleTagFilter,
toggleCorrespondent: toggleCorrespondentFilter,
} = useDocumentsFilter();
const showingSearchResults = searchResults !== null;
const rows = showingSearchResults ? searchResults : documents;
const documentLinkMap = documentLinks instanceof Map ? documentLinks : null;
@@ -121,8 +124,8 @@ const DocumentsPanelInner: React.FC<DocumentsPanelInnerProps> = ({
sortDirection,
onSortDirectionToggle,
isFilterActive,
includeDescendants: searchIncludeDescendants,
onToggleIncludeDescendants: onToggleSearchIncludeDescendants,
includeDescendants,
onToggleIncludeDescendants: toggleIncludeDescendants,
}),
[
viewMode,
@@ -133,8 +136,8 @@ const DocumentsPanelInner: React.FC<DocumentsPanelInnerProps> = ({
sortDirection,
onSortDirectionToggle,
isFilterActive,
searchIncludeDescendants,
onToggleSearchIncludeDescendants,
includeDescendants,
toggleIncludeDescendants,
],
);
const floatingActions = useMemo(() => (
@@ -740,9 +743,9 @@ const DocumentsPanelInner: React.FC<DocumentsPanelInnerProps> = ({
getDocumentAsset={getDocumentAsset}
gridIconSize={gridIconSize}
tagLookupById={tagLookupById}
onTagClick={onTagClick}
onTagClick={toggleTagFilter}
scrollRef={scrollRef}
onCorrespondentClick={onCorrespondentClick}
onCorrespondentClick={toggleCorrespondentFilter}
activeCorrespondentIdSet={activeCorrespondentIdSet}
onDocumentRename={onDocumentRename}
onFolderRename={onFolderRename}
@@ -775,8 +778,8 @@ const DocumentsPanelInner: React.FC<DocumentsPanelInnerProps> = ({
onDocumentTagDrop={handleDocumentTagDrop}
onDocumentRename={onDocumentRename}
tagLookupById={tagLookupById}
onTagClick={onTagClick}
onCorrespondentClick={onCorrespondentClick}
onTagClick={toggleTagFilter}
onCorrespondentClick={toggleCorrespondentFilter}
activeCorrespondentIdSet={activeCorrespondentIdSet}
scrollRef={scrollRef}
/>