import React from 'react' import PropTypes from 'prop-types' import List from '@material-ui/core/List' import ListItem from '@material-ui/core/ListItem' 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 { sanitizeListRestProps } from 'react-admin' import { DurationField, SongContextMenu, RatingField } from './index' import { setTrack } from '../actions' import { useDispatch } from 'react-redux' import config from '../config' const useStyles = makeStyles( { link: { textDecoration: 'none', color: 'inherit', }, listItem: { padding: '10px', }, title: { paddingRight: '10px', width: '80%', }, secondary: { marginTop: '-3px', width: '96%', display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', }, artist: { paddingRight: '30px', }, timeStamp: { float: 'right', color: '#fff', fontWeight: '200', opacity: 0.6, fontSize: '12px', padding: '2px', }, rightIcon: { top: '26px', }, }, { name: 'RaSongSimpleList' }, ) export const SongSimpleList = ({ basePath, className, classes: classesOverride, data, hasBulkActions, ids, loading, onToggleItem, selectedIds, total, ...rest }) => { const dispatch = useDispatch() const classes = useStyles({ classes: classesOverride }) return ( (loading || total > 0) && ( {ids.map( (id) => data[id] && ( dispatch(setTrack(data[id]))}> {data[id].title} } secondary={ <> {data[id].artist} {config.enableStarRating && ( )} } /> ), )} ) ) } SongSimpleList.propTypes = { basePath: PropTypes.string, className: PropTypes.string, classes: PropTypes.object, data: PropTypes.object, hasBulkActions: PropTypes.bool.isRequired, ids: PropTypes.array, onToggleItem: PropTypes.func, selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired, } SongSimpleList.defaultProps = { hasBulkActions: false, selectedIds: [], }