import React, { useMemo } from 'react' import { Datagrid, DatagridBody, DatagridRow, NumberField, TextField, } from 'react-admin' import { useMediaQuery } from '@material-ui/core' import FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder' import { makeStyles } from '@material-ui/core/styles' import { useDrag } from 'react-dnd' import { ArtistLinkField, DurationField, RangeField, SimpleList, AlbumContextMenu, RatingField, useSelectedFields, } from '../common' import config from '../config' import { DraggableTypes } from '../consts' const useStyles = makeStyles({ columnIcon: { marginLeft: '3px', marginTop: '-2px', verticalAlign: 'text-top', }, row: { '&:hover': { '& $contextMenu': { visibility: 'visible', }, '& $ratingField': { visibility: 'visible', }, }, }, tableCell: { width: '17.5%', }, contextMenu: { visibility: 'hidden', }, ratingField: { visibility: 'hidden', }, }) const AlbumDatagridRow = (props) => { const { record } = props const [, dragAlbumRef] = useDrag( () => ({ type: DraggableTypes.ALBUM, item: { albumIds: [record.id] }, options: { dropEffect: 'copy' }, }), [record] ) return } const AlbumDatagridBody = (props) => ( } /> ) const AlbumDatagrid = (props) => ( } /> ) const AlbumTableView = ({ hasShow, hasEdit, hasList, syncWithLocation, ...rest }) => { const classes = useStyles() const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md')) const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const toggleableFields = useMemo(() => { return { artist: , songCount: isDesktop && ( ), playCount: isDesktop && ( ), year: ( ), duration: isDesktop && , rating: config.enableStarRating && ( ), } }, [classes.ratingField, isDesktop]) const columns = useSelectedFields({ resource: 'album', columns: toggleableFields, }) return isXsmall ? ( r.name} secondaryText={(r) => ( <> {r.albumArtist} {config.enableStarRating && ( <>
)} )} tertiaryText={(r) => ( <>       )} linkType={'show'} rightIcon={(r) => } {...rest} /> ) : ( {columns} ) } /> ) } export default AlbumTableView