Drag and drop ready to go; Context menu not perfect, but better than current

This commit is contained in:
James Barnsley
2022-02-01 21:12:38 +13:00
parent e787a339f2
commit 73e2bb2cc3
18 changed files with 188 additions and 233 deletions

View File

@ -24,13 +24,13 @@ const zones = [
action: 'add_to_playlist',
title: i18n('actions.add_to_playlist'),
icon: 'playlist_add',
accept: ['TRACK', 'ALBUM', 'ARTIST'],
accept: ['TRACK'],
},
{
action: 'create_playlist_and_add',
title: i18n('modal.edit_playlist.create_playlist'),
icon: 'playlist_add',
accept: ['TRACK', 'ALBUM', 'ARTIST'],
accept: ['TRACK'],
},
];
@ -39,10 +39,8 @@ const Dropzones = () => {
isDragging: monitor.isDragging(),
}));
if (!isDragging) return null;
return (
<div className="dropzones">
<div className={`dropzones ${isDragging ? 'dropzones--dragging' : ''}`}>
{zones.map((zone) => <Dropzone key={zone.action} {...zone} />)}
</div>
);
@ -58,12 +56,13 @@ const Dropzone = ({
const history = useHistory();
const [{ handlerId, isOver, canDrop }, drop] = useDrop({
accept,
canDrop: () => true,
collect: (monitor) => ({
handlerId: monitor.getHandlerId(),
isOver: monitor.isOver(),
canDrop: monitor.canDrop(),
}),
collect: (monitor) => {
return {
handlerId: monitor.getHandlerId(),
isOver: monitor.isOver(),
canDrop: monitor.canDrop(),
};
},
drop: ({ item, items, context }) => {
const uris = item ? [item.uri] : items.map(({ item: { uri } }) => uri);
switch (action) {