import { makeStyles, useMediaQuery } from '@material-ui/core' import React, { cloneElement } from 'react' import { CreateButton, Datagrid, DateField, EditButton, Filter, List, sanitizeListRestProps, SearchInput, SimpleList, TextField, TopToolbar, UrlField, useTranslate, } from 'react-admin' import { ToggleFieldsMenu, useSelectedFields } from '../common' import { StreamField } from './StreamField' import { setTrack } from '../actions' import { songFromRadio } from './helper' import { useDispatch } from 'react-redux' const useStyles = makeStyles({ row: { '&:hover': { '& $contextMenu': { visibility: 'visible', }, }, }, contextMenu: { visibility: 'hidden', }, }) const RadioFilter = (props) => ( ) const RadioListActions = ({ className, filters, resource, showFilter, displayedFilters, filterValues, isAdmin, ...rest }) => { const isNotSmall = useMediaQuery((theme) => theme.breakpoints.up('sm')) const translate = useTranslate() return ( {isAdmin && ( {translate('ra.action.create')} )} {filters && cloneElement(filters, { resource, showFilter, displayedFilters, filterValues, context: 'button', })} {isNotSmall && } ) } const RadioList = ({ permissions, ...props }) => { const classes = useStyles() const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) const dispatch = useDispatch() const isAdmin = permissions === 'admin' const toggleableFields = { name: , homePageUrl: ( e.stopPropagation()} target="_blank" rel="noopener noreferrer" /> ), streamUrl: , updatedAt: , createdAt: , } const columns = useSelectedFields({ resource: 'radio', columns: toggleableFields, defaultOff: ['createdAt'], }) const handleRowClick = async (id, basePath, record) => { dispatch(setTrack(await songFromRadio(record))) } return ( } filters={} perPage={isXsmall ? 25 : 10} > {isXsmall ? ( ( { e.preventDefault() e.stopPropagation() }} /> )} primaryText={(r) => r.name} secondaryText={(r) => r.homePageUrl} /> ) : ( {columns} {isAdmin && } )} ) } export default RadioList