Add songs to playlists with drag and drop

This commit is contained in:
Deluan
2021-10-01 10:37:05 -04:00
parent 2ab4647420
commit 6c3e45de41
14 changed files with 392 additions and 94 deletions
+28 -3
View File
@@ -1,8 +1,15 @@
import React, { useMemo } from 'react'
import { Datagrid, NumberField, TextField } from 'react-admin'
import {
Datagrid,
DatagridBody,
DatagridRow,
NumberField,
TextField,
} from 'react-admin'
import { useMediaQuery } from '@material-ui/core'
import FavoriteBorderIcon from '@material-ui/icons/FavoriteBorder'
import { makeStyles } from '@material-ui/core/styles'
import { useDrag } from 'react-dnd'
import {
ArtistLinkField,
DurationField,
@@ -41,6 +48,24 @@ const useStyles = makeStyles({
},
})
const AlbumDatagridRow = (props) => {
const { record } = props
const [, dragAlbumRef] = useDrag(() => ({
type: 'album',
item: { albumIds: [record.id] },
options: { dropEffect: 'copy' },
}))
return <DatagridRow ref={dragAlbumRef} {...props} />
}
const AlbumDatagridBody = (props) => (
<DatagridBody {...props} row={<AlbumDatagridRow />} />
)
const AlbumDatagrid = (props) => (
<Datagrid {...props} body={<AlbumDatagridBody />} />
)
const AlbumTableView = ({
hasShow,
hasEdit,
@@ -112,7 +137,7 @@ const AlbumTableView = ({
{...rest}
/>
) : (
<Datagrid rowClick={'show'} classes={{ row: classes.row }} {...rest}>
<AlbumDatagrid rowClick={'show'} classes={{ row: classes.row }} {...rest}>
<TextField source="name" />
{columns}
<AlbumContextMenu
@@ -130,7 +155,7 @@ const AlbumTableView = ({
)
}
/>
</Datagrid>
</AlbumDatagrid>
)
}