Files
kandev/apps/web/components/task/file-browser-header.tsx
T

80 lines
2.2 KiB
TypeScript

"use client";
import type { Ref } from "react";
import { FileBrowserSearchHeader } from "./file-browser-search-header";
import { FileBrowserToolbar } from "./file-browser-parts";
import { useFileBrowserSearch } from "./file-browser-hooks";
export type FileBrowserHeaderProps = {
treeLoaded: boolean;
search: ReturnType<typeof useFileBrowserSearch>;
displayPath: string;
fullPath: string;
copied: boolean;
expandedPathsSize: number;
onCopyPath: (value: string) => void | Promise<void>;
onStartCreate?: () => void;
onOpenFolder: (opener?: HTMLButtonElement) => void;
isOpeningFolder?: boolean;
isFolderDisabled?: boolean;
onCollapseAll: () => void;
showCreateButton: boolean;
onUploadFiles?: (mode: "files" | "folder") => void;
onAddSources?: (opener: HTMLButtonElement) => void;
addSourcesButtonRef?: Ref<HTMLButtonElement>;
addSourcesDisabledReason?: string;
};
export function FileBrowserHeader({
treeLoaded,
search,
displayPath,
fullPath,
copied,
expandedPathsSize,
onCopyPath,
onStartCreate,
onOpenFolder,
isOpeningFolder,
isFolderDisabled,
onCollapseAll,
showCreateButton,
onUploadFiles,
onAddSources,
addSourcesButtonRef,
addSourcesDisabledReason,
}: FileBrowserHeaderProps) {
if (!treeLoaded) return null;
if (search.isSearchActive) {
return (
<FileBrowserSearchHeader
isSearching={search.isSearching}
localSearchQuery={search.localSearchQuery}
searchInputRef={search.searchInputRef}
onSearchChange={search.handleSearchChange}
onCloseSearch={search.handleCloseSearch}
/>
);
}
return (
<FileBrowserToolbar
displayPath={displayPath}
fullPath={fullPath}
copied={copied}
expandedPathsSize={expandedPathsSize}
onCopyPath={onCopyPath}
onStartCreate={onStartCreate}
onOpenFolder={onOpenFolder}
isOpeningFolder={isOpeningFolder}
isFolderDisabled={isFolderDisabled}
onStartSearch={() => search.setIsSearchActive(true)}
onCollapseAll={onCollapseAll}
showCreateButton={showCreateButton}
onUploadFiles={onUploadFiles}
onAddSources={onAddSources}
addSourcesButtonRef={addSourcesButtonRef}
addSourcesDisabledReason={addSourcesDisabledReason}
/>
);
}