import React, { useMemo } from 'react' import { useHistory } from 'react-router-dom' import { AutocompleteInput, Datagrid, DatagridBody, DatagridRow, Filter, NumberField, ReferenceInput, SearchInput, TextField, useTranslate, } from 'react-admin' import { useMediaQuery, withWidth } from '@material-ui/core' import FavoriteIcon from '@material-ui/icons/Favorite' import FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder' import { makeStyles } from '@material-ui/core/styles' import { useDrag } from 'react-dnd' import { ArtistContextMenu, List, QuickFilter, useGetHandleArtistClick, ArtistSimpleList, RatingField, useSelectedFields, useResourceRefresh, SizeField, } from '../common' import config from '../config' import ArtistListActions from './ArtistListActions' import { DraggableTypes } from '../consts' const useStyles = makeStyles({ contextHeader: { marginLeft: '3px', marginTop: '-2px', verticalAlign: 'text-top', }, row: { '&:hover': { '& $contextMenu': { visibility: 'visible', }, '& $ratingField': { visibility: 'visible', }, }, }, contextMenu: { visibility: 'hidden', }, ratingField: { visibility: 'hidden', }, }) const ArtistFilter = (props) => { const translate = useTranslate() return ( ({ name: [searchText] })} > {config.enableFavourites && ( } defaultValue={true} /> )} ) } const ArtistDatagridRow = (props) => { const { record } = props const [, dragArtistRef] = useDrag( () => ({ type: DraggableTypes.ARTIST, item: { artistIds: [record?.id] }, options: { dropEffect: 'copy' }, }), [record], ) return } const ArtistDatagridBody = (props) => ( } /> ) const ArtistDatagrid = (props) => ( } /> ) const ArtistListView = ({ hasShow, hasEdit, hasList, width, ...rest }) => { const classes = useStyles() const handleArtistLink = useGetHandleArtistClick(width) const history = useHistory() const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) useResourceRefresh('artist') const toggleableFields = useMemo(() => { return { albumCount: , songCount: , size: !isXsmall && , playCount: , rating: config.enableStarRating && ( ), } }, [classes.ratingField, isXsmall]) const columns = useSelectedFields( { resource: 'artist', columns: toggleableFields, }, ['size'], ) return isXsmall ? ( history.push(handleArtistLink(id))} {...rest} /> ) : ( {columns} ) } /> ) } const ArtistList = (props) => { return ( <> } actions={} > ) } export default withWidth()(ArtistList)