Remove duplication
This commit is contained in:
@@ -1,8 +1,6 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {
|
import {
|
||||||
BulkActionsToolbar,
|
BulkActionsToolbar,
|
||||||
Datagrid,
|
|
||||||
DatagridBody,
|
|
||||||
DatagridLoading,
|
DatagridLoading,
|
||||||
FunctionField,
|
FunctionField,
|
||||||
ListToolbar,
|
ListToolbar,
|
||||||
@@ -17,7 +15,7 @@ import { playTracks } from '../audioplayer'
|
|||||||
import {
|
import {
|
||||||
DurationField,
|
DurationField,
|
||||||
SongDetails,
|
SongDetails,
|
||||||
SongDatagridRow,
|
SongDatagrid,
|
||||||
SongContextMenu,
|
SongContextMenu,
|
||||||
} from '../common'
|
} from '../common'
|
||||||
|
|
||||||
@@ -88,13 +86,6 @@ const AlbumSongs = (props) => {
|
|||||||
const showPlaceholder = !anySong || anySong.albumId !== albumId
|
const showPlaceholder = !anySong || anySong.albumId !== albumId
|
||||||
const hasBulkActions = props.bulkActionButtons !== false
|
const hasBulkActions = props.bulkActionButtons !== false
|
||||||
|
|
||||||
const SongsDatagridBody = (props) => (
|
|
||||||
<DatagridBody {...props} row={<SongDatagridRow multiDisc={multiDisc} />} />
|
|
||||||
)
|
|
||||||
const SongsDatagrid = (props) => (
|
|
||||||
<Datagrid {...props} body={<SongsDatagridBody />} />
|
|
||||||
)
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ListToolbar
|
<ListToolbar
|
||||||
@@ -127,11 +118,12 @@ const AlbumSongs = (props) => {
|
|||||||
size={'small'}
|
size={'small'}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<SongsDatagrid
|
<SongDatagrid
|
||||||
expand={!isXsmall && <SongDetails />}
|
expand={!isXsmall && <SongDetails />}
|
||||||
rowClick={(id) => dispatch(playTracks(data, ids, id))}
|
rowClick={(id) => dispatch(playTracks(data, ids, id))}
|
||||||
{...controllerProps}
|
{...controllerProps}
|
||||||
hasBulkActions={hasBulkActions}
|
hasBulkActions={hasBulkActions}
|
||||||
|
multiDisc={multiDisc}
|
||||||
>
|
>
|
||||||
{isDesktop && (
|
{isDesktop && (
|
||||||
<TextField
|
<TextField
|
||||||
@@ -152,7 +144,7 @@ const AlbumSongs = (props) => {
|
|||||||
{isDesktop && <TextField source="artist" sortable={false} />}
|
{isDesktop && <TextField source="artist" sortable={false} />}
|
||||||
<DurationField source="duration" sortable={false} />
|
<DurationField source="duration" sortable={false} />
|
||||||
<SongContextMenu />
|
<SongContextMenu />
|
||||||
</SongsDatagrid>
|
</SongDatagrid>
|
||||||
)}
|
)}
|
||||||
</Card>
|
</Card>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import React, { useState, isValidElement, cloneElement } from 'react'
|
import React, { useState, isValidElement, cloneElement } from 'react'
|
||||||
import { DatagridRow, useTranslate } from 'react-admin'
|
import { Datagrid, DatagridBody, DatagridRow, useTranslate } from 'react-admin'
|
||||||
import { TableCell, TableRow, Typography } from '@material-ui/core'
|
import { TableCell, TableRow, Typography } from '@material-ui/core'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import RangeField from './RangeField'
|
import RangeField from './RangeField'
|
||||||
|
|
||||||
const SongDatagridRow = ({ record, children, multiDisc, ...rest }) => {
|
export const SongDatagridRow = ({ record, children, multiDisc, ...rest }) => {
|
||||||
const translate = useTranslate()
|
const translate = useTranslate()
|
||||||
const [visible, setVisible] = useState(false)
|
const [visible, setVisible] = useState(false)
|
||||||
return (
|
return (
|
||||||
@@ -51,4 +51,10 @@ RangeField.propTypes = {
|
|||||||
multiDisc: PropTypes.bool,
|
multiDisc: PropTypes.bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SongDatagridRow
|
export const SongDatagrid = (props) => {
|
||||||
|
const multiDisc = props.multiDisc
|
||||||
|
const SongDatagridBody = (props) => (
|
||||||
|
<DatagridBody {...props} row={<SongDatagridRow multiDisc={multiDisc} />} />
|
||||||
|
)
|
||||||
|
return <Datagrid {...props} body={<SongDatagridBody />} />
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@ import SongDetails from './SongDetails'
|
|||||||
import SizeField from './SizeField'
|
import SizeField from './SizeField'
|
||||||
import DocLink from './DocLink'
|
import DocLink from './DocLink'
|
||||||
import List from './List'
|
import List from './List'
|
||||||
import SongDatagridRow from './SongDatagridRow'
|
import { SongDatagrid, SongDatagridRow } from './SongDatagrid'
|
||||||
import AddToPlaylistMenu from './AddToPlaylistMenu'
|
import AddToPlaylistMenu from './AddToPlaylistMenu'
|
||||||
import SongContextMenu from './SongContextMenu'
|
import SongContextMenu from './SongContextMenu'
|
||||||
|
|
||||||
@@ -25,6 +25,7 @@ export {
|
|||||||
SimpleList,
|
SimpleList,
|
||||||
RangeField,
|
RangeField,
|
||||||
SongDetails,
|
SongDetails,
|
||||||
|
SongDatagrid,
|
||||||
SongDatagridRow,
|
SongDatagridRow,
|
||||||
DocLink,
|
DocLink,
|
||||||
formatRange,
|
formatRange,
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {
|
import {
|
||||||
BulkActionsToolbar,
|
BulkActionsToolbar,
|
||||||
Datagrid,
|
|
||||||
DatagridBody,
|
|
||||||
DatagridLoading,
|
DatagridLoading,
|
||||||
ListToolbar,
|
ListToolbar,
|
||||||
TextField,
|
TextField,
|
||||||
|
DatagridBody,
|
||||||
|
Datagrid,
|
||||||
useListController,
|
useListController,
|
||||||
useRefresh,
|
useRefresh,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
|
|||||||
+4
-13
@@ -1,7 +1,5 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {
|
import {
|
||||||
Datagrid,
|
|
||||||
DatagridBody,
|
|
||||||
Filter,
|
Filter,
|
||||||
FunctionField,
|
FunctionField,
|
||||||
NumberField,
|
NumberField,
|
||||||
@@ -14,7 +12,7 @@ import {
|
|||||||
SimpleList,
|
SimpleList,
|
||||||
List,
|
List,
|
||||||
SongDetails,
|
SongDetails,
|
||||||
SongDatagridRow,
|
SongDatagrid,
|
||||||
SongContextMenu,
|
SongContextMenu,
|
||||||
} from '../common'
|
} from '../common'
|
||||||
import { useDispatch } from 'react-redux'
|
import { useDispatch } from 'react-redux'
|
||||||
@@ -28,13 +26,6 @@ const SongFilter = (props) => (
|
|||||||
</Filter>
|
</Filter>
|
||||||
)
|
)
|
||||||
|
|
||||||
const SongsDatagridBody = (props) => (
|
|
||||||
<DatagridBody {...props} row={<SongDatagridRow />} />
|
|
||||||
)
|
|
||||||
const SongsDatagrid = (props) => (
|
|
||||||
<Datagrid {...props} body={<SongsDatagridBody />} />
|
|
||||||
)
|
|
||||||
|
|
||||||
const SongList = (props) => {
|
const SongList = (props) => {
|
||||||
const dispatch = useDispatch()
|
const dispatch = useDispatch()
|
||||||
const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs'))
|
const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs'))
|
||||||
@@ -59,10 +50,10 @@ const SongList = (props) => {
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
linkType={(id, basePath, record) => dispatch(setTrack(record))}
|
linkType={(id, basePath, record) => dispatch(setTrack(record))}
|
||||||
rightIcon={(r) => <SongContextMenu record={r} />}
|
rightIcon={(r) => <SongContextMenu record={r} visible={true} />}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<SongsDatagrid
|
<SongDatagrid
|
||||||
expand={<SongDetails />}
|
expand={<SongDetails />}
|
||||||
rowClick={(id, basePath, record) => dispatch(setTrack(record))}
|
rowClick={(id, basePath, record) => dispatch(setTrack(record))}
|
||||||
>
|
>
|
||||||
@@ -76,7 +67,7 @@ const SongList = (props) => {
|
|||||||
)}
|
)}
|
||||||
<DurationField source="duration" />
|
<DurationField source="duration" />
|
||||||
<SongContextMenu />
|
<SongContextMenu />
|
||||||
</SongsDatagrid>
|
</SongDatagrid>
|
||||||
)}
|
)}
|
||||||
</List>
|
</List>
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user