import * as React from 'react'; import { FolderIcon, FolderIconType } from '@joplin/lib/services/database/types'; import ExpandLink from './ExpandLink'; import { StyledListItem, StyledListItemAnchor, StyledNoteCount, StyledShareIcon, StyledSpanFix } from '../styles'; import { ItemClickListener, ItemContextMenuListener, ItemDragListener } from '../types'; import FolderIconBox from '../../FolderIconBox'; import { getTrashFolderIcon, getTrashFolderId } from '@joplin/lib/services/trash'; import Folder from '@joplin/lib/models/Folder'; import { ModelType } from '@joplin/lib/BaseModel'; const renderFolderIcon = (folderIcon: FolderIcon) => { if (!folderIcon) { const defaultFolderIcon: FolderIcon = { dataUrl: '', emoji: '', name: 'far fa-folder', type: FolderIconType.FontAwesome, }; return
; } return
; }; interface FolderItemProps { hasChildren: boolean; showFolderIcon: boolean; isExpanded: boolean; parentId: string; depth: number; folderId: string; folderTitle: string; folderIcon: FolderIcon; noteCount: number; onFolderDragStart_: ItemDragListener; onFolderDragOver_: ItemDragListener; onFolderDrop_: ItemDragListener; itemContextMenu: ItemContextMenuListener; folderItem_click: (folderId: string)=> void; onFolderToggleClick_: ItemClickListener; shareId: string; selected: boolean; anchorRef: React.Ref; } function FolderItem(props: FolderItemProps) { const { hasChildren, showFolderIcon, isExpanded, parentId, depth, selected, folderId, folderTitle, folderIcon, noteCount, onFolderDragStart_, onFolderDragOver_, onFolderDrop_, itemContextMenu, folderItem_click, onFolderToggleClick_, shareId } = props; const noteCountComp = noteCount ? {noteCount} : null; const shareIcon = shareId && !parentId ? : null; const draggable = ![getTrashFolderId(), Folder.conflictFolderId()].includes(folderId); const doRenderFolderIcon = () => { if (folderId === getTrashFolderId()) { return renderFolderIcon(getTrashFolderIcon(FolderIconType.FontAwesome)); } if (!showFolderIcon) return null; return renderFolderIcon(folderIcon); }; return ( { folderItem_click(folderId); }} onDoubleClick={onFolderToggleClick_} > {doRenderFolderIcon()}{folderTitle} {shareIcon} {noteCountComp} ); } export default FolderItem;