import React from 'react' import { AutocompleteInput, Filter, FunctionField, NumberField, ReferenceInput, SearchInput, TextField, useTranslate, } from 'react-admin' import { useMediaQuery } from '@material-ui/core' import FavoriteIcon from '@material-ui/icons/Favorite' import { DateField, DurationField, List, SongContextMenu, SongDatagrid, SongInfo, QuickFilter, SongTitleField, SongSimpleList, RatingField, useResourceRefresh, ArtistLinkField, } from '../common' import { useDispatch } from 'react-redux' import { makeStyles } from '@material-ui/core/styles' import FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder' import { setTrack } from '../actions' import { SongListActions } from './SongListActions' import { AlbumLinkField } from './AlbumLinkField' import { AddToPlaylistDialog } from '../dialogs' import { SongBulkActions, QualityInfo, useSelectedFields } from '../common' import config from '../config' import DownloadMenuDialog from '../dialogs/DownloadMenuDialog' import ExpandInfoDialog from '../dialogs/ExpandInfoDialog' 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 SongFilter = (props) => { const translate = useTranslate() return ( ({ name: [searchText] })} > {config.enableFavourites && ( } defaultValue={true} /> )} ) } const SongList = (props) => { const classes = useStyles() const dispatch = useDispatch() const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md')) useResourceRefresh('song') const handleRowClick = (id, basePath, record) => { dispatch(setTrack(record)) } const toggleableFields = React.useMemo(() => { return { album: isDesktop && ( ), artist: , albumArtist: , trackNumber: isDesktop && , playCount: isDesktop && ( ), playDate: , year: isDesktop && ( r.year || ''} sortByOrder={'DESC'} /> ), quality: isDesktop && , channels: isDesktop && ( ), duration: , rating: config.enableStarRating && ( ), bpm: isDesktop && , genre: , comment: , } }, [isDesktop, classes.ratingField]) const columns = useSelectedFields({ resource: 'song', columns: toggleableFields, defaultOff: [ 'channels', 'bpm', 'playDate', 'albumArtist', 'genre', 'comment', ], }) return ( <> } actions={} filters={} perPage={isXsmall ? 50 : 15} > {isXsmall ? ( ) : ( {columns} ) } /> )} } /> ) } export default SongList