basic search

This commit is contained in:
2025-10-11 17:05:12 +02:00
parent 0a669064dd
commit 7233e3a534
2 changed files with 270 additions and 82 deletions
+49 -73
View File
@@ -167,7 +167,7 @@ const DropOverlay = ({ active, folderName }) => (
</div>
);
const LoginView = ({ onSubmit, loading, status }) => (
const LoginView = ({ onSubmit, status }) => (
<div className="login-screen">
<div className="login-card">
<h1>Paperless-NEO</h1>
@@ -190,9 +190,7 @@ const LoginView = ({ onSubmit, loading, status }) => (
autoComplete="current-password"
required
/>
<button type="submit" disabled={loading}>
{loading ? 'Signing in…' : 'Sign in'}
</button>
<button type="submit">Sign in</button>
</form>
<StatusBanner status={status} />
</div>
@@ -209,7 +207,6 @@ const FolderNode = ({
onDragOver,
onDragLeave,
onDelete,
disableActions,
renderChildren,
onFolderDragStart,
onFolderDragEnd,
@@ -257,7 +254,6 @@ const FolderNode = ({
<button
type="button"
className="icon-button ghost"
disabled={disableActions}
onClick={(event) => {
event.stopPropagation();
onDelete(node.id);
@@ -323,7 +319,6 @@ const FilterBar = ({
const DocumentsTable = ({
currentFolderName,
breadcrumbs,
loading,
onRefresh,
subfolders,
documents,
@@ -390,8 +385,8 @@ const DocumentsTable = ({
)}
</div>
<div className="header-actions">
<button className="secondary" onClick={onRefresh} disabled={loading}>
{loading ? 'Refreshing…' : 'Refresh'}
<button className="secondary" onClick={onRefresh}>
Refresh
</button>
</div>
</div>
@@ -648,7 +643,6 @@ const DetailPanel = ({
onTagAdd,
onTagRemove,
onRegenerateThumbnails,
loading,
previewEntry,
onOpenPreview,
onBulkTagAdd,
@@ -802,7 +796,6 @@ const DetailPanel = ({
type="button"
className="secondary"
onClick={() => onOpenPreview(singleDoc.id)}
disabled={loading}
>
Open preview
</button>
@@ -810,7 +803,6 @@ const DetailPanel = ({
type="button"
className="secondary"
onClick={() => onRegenerateThumbnails(singleDoc.id)}
disabled={loading}
>
Re-run analysis
</button>
@@ -911,9 +903,7 @@ const DetailPanel = ({
}}
>
<input name="tag" placeholder="Add tag to selection" list="tag-catalog" />
<button type="submit" disabled={loading}>
Add tag
</button>
<button type="submit">Add tag</button>
</form>
<form
className="inline"
@@ -926,7 +916,7 @@ const DetailPanel = ({
}}
>
<input name="tag" placeholder="Remove tag from selection" list="tag-catalog" />
<button type="submit" className="secondary" disabled={loading}>
<button type="submit" className="secondary">
Remove tag
</button>
</form>
@@ -945,7 +935,6 @@ const DetailPanel = ({
name="target"
defaultValue={defaultMoveTarget || 'root'}
onChange={(event) => onBulkMove?.({ target: event.target.value })}
disabled={loading}
>
{folderOptions.map((option) => (
<option key={option.id} value={option.id}>
@@ -958,7 +947,6 @@ const DetailPanel = ({
type="button"
className="secondary"
onClick={() => onBulkReanalyze?.()}
disabled={loading}
>
Re-analyze selection
</button>
@@ -982,7 +970,6 @@ const PreviewWorkspace = ({
document,
detail,
previewEntry,
loading,
onClose,
onDownload,
onRegenerateThumbnails,
@@ -1028,14 +1015,13 @@ const PreviewWorkspace = ({
type="button"
className="secondary"
onClick={() => onRegenerateThumbnails(document.id)}
disabled={loading}
>
Regenerate thumbnails
Re-run analysis
</button>
</div>
</header>
<div className="preview-workspace__body">
{loading || !previewEntry?.url ? (
{!previewEntry?.url ? (
<div className="preview-workspace__message">Loading preview</div>
) : (
<iframe
@@ -1064,7 +1050,6 @@ const Sidebar = ({
onDragLeave,
onCreateFolder,
onDeleteFolder,
disableActions,
selectedFolder,
onFolderDragStart,
onFolderDragEnd,
@@ -1087,7 +1072,6 @@ const Sidebar = ({
onDragOver={onDragOver}
onDragLeave={onDragLeave}
onDelete={onDeleteFolder}
disableActions={disableActions}
renderChildren={renderNodes}
onFolderDragStart={onFolderDragStart}
onFolderDragEnd={onFolderDragEnd}
@@ -1104,7 +1088,6 @@ const Sidebar = ({
onDragOver,
onDragLeave,
onDeleteFolder,
disableActions,
onFolderDragStart,
onFolderDragEnd,
draggedFolderId,
@@ -1132,9 +1115,7 @@ const Sidebar = ({
}}
>
<input name="folder-name" placeholder="New folder name" required />
<button type="submit" disabled={disableActions}>
Create
</button>
<button type="submit">Create</button>
</form>
<div className="folder-tree-scroller">
<ul className="folder-tree">
@@ -3334,12 +3315,11 @@ const handleDownload = useCallback(
className="secondary"
type="button"
onClick={handleBulkReanalyze}
disabled={loading}
>
{loading ? 'Working…' : 'Re-analyze All'}
Re-analyze All
</button>
<button className="secondary" onClick={handleLogout} disabled={loading}>
{loading ? 'Working…' : 'Log out'}
<button className="secondary" onClick={handleLogout}>
Log out
</button>
</div>
</div>
@@ -3350,51 +3330,48 @@ const handleDownload = useCallback(
document={previewWorkspaceDocument}
detail={previewWorkspaceDetail}
previewEntry={previewWorkspaceEntry}
loading={previewDocumentLoading}
onClose={closeDocumentPreview}
onDownload={handleDownload}
onRegenerateThumbnails={handleThumbnailRegeneration}
/>
) : (
<>
<Sidebar
folderNodes={folderNodes}
onToggle={folderClickHandlers.onToggle}
onSelect={folderClickHandlers.onSelect}
onDrop={folderClickHandlers.onDrop}
onDragOver={folderClickHandlers.onDragOver}
onDragLeave={folderClickHandlers.onDragLeave}
onCreateFolder={handleFolderCreate}
onDeleteFolder={handleFolderDelete}
disableActions={loading}
selectedFolder={selectedFolder}
onFolderDragStart={handleFolderDragStart}
onFolderDragEnd={handleFolderDragEnd}
draggedFolderId={draggedFolderId}
/>
<DocumentsTable
currentFolderName={currentFolderName}
breadcrumbs={breadcrumbs}
loading={loading}
onRefresh={refreshCurrentFolder}
subfolders={currentSubfolders}
documents={documents}
searchResults={searchResults}
isFilterActive={isFilterActive}
onFolderSelect={selectFolder}
onFolderDrop={folderClickHandlers.onDrop}
onFolderDragOver={folderClickHandlers.onDragOver}
onFolderDragLeave={folderClickHandlers.onDragLeave}
onFolderDragStart={handleFolderDragStart}
onFolderDragEnd={handleFolderDragEnd}
draggedFolderId={draggedFolderId}
onFolderDelete={handleFolderDelete}
onDocumentRowClick={handleDocumentRowClick}
onDocumentOpen={openDocumentPreview}
selectedDocumentIds={selectedDocumentIds}
focusedDocumentId={focusedDocumentId}
draggingDocumentIds={draggedDocumentIds}
onDocumentDragStart={(event, documentId) => {
<Sidebar
folderNodes={folderNodes}
onToggle={folderClickHandlers.onToggle}
onSelect={folderClickHandlers.onSelect}
onDrop={folderClickHandlers.onDrop}
onDragOver={folderClickHandlers.onDragOver}
onDragLeave={folderClickHandlers.onDragLeave}
onCreateFolder={handleFolderCreate}
onDeleteFolder={handleFolderDelete}
selectedFolder={selectedFolder}
onFolderDragStart={handleFolderDragStart}
onFolderDragEnd={handleFolderDragEnd}
draggedFolderId={draggedFolderId}
/>
<DocumentsTable
currentFolderName={currentFolderName}
breadcrumbs={breadcrumbs}
onRefresh={refreshCurrentFolder}
subfolders={currentSubfolders}
documents={documents}
searchResults={searchResults}
isFilterActive={isFilterActive}
onFolderSelect={selectFolder}
onFolderDrop={folderClickHandlers.onDrop}
onFolderDragOver={folderClickHandlers.onDragOver}
onFolderDragLeave={folderClickHandlers.onDragLeave}
onFolderDragStart={handleFolderDragStart}
onFolderDragEnd={handleFolderDragEnd}
draggedFolderId={draggedFolderId}
onFolderDelete={handleFolderDelete}
onDocumentRowClick={handleDocumentRowClick}
onDocumentOpen={openDocumentPreview}
selectedDocumentIds={selectedDocumentIds}
focusedDocumentId={focusedDocumentId}
draggingDocumentIds={draggedDocumentIds}
onDocumentDragStart={(event, documentId) => {
const selection = selectedDocumentIds.includes(documentId)
? selectedDocumentIds
: [documentId];
@@ -3432,7 +3409,6 @@ const handleDownload = useCallback(
onTagAdd={handleTagAdd}
onTagRemove={handleTagRemove}
onRegenerateThumbnails={handleThumbnailRegeneration}
loading={loading}
previewEntry={selectedPreviewEntry}
onOpenPreview={openDocumentPreview}
onBulkTagAdd={handleBulkTagAddFromDetail}
@@ -3449,7 +3425,7 @@ const handleDownload = useCallback(
</main>
</>
) : (
<LoginView onSubmit={handleLogin} loading={loading} status={status} />
<LoginView onSubmit={handleLogin} status={status} />
)}
</div>
);