diff --git a/ui/src/album/AlbumShow.js b/ui/src/album/AlbumShow.js
index 70e4ab20d..4560419bb 100644
--- a/ui/src/album/AlbumShow.js
+++ b/ui/src/album/AlbumShow.js
@@ -1,47 +1,28 @@
import React from 'react'
-import {
- Datagrid,
- FunctionField,
- List,
- Loading,
- TextField,
- useGetOne
-} from 'react-admin'
+import { Loading, useGetOne } from 'react-admin'
import AlbumDetails from './AlbumDetails'
-import { DurationField, Title } from '../common'
+import { Title } from '../common'
import { useStyles } from './styles'
import { AlbumActions } from './AlbumActions'
import { AlbumSongBulkActions } from './AlbumSongBulkActions'
-import { useMediaQuery } from '@material-ui/core'
-import { setTrack } from '../audioplayer'
-import { useDispatch } from 'react-redux'
+import AlbumSongs from './AlbumSongs'
const AlbumShow = (props) => {
- const dispatch = useDispatch()
- const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md'))
const classes = useStyles()
const { data: record, loading, error } = useGetOne('album', props.id)
if (loading) {
- return
+ return null
}
if (error) {
return
ERROR: {error}
}
- const trackName = (r) => {
- const name = r.title
- if (r.trackNumber) {
- return r.trackNumber.toString().padStart(2, '0') + ' ' + name
- }
- return name
- }
-
return (
<>
-
}
actions={}
@@ -52,23 +33,7 @@ const AlbumShow = (props) => {
pagination={null}
sort={{ field: 'discNumber asc, trackNumber asc', order: 'ASC' }}
bulkActionButtons={}
- >
- dispatch(setTrack(record))}
- >
- {isDesktop && (
-
- )}
- {isDesktop && }
- {!isDesktop && }
- {isDesktop && }
-
-
-
+ />
>
)
}
diff --git a/ui/src/album/AlbumSongs.js b/ui/src/album/AlbumSongs.js
new file mode 100644
index 000000000..ff1f283ae
--- /dev/null
+++ b/ui/src/album/AlbumSongs.js
@@ -0,0 +1,111 @@
+import React from 'react'
+import {
+ BulkActionsToolbar,
+ Datagrid,
+ FunctionField,
+ ListToolbar,
+ TextField,
+ useListController
+} from 'react-admin'
+import classnames from 'classnames'
+import { useDispatch } from 'react-redux'
+import { Card, useMediaQuery } from '@material-ui/core'
+import { makeStyles } from '@material-ui/core/styles'
+import { setTrack } from '../audioplayer'
+import { DurationField } from '../common'
+
+const useStyles = makeStyles(
+ (theme) => ({
+ root: {},
+ main: {
+ display: 'flex'
+ },
+ content: {
+ marginTop: 0,
+ transition: theme.transitions.create('margin-top'),
+ position: 'relative',
+ flex: '1 1 auto',
+ [theme.breakpoints.down('xs')]: {
+ boxShadow: 'none'
+ },
+ overflow: 'inherit'
+ },
+ bulkActionsDisplayed: {
+ marginTop: -theme.spacing(8),
+ transition: theme.transitions.create('margin-top')
+ },
+ actions: {
+ zIndex: 2,
+ display: 'flex',
+ justifyContent: 'flex-end',
+ flexWrap: 'wrap'
+ },
+ noResults: { padding: 20 }
+ }),
+ { name: 'RaList' }
+)
+
+const trackName = (r) => {
+ const name = r.title
+ if (r.trackNumber) {
+ return r.trackNumber.toString().padStart(2, '0') + ' ' + name
+ }
+ return name
+}
+
+const AlbumSongs = (props) => {
+ const classes = useStyles(props)
+ const dispatch = useDispatch()
+ const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md'))
+ const controllerProps = useListController(props)
+ const { bulkActionButtons } = props
+ const { loading, version } = controllerProps
+
+ if (loading) {
+ return null
+ }
+ return (
+ <>
+
+
+ 0
+ })}
+ key={version}
+ >
+ {/*{bulkActionButtons !== false && bulkActionButtons && (*/}
+
+ {bulkActionButtons}
+
+ {/*)}*/}
+ dispatch(setTrack(record))}
+ {...controllerProps}
+ hasBulkActions={props.bulkActionButtons !== false}
+ >
+ {isDesktop && (
+
+ )}
+ {isDesktop && }
+ {!isDesktop && }
+ {isDesktop && }
+
+
+
+
+ >
+ )
+}
+
+export default AlbumSongs