import * as React from 'react'; import { FolderIcon, FolderIconType } from '@joplin/lib/services/database/types'; import ExpandLink from './ExpandLink'; import { StyledListItemAnchor, 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'; import { _ } from '@joplin/lib/locale'; import NoteCount from './NoteCount'; import ListItemWrapper, { ListItemRef } from './ListItemWrapper'; const renderFolderIcon = (folderIcon: FolderIcon) => { if (!folderIcon) { const defaultFolderIcon: FolderIcon = { dataUrl: '', emoji: '', name: 'far fa-folder', type: FolderIconType.FontAwesome, }; return
; } return
; }; interface FolderItemProps { anchorRef: ListItemRef; 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; index: number; itemCount: number; } 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 shareTitle = _('Shared'); 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); }} > {doRenderFolderIcon()}{folderTitle} {shareIcon} ); } export default FolderItem;