koel/resources/assets/js/mixins/song-menu-methods.js

75 lines
1.5 KiB
JavaScript
Raw Normal View History

2016-03-05 09:01:12 +00:00
import $ from 'jquery';
2016-06-25 10:15:57 +00:00
import { queueStore, playlistStore, favoriteStore } from '../stores';
2016-03-05 09:01:12 +00:00
/**
* Includes the methods triggerable on a song (context) menu.
* Each component including this mixin must have a `songs` array as either data, prop, or computed.
* Note that for some components, some of the methods here may not be applicable, or overridden,
* for example close() and open().
*/
export default {
2016-06-25 16:05:24 +00:00
data() {
return {
shown: false,
top: 0,
left: 0,
};
},
2016-03-05 09:01:12 +00:00
2016-06-25 16:05:24 +00:00
methods: {
open() {},
2016-03-05 09:01:12 +00:00
2016-06-25 16:05:24 +00:00
/**
* Close all submenus.
*/
close() {
$(this.$el).find('.submenu').hide();
2016-03-05 09:01:12 +00:00
2016-06-25 16:05:24 +00:00
this.shown = false;
},
2016-03-05 09:01:12 +00:00
2016-06-25 16:05:24 +00:00
/**
* Queue select songs after the current song.
*/
queueSongsAfterCurrent() {
queueStore.queueAfterCurrent(this.songs);
this.close();
},
2016-04-07 10:49:08 +00:00
2016-06-25 16:05:24 +00:00
/**
* Queue selected songs to bottom of queue.
*/
queueSongsToBottom() {
queueStore.queue(this.songs);
this.close();
},
2016-03-05 09:01:12 +00:00
2016-06-25 16:05:24 +00:00
/**
* Queue selected songs to top of queue.
*/
queueSongsToTop() {
queueStore.queue(this.songs, false, true);
this.close();
},
2016-03-05 09:01:12 +00:00
2016-06-25 16:05:24 +00:00
/**
* Add the selected songs into Favorites.
*/
addSongsToFavorite() {
favoriteStore.like(this.songs);
this.close();
},
2016-03-05 09:01:12 +00:00
2016-06-25 16:05:24 +00:00
/**
* Add the selected songs into the chosen playlist.
*
* @param {Object} playlist The playlist.
*/
addSongsToExistingPlaylist(playlist) {
playlistStore.addSongs(playlist, this.songs);
this.close();
2016-03-05 09:01:12 +00:00
},
2016-06-25 16:05:24 +00:00
},
2016-03-05 09:01:12 +00:00
};