|
@@ -0,0 +1,98 @@
|
|
|
|
+<template>
|
|
|
|
+ <div class="musare-songs-tab">
|
|
|
|
+ <label class="label"> Search for a song on Musare </label>
|
|
|
|
+ <div class="control is-grouped input-with-button">
|
|
|
|
+ <p class="control is-expanded">
|
|
|
|
+ <input
|
|
|
|
+ class="input"
|
|
|
|
+ type="text"
|
|
|
|
+ placeholder="Enter your song query here..."
|
|
|
|
+ v-model="musareSearch.query"
|
|
|
|
+ @keyup.enter="searchForMusareSongs(1)"
|
|
|
|
+ />
|
|
|
|
+ </p>
|
|
|
|
+ <p class="control">
|
|
|
|
+ <a class="button is-info" @click="searchForMusareSongs(1)"
|
|
|
|
+ ><i class="material-icons icon-with-button">search</i
|
|
|
|
+ >Search</a
|
|
|
|
+ >
|
|
|
|
+ </p>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-if="musareSearch.results.length > 0">
|
|
|
|
+ <song-item
|
|
|
|
+ v-for="song in musareSearch.results"
|
|
|
|
+ :key="song._id"
|
|
|
|
+ :song="song"
|
|
|
|
+ :disabled-actions="['addToPlaylist', 'edit']"
|
|
|
|
+ />
|
|
|
|
+ <button
|
|
|
|
+ v-if="resultsLeftCount > 0"
|
|
|
|
+ class="button is-primary load-more-button"
|
|
|
|
+ @click="searchForMusareSongs(musareSearch.page + 1)"
|
|
|
|
+ >
|
|
|
|
+ Load {{ nextPageResultsCount }} more results
|
|
|
|
+ </button>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+import { mapState } from "vuex";
|
|
|
|
+
|
|
|
|
+import SearchMusare from "@/mixins/SearchMusare.vue";
|
|
|
|
+
|
|
|
|
+import SongItem from "@/components/SongItem.vue";
|
|
|
|
+
|
|
|
|
+export default {
|
|
|
|
+ components: {
|
|
|
|
+ SongItem
|
|
|
|
+ },
|
|
|
|
+ mixins: [SearchMusare],
|
|
|
|
+ data() {
|
|
|
|
+ return {};
|
|
|
|
+ },
|
|
|
|
+ computed: {
|
|
|
|
+ ...mapState("modals/editSong", {
|
|
|
|
+ song: state => state.song
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ mounted() {
|
|
|
|
+ this.musareSearch.query = this.song.title;
|
|
|
|
+ this.searchForMusareSongs(1);
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style lang="scss" scoped>
|
|
|
|
+.musare-songs-tab {
|
|
|
|
+ height: calc(100% - 32px);
|
|
|
|
+
|
|
|
|
+ #song-query-results {
|
|
|
|
+ height: calc(100% - 74px);
|
|
|
|
+ overflow: auto;
|
|
|
|
+
|
|
|
|
+ .search-query-item {
|
|
|
|
+ /deep/ .thumbnail-and-info {
|
|
|
|
+ width: calc(100% - 57px);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .icon-selected {
|
|
|
|
+ color: var(--green) !important;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .icon-not-selected {
|
|
|
|
+ color: var(--grey) !important;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .search-query-item:not(:last-of-type) {
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .load-more-button {
|
|
|
|
+ width: 100%;
|
|
|
|
+ margin-top: 10px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+</style>
|