in src/components/Search/SearchResultsListItem.tsx [59:140]
function SearchResultsListItem({
index,
item,
isChecked,
onToggle,
listItemComponent,
}: SearchResultsListItemProps) {
const ListItemComponent = listItemComponent === 'radio' ? Radio : Checkbox;
const revisionHash = truncateHash(item.revision);
const commitMessage = getLatestCommitMessage(item);
const itemDate = new Date(item.push_timestamp * 1000);
const onToggleAction = () => {
onToggle(item);
};
return (
<>
<ListItemButton
key={item.id}
onClick={onToggleAction}
className={`${styles.listItemButton} ${
isChecked ? 'item-selected' : ''
}`}
>
<ListItem
className='search-revision-item search-revision'
disablePadding
>
<ListItemIcon className='search-revision-item-icon search-revision'>
<ListItemComponent
className='search-revision-item-checkbox'
edge='start'
tabIndex={-1}
disableRipple
data-testid={`checkbox-${index}`}
checked={isChecked}
/>
</ListItemIcon>
<ListItemText
className='search-revision-item-text'
primary={
<Fragment>
<Typography
sx={{ display: 'inline' }}
component='span'
variant='body2'
color='text.primary'
alignItems='center'
className='revision-hash'
>
{revisionHash}
</Typography>
<div className='info-caption'>
<div className='info-caption-item item-author'>
{' '}
<MailOutlineOutlinedIcon
className='mail-icon'
fontSize='small'
/>{' '}
{item.author}
</div>
<div className='info-caption-item item-time'>
<AccessTimeOutlinedIcon
className='time-icon'
fontSize='small'
/>
<DateTimeDisplay itemDate={itemDate} />
</div>
</div>
</Fragment>
}
secondary={`${commitMessage} `}
primaryTypographyProps={{ noWrap: true }}
secondaryTypographyProps={{ noWrap: true }}
/>
</ListItem>
</ListItemButton>
</>
);
}