// External Modules import * as React from 'react'; // Types import {IAssetItem, IAssetCallback} from '../../interfaces'; import {superdeskApi} from '../../apis'; // UI import {Checkbox, Icon, Dropdown, IconButton} from 'superdesk-ui-framework/react'; import { ListItem, ListItemBorder, ListItemColumn, ListItemRow, } from '../../ui/list'; // Utils import {getIconTypeFromMimetype, getAssetStateLabel, getHumanReadableFileSize} from '../../utils/ui'; import {getDropdownItemsForActions, getMimetypeHumanReadable, isAssetLocked} from '../../utils/assets'; interface IProps { asset: IAssetItem; selected: boolean; onClick(asset: IAssetItem): void; onDoubleClick?(asset: IAssetItem): void; actions?: Array; itemSelected: boolean; itemSelectedLocked?: boolean; updateSelectedAssetIds(asset: Partial): void; } export class AssetListItem extends React.PureComponent { constructor(props: IProps) { super(props); this.onItemClick = this.onItemClick.bind(this); this.onItemDoubleClick = this.onItemDoubleClick.bind(this); this.onPreviewSelect = this.onPreviewSelect.bind(this); this.onCheckboxClick = this.onCheckboxClick.bind(this); } onItemClick(event: React.MouseEvent) { if (this.props.onClick) { event.stopPropagation(); this.props.onClick(this.props.asset); } } onItemDoubleClick(event: React.MouseEvent) { if (this.props.onDoubleClick) { event.stopPropagation(); this.props.onDoubleClick(this.props.asset); } } onPreviewSelect() { this.props.onClick(this.props.asset); } stopClickPropagation(e: React.MouseEvent) { e.stopPropagation(); } onCheckboxClick(e: React.MouseEvent) { this.stopClickPropagation(e); this.props.updateSelectedAssetIds(this.props.asset); } render() { const {gettext, longFormatDateTime, getRelativeOrAbsoluteDateTime} = superdeskApi.localization; const {config} = superdeskApi.instance; const actions = getDropdownItemsForActions(this.props.asset, this.props.actions); const mimetype = getMimetypeHumanReadable(this.props.asset.mimetype); const versionShort = getRelativeOrAbsoluteDateTime(this.props.asset.versioncreated, config.view.dateformat); const versionLong = longFormatDateTime(this.props.asset.versioncreated); return ( {isAssetLocked(this.props.asset) ? ( ) : null }
this.onCheckboxClick} />
{this.props.asset.name} {this.props.asset.description} {getAssetStateLabel(this.props.asset.state)} {gettext('Type:')} {mimetype} {gettext('Size:')} {getHumanReadableFileSize(this.props.asset.length)} {actions.length === 0 ? null : (
false} />
)}
); } }