@ant-design/x
Version:
Craft AI-driven interfaces effortlessly
52 lines (51 loc) • 2.02 kB
TypeScript
import React from 'react';
import { type FolderTreeData } from './DirectoryTree';
export interface FileContentService {
loadFileContent(filePath: string): Promise<string>;
}
export type SemanticType = 'root' | 'directoryTree' | 'directoryTitle' | 'filePreview' | 'previewTitle' | 'previewRender';
export interface FolderProps {
prefixCls?: string;
className?: string;
classNames?: Partial<Record<SemanticType, string>>;
styles?: Partial<Record<SemanticType, React.CSSProperties>>;
style?: React.CSSProperties;
directoryIcons?: false | Record<'directory' | string, React.ReactNode | (() => React.ReactNode)>;
treeData: FolderTreeData[];
selectable?: boolean;
selectedFile?: string[];
defaultSelectedFile?: string[];
onSelectedFileChange?: (file: {
path: string[];
title?: FolderTreeData['title'];
content?: string;
}) => void;
directoryTreeWith?: number | string;
emptyRender?: false | React.ReactNode | (() => React.ReactNode);
previewRender?: React.ReactNode | ((file: {
content?: string;
path: string[];
title?: FolderTreeData['title'];
language: string;
}, info: {
originNode: React.ReactNode;
}) => React.ReactNode);
defaultExpandedPaths?: string[];
expandedPaths?: string[];
defaultExpandAll?: boolean;
onExpandedPathsChange?: (paths: string[]) => void;
fileContentService?: FileContentService;
onFileClick?: (filePath: string, content?: string) => void;
onFolderClick?: (folderPath: string) => void;
directoryTitle?: false | React.ReactNode | (() => React.ReactNode);
previewTitle?: false | React.ReactNode | (({ title, path, content, }: {
title: React.ReactNode;
path: string[];
content: string;
}) => React.ReactNode);
}
export type FolderRef = {
nativeElement: HTMLDivElement;
};
declare const Folder: React.ForwardRefExoticComponent<FolderProps & React.RefAttributes<FolderRef>>;
export default Folder;