import React from 'react'
import PropTypes from 'prop-types'
import Avatar from '@material-ui/core/Avatar'
import List from '@material-ui/core/List'
import ListItem from '@material-ui/core/ListItem'
import ListItemAvatar from '@material-ui/core/ListItemAvatar'
import ListItemIcon from '@material-ui/core/ListItemIcon'
import ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction'
import ListItemText from '@material-ui/core/ListItemText'
import { makeStyles } from '@material-ui/core/styles'
import { Link } from 'react-router-dom'
import { linkToRecord, sanitizeListRestProps } from 'react-admin'
const useStyles = makeStyles(
{
link: {
textDecoration: 'none',
color: 'inherit',
},
tertiary: { float: 'right', opacity: 0.541176 },
},
{ name: 'RaSimpleList' }
)
const LinkOrNot = ({
classes: classesOverride,
linkType,
basePath,
id,
record,
children,
}) => {
const classes = useStyles({ classes: classesOverride })
return linkType === 'edit' || linkType === true ? (
{children}
) : linkType === 'show' ? (
{children}
) : typeof linkType === 'function' ? (
linkType(id, basePath, record)}>{children}
) : (
{children}
)
}
export const SimpleList = ({
basePath,
className,
classes: classesOverride,
data,
hasBulkActions,
ids,
loading,
leftAvatar,
leftIcon,
linkType,
onToggleItem,
primaryText,
rightAvatar,
rightIcon,
secondaryText,
selectedIds,
tertiaryText,
total,
...rest
}) => {
const classes = useStyles({ classes: classesOverride })
return (
(loading || total > 0) && (
{ids.map((id) => (
{leftIcon && (
{leftIcon(data[id], id)}
)}
{leftAvatar && (
{leftAvatar(data[id], id)}
)}
{primaryText(data[id], id)}
{tertiaryText && (
{tertiaryText(data[id], id)}
)}
}
secondary={secondaryText && secondaryText(data[id], id)}
/>
{(rightAvatar || rightIcon) && (
{rightAvatar && {rightAvatar(data[id], id)}}
{rightIcon && (
{rightIcon(data[id], id)}
)}
)}
))}
)
)
}
SimpleList.propTypes = {
basePath: PropTypes.string,
className: PropTypes.string,
classes: PropTypes.object,
data: PropTypes.object,
hasBulkActions: PropTypes.bool.isRequired,
ids: PropTypes.array,
leftAvatar: PropTypes.func,
leftIcon: PropTypes.func,
linkType: PropTypes.oneOfType([
PropTypes.string,
PropTypes.bool,
PropTypes.func,
]).isRequired,
onToggleItem: PropTypes.func,
primaryText: PropTypes.func,
rightAvatar: PropTypes.func,
rightIcon: PropTypes.func,
secondaryText: PropTypes.func,
selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired,
tertiaryText: PropTypes.func,
}
SimpleList.defaultProps = {
linkType: 'edit',
hasBulkActions: false,
selectedIds: [],
}