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: [], }