in frontend/src/components/taskSelection/taskList.js [52:136]
function TaskItem({
data,
project,
setZoomedTaskId,
setActiveTaskModal,
selectTask,
selected = [],
}: Object) {
const [isCopied, setCopied] = useCopyClipboard();
const location = useLocation();
return (
<div
className={`cf db ba br1 mt2 ${
selected.includes(data.taskId) ? 'b--blue-dark bw1' : 'b--tan bw1'
}`}
>
<div
className="w-80 pv3 fl cf pointer"
onClick={() => selectTask(data.taskId, data.taskStatus)}
>
<div className="w-70-l w-40 fl dib truncate">
<span className="pl3 b">
<FormattedMessage {...messages.taskId} values={{ id: data.taskId }} />
</span>
{data.actionDate && (
<div title={data.actionDate} className="dn di-l">
<span className="ph2 blue-grey">·</span>
<span className="blue-grey">
<FormattedMessage
{...messages.taskLastUpdate}
values={{ user: <span className="b blue-grey">{data.actionBy}</span> }}
/>{' '}
<RelativeTimeWithUnit date={data.actionDate} />
</span>
</div>
)}
</div>
<div className="w-30-l w-60 fl blue-grey dib truncate">
<TaskStatus status={data.taskStatus} />
</div>
</div>
<div className="w-20 pv3 fr tr dib blue-light truncate overflow-empty">
<FormattedMessage {...messages.seeTaskHistory}>
{(msg) => (
<div className="pr2 dib v-mid" title={msg}>
<ListIcon
width="18px"
height="18px"
className="pointer hover-blue-grey"
onClick={() => setActiveTaskModal(data.taskId)}
/>
</div>
)}
</FormattedMessage>
<FormattedMessage {...messages.zoomToTask}>
{(msg) => (
<div className="pl2 pr1 dib v-mid" title={msg}>
<ZoomPlusIcon
width="18px"
height="18px"
className="pointer hover-blue-grey"
onClick={() => setZoomedTaskId(data.taskId)}
/>
</div>
)}
</FormattedMessage>
<FormattedMessage {...messages[isCopied ? 'taskLinkCopied' : 'copyTaskLink']}>
{(msg) => (
<div className={`ph2 dib v-mid ${isCopied ? 'grey-light' : ''}`} title={msg}>
<InternalLinkIcon
width="18px"
height="18px"
className={`pointer ${isCopied ? '' : 'hover-blue-grey'}`}
onClick={() =>
setCopied(`${location.origin}${location.pathname}?search=${data.taskId}`)
}
/>
</div>
)}
</FormattedMessage>
</div>
</div>
);
}